【Linux-Platform】

news2025/2/23 17:31:04

目录

  • 1. Linux驱动的分离与分层
    • 1.1 为什么要进行Linux驱动的分离与分层
    • 1.2 Linux驱动的分层
  • 2. 驱动-总线-设备
    • 2.1 总线
    • 2.2 驱动
    • 2.3 设备
  • 3. platform平台设备总线
    • 3.1 platform总线注册
    • 3.2 platform驱动
    • 3.3 platform设备

1. Linux驱动的分离与分层

1.1 为什么要进行Linux驱动的分离与分层

  便于驱动的移植,例如IIC通信协议是不变的,那么如果换一个平台换一个芯片就写一套IIC驱动这显然是不合算的,因为如果工程量大起来的话一改就是整个项目的重构这样驱动的利用率和可重塑性就太差了.示意图如下;

1.2 Linux驱动的分层

  网络有七层,每个层面处理不同的信息,对于Linux系统而言,其也需要分层的,简要说明一下Linux分层归类,input子系统负责管理所有和输入有关的驱动,包括键盘、鼠标、触摸等,最底层的就是设备的原始驱动,负责获取输入设备的原始值,获取到的输入事件上报给input核心层。input核心层会处理各种IO模型,并且提供file_operations操作集合。我们在编写输入设备驱动的时候只需要处理好输入事件的上报即可,至于如何处理上报的输入事件是上层去考虑的事情,我们不用管。因此可以看出来借助分层模型可以极大的简化对驱动的编写,对于驱动的编写非常的友好.

2. 驱动-总线-设备

  根据驱动的分离与分层衍生出了总线-驱动-设备的驱动框架。总线的代码是由内核给出的我们不需要编写,需要我们编写的部分是驱动和设备。当向总线注册的时候,总线会从现有的设备中查找看看哪个设备和此驱动匹配,同理,当向总线注册设备的时候总线也会在现有的驱动中查看与之匹配的驱动.

2.1 总线

 总线的数据类型为:bus-type。向内核注册总线使用

  • bus_register

2.2 驱动

  驱动的数据类型为:device-driver。向内核注册驱动使用:

  • deiver_register

 向总线中注册驱动的时候,会检查当前总线下的所有设备,有没有与此驱动匹配的设备,如果有的话,驱动和设备匹配后驱动里面的probe函数就会执行.

2.3 设备

  当向总线中注册设备的时候,设备数据类型为:struct device
注册函数为:

  • device_register()

3. platform平台设备总线

  根据设备-驱动-总线模型,IIC,SPI,USB这样的实实在在的总线是完全匹配的,但是一些例如定时器、RTC、LCD等无法归结为一类具体的总线,因此Linux内核创造了一个虚拟的总线:platform总线

  1. 方便开发,Linux提出了驱动的分离与分层
  2. 进一步引出了驱动-总线-设备驱动模型,或者框架
  3. 对于SOC内部的RTC,timer等不好归类的具体总线,有一个虚拟的platform总线。

3.1 platform总线注册

 plotform_bus_init->bus_register()
注册的内容就是:
struct bus_type_bus_type={
.name="paltform",
dec_groups=paltform_dev_groups,
.match=paltform_match,
.uevent=paltform_uevent,
.pm=&platform_dev_pm_ops,
}

3.2 platform驱动

  struct platform_driver:

struct platform_driver {
	int (*probe)(struct platform_device *);
	int (*remove)(struct platform_device *);
	void (*shutdown)(struct platform_device *);
	int (*suspend)(struct platform_device *, pm_message_t state);
	int (*resume)(struct platform_device *);
	struct device_driver driver;
	const struct platform_device_id *id_table;
	bool prevent_deferred_probe;
};

其中比较重要的函数是:int (*probe)(struct platform_device *);

3.3 platform设备

 当不使用设备树时要向总线注册paltform设备,当有设备树时就不用再注册设备了,因为启动内核时会自动解析设备树添加对应的设备,因此只需要注册驱动即可,同时当驱动和设备进行成功匹配时就会执行对应的prob函数.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1981131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【人工智能专栏】基于人类反馈对语言模型进行强化学习 (RLHF)

Reinforcement Learning from Human Feedback (RLHF) 技术分解 字面上说,RLHF就是基于人类反馈(Human Feedback)对语言模型进行强化学习(Reinforcement Learning),和一般的fine-tune过程乃至prompt tuning自然也不同。RLHF 是一项涉及多个模型和不同训练阶段的复杂概念…

C++ 基础入门篇

文章目录 命名空间输入与输出缺省参数函数重载引用和const引用inline(内联函数) 命名空间 定义:命名空间需要用到namespace关键字,其后跟着命名空间的名字(自定义),再接着就是一对花括号&#x…

气膜建筑在工业仓储厂房中的应用优势—轻空间

随着工业生产的快速发展,对仓储厂房的需求日益增长。气膜建筑作为一种新型的建筑形式,因其独特的优势在工业仓储领域逐渐受到青睐。以下是气膜建筑在工业仓储厂房中的主要应用优势。 快速建设与灵活布局 气膜建筑的一个显著优势是其建设速度快&#xff0…

免费分享:2021-2100中国多情景逐年干燥度模拟数据(附下载方法)

AI是表征一个地区干湿程度的指标&#xff0c;一般来说&#xff0c;根据AI分类可以概括地把区域分为湿润&#xff08;AI<1&#xff0c;相当于森林&#xff09;、半湿润&#xff08;AI在1-1.5&#xff0c;相当于森林草原&#xff09;、半干旱&#xff08;AI在1.5-4&#xff0c…

听,LLM在“说话“:智慧农场开启农业知识传播新范式

&#xff08; 于景鑫 国家农业信息化工程技术研究中心&#xff09;设施农业是现代农业的旗舰,集成了环境调控、水肥管理、植保防疫等多项先进技术。据统计,目前全国现代设施种植面积达到4000万亩&#xff0c;效率高、产出高、效益高的特点明显。北方地区每亩蔬菜日光温室年均纯…

十大免费录屏软件推荐:轻松录制高清视频教程

现在视频教程已经成为知识分享、教学演示以及内容创作的重要形式&#xff0c;无论是在线教育、游戏直播还是软件操作指导&#xff0c;高清、流畅的录屏软件都是我们不可获取的工具之一。 但目前市面上有很多录屏软件&#xff0c;哪款才是适合我们的呢&#xff1f;今天就给大家…

前端(vue3)和后端(django)的交互

vue3中&#xff1a; <template><div><h2>注册页面</h2><form submit.prevent"submitForm"><label for"username">用户名&#xff1a;</label><input type"text" id"username" v-model…

C++威力强大的助手 --- const

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; C之旅 const是个奇妙且非比寻常的东西&#xff0c;博主从《Effective C》一书中认识到关于const更深层次的理解&#xff0c;写此博客进行巩固。 &#x…

无人机之运输的优势

无人机在进行运输任务时使用的是电力驱动&#xff0c;从而可以减少对环境的污染和碳排放&#xff0c;对于改善大气质量和减少碳足迹具有积极的意义。 无人机运输可以避免人为错误和事故的发生&#xff0c;通过预先设定的飞行路线&#xff0c;进行精确点投放。此外&#xff0c;还…

零基础小白备考PMP需要多长时间?

PMP考试在中国大陆&#xff0c;平均每三个月安排一次考试。报名缴费一般在考试前两个月&#xff0c;报完名后开始进入备考&#xff0c;所以基本上是2-3个月的时间。 PMP考试备考不是越久越好&#xff0c;把备考战线拉得太长 &#xff0c;我们的精力都是有限的&#xff0c;后期…

学习HTTP2中的HPACK算法

文章目录 HPACK动态表中的数据插入点两种基本数据类型 Integer String HPACK 专业术语&#xff1a; Header Field&#xff08;头部字段&#xff09;&#xff1a;指的是一个由name - value组成的键值对。名称和值都被视为不透明的字节序列。Dynamic Table&#xff08;动态表&a…

哪个软件可以识别字幕并生成文本?5款最佳工具分享

你是否曾在深夜&#xff0c;抱着手机或电脑&#xff0c;对着那些充满异国情调却无从下手的外语视频感到束手无策&#xff1f; 那些或激昂、或深情、或幽默的对话&#xff0c;因为语言的隔阂而变得遥不可及&#xff0c;让你的观看体验大打折扣。 别急&#xff0c;今天我来告诉你…

AI绘画进阶 ComfyUI 实战教程:轻松给图片添加文字,附工作流教程使用

大家好&#xff0c;我是设计师阿威 在AI绘画中书写文字一直是个老大难的问题&#xff0c;直到SDXL的出现&#xff0c;文字生成才迎来转机&#xff0c;可以在提示词中指定一些英文字符&#xff0c;不过也是经常出错&#xff0c;生成中文就更加不可求了。 本文介绍一种在图片中…

2018-Comment-网鼎杯复现,二次注入

进入靶场 发现只有一个发帖功能&#xff0c;尝试发帖 提交后要去登录&#xff0c;但这里提示了账号密码&#xff0c;但密码后三位不知&#xff0c;可以尝试暴力破解 bp抓包 假设后三位是数字&#xff0c;设置payload 爆破成功&#xff0c;后三位为666 登录成功 但除了发帖没有…

安泰电压放大器放大的是什么信号

电压放大器是一种广泛应用于电子设备中的放大器&#xff0c;它主要用于放大电压信号。电压信号是指以电压形式传输的信号&#xff0c;可以是来自于传感器、音频设备、无线通信设备等各种电子设备中的信号。 电压放大器的基本原理 电压放大器是一种电子设备&#xff0c;它可以将…

使用idea对spring全家桶的各种项目进行创建

目录 1. 简介2. spring2.1 简介2.2 创建 3. springmvc3.1 介绍3.2 创建 4. springboot4.1 简介4.2 创建&#xff08;仅仅就其中一种&#xff09; 5. 其他&#xff1a;maven6. 参考链接 1. 简介 因为总是分不清spring全家桶&#xff0c;所以就在这里进行一个总结。 2. spring …

Java毕业设计-基于SSM框架的大型商场会员管理系统项目实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

在手机中安装Fiddler CA证书后,完美解决Fiddler无法进行手机HTTPS请求抓包的难题!

Fiddler抓包的通用配置 关与fidder抓取手机包的配置方法就不多说了&#xff0c;网上有很多方式&#xff0c;配置方式如下图&#xff1a; 但是即使成功配置&#xff0c;在抓取手机中https包时也会出错&#xff0c;这个时候&#xff0c;我们就需要在手机中安装Fiddler的 CA证书!…

80.SAP ME - SAP ERP向SAP ME传输物料主数据的方法

目录 SAP ERP与ME传输物料的几种方式 1.自动传输物料到SAP ME 2.手动发送 2.1 BD10 发送物料 2.2 DRFOUT 执行数据复制 2.3 POIM 发送主数据 SAP ERP与ME传输物料的几种方式 1.自动传输物料到SAP ME 这是标准方法&#xff0c;需要全面的配置&#xff0c;当在ERP里修改物…

Powerdesigner连接mysql数据库,逆向工程生成ER图 (保姆级教程:下载->连接->配置)看这一篇就够了

一、下载powerdesigner 下载的教程请看如下链接&#xff0c;我太懒了&#xff0c;直接借鉴&#xff01; 把别大佬的博客搬过来了嘿嘿~我真聪明&#xff01;ㄟ( ▔, ▔ )ㄏ 操作到完成汉化就好&#xff01;&#xff01;第5步不看了&#xff0c;别按那个走&#xff0c;因为新手…