版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第14课 总线设备驱动模型背景知识今天要讲的东西让我十分惶恐,讲得不好还请原谅。总线设备驱动模型最初只是为了让电源管理变得更加容易,但是随着技术的发展不仅让电源管理变得容易而且让设备管理任务变得更加集中。你也可以说是无心插柳柳成荫吧,就像当年UNIX之父为了让UNIX系统具有更好的移植性而把整个系统(最初是用汇编写的)重新用一种新的语言改写,这种语言就是你我现在正在使用的-C语言。既是UNIX之父,又是C语言之父,死的惊天动地,他老人家走的时候却没多少人知道,我等只能长叹一声。哎,扯远了。总线设备驱动模型是驱动的精髓,深入理解了这个模型的涵义你就会感叹写这部分内核代码的人有多牛了。:百问网科技
2、淘宝地址:其实韦老师在里面已经把总线设备驱动的概念讲的很清楚了,只是不同的总线设备驱动实现方式不一样,我在这里只是稍微提几个重要。比如,从分类的角度来说所有这些设备按总线方式可以分为USB总线设备、PCI总线设备等等。每一类设备都有自己的总线,pci_bus_type、scsi_bus_type、 usb_bus_type等等。这些不同类的设备相差甚远,那么它们的match方式也就不一样了。记得韦老师在讲输入子系统的时候是通过比较彼此的名字来match的,而usb设备可就不是通过名字来match了,其他不同类的设备也会有不同的match方式。:百问网科技淘宝地址:写面的话这个PPT参考了很多L
3、inux那些事儿中的内容,在此书该书作者,该。非常喜欢该书的风格,有时间有精力的同学可以看一看。不当,请联系Q125707942。:百问网科技淘宝地址:几个重要bus、device、driver三大数据结构;bus、device、driver三者的关系;总线设备驱动模型带来的好处。:百问网科技淘宝地址:bus:struct bus_typedevice:struct devicedriver:struct device_driver注:这里没有贴出三个结构体的代码,请参考内核源码:百问网科技淘宝地址:只需要关注:struct bus_type 中:struct kset drivers 和st
4、ruct kset devi;struct device 中:struct bus_type * bus 和struct device_driver *driver;struct device_driver中:struct bus_type *bus和struct klist klist_devi。:百问网科技淘宝地址:bus_type 中的那两个成员分别表示这个总线的两条链表:设备链表、驱动链表。通过两个链表可以分别找到该总线下所有的设备和驱动。device 中的那两个成员分别表示该设备属于哪个总线以及这个设备的驱动是什么。一个设备绑定一个驱动。device 中的那两个成员分别表示该驱动属于
5、哪个总线以及这个驱动支持哪些设备。驱动支持的这些设备被加入到驱动自己的链表中。:百问网科技淘宝地址:总线中的两条链表如何形成?系统初始化的时候,会扫描连接了哪些设备,并为每一个设备建立起一个struct device 的变量,每一次有一个驱动程序,就要准备一个struct device_driver 结构的变量。把这些变量统统加入相应的链表,devicedevi链表,driverdrivers 链表。这样通过总线就能找到每一个设备,每一个驱动。的同学可以去研究一下subsys_initcall关于系统初始化有这个宏的来龙去脉,非常有意思,可以解开不少疑惑。:百问网科技淘宝地址:当设备和驱动分别
6、向内核以后,设备出现在总线的设备链表中,驱动出现在总线的驱动链表中。设备和驱动如果只是单独出现是没有任何意义的,也就是说如果只有设备没有相应的驱动,这个设备对来说没有意义;如果只有驱动没有设备,这个驱动也起不了任何作用。那么驱动和设备的关系又是怎么样的呢,驱动和设备怎么产生联系呢?在热插拔这个名词出现之前,是先有设备后有驱动的。每一个设备在系统上电启动之前就得插在它应该在的位置,然后才能上电启动系统。然后系统开始初始化,总线开始扫描设备,每找到一个设备,就为其申请一个struct device 结构,并且挂入总线中的devi链表中来。:百问网科技淘宝地址:然后每一个驱动程序开始初始化,开始de
7、vice_driver结构,然后它去总线的devi其struct链表中去寻找(遍历),去寻找每一个还没有绑定driver 的设备,即struct device 中的struct device_driver 指针仍为空的设备,然后它会去观察 这种设备的特征, 看是否是他所支持的设备, 如果是, 那么 调用一个叫做device_bind_driver 的函数,然后设备就有了驱 动。于是设备把自己的device_driver成员指向那个驱动,而驱 动则把这个设备加入到自己的链表。所谓你中有我,我中有你。在热插拔出现之后,就无所谓谁先谁后了。因为设备可以在任何时刻出现,驱动可以在任何时刻被加载。一旦设
8、备出现, 这个设备就会去总线的驱动列表中寻找属于自己的驱动;一旦 驱动被加载,它就会去总线的设备列表中寻找被它支持的设备。:百问网科技淘宝地址:无法想象没有热插拔的日子广大男同胞们该怎么活。难道你拿着U盘去同学那儿拷贝(什么自己想象)还得让他把电脑先关掉让你插上U盘再启动?万一你拷的不是你想看的你还得另外拷一部,你同学没被你烦死你自己都想把电脑砸了。哎,又扯远了。不同的设备在找到跟自己匹配的驱动这个过程还不一样。要搞清楚具体的一个设备走的这个过程还得回到内核源码 中。切记不可急于深入,否则钻进去就出不来了。:百问网科技淘宝地址:总线设备驱动模型的意义不是一两句话就能够概括的。首先,总线设备模型是电源管理的基础,这里牵涉到suspend的一些概念不做深入;其次,总线设备模型将硬件与离开来,因此硬件的差异性对上层来说是看不到的,分需要做的就是告诉内核设备跟别人的不同。很多具体的模型甚至提供了完整的读写等一些与设备交互的函数。这些工作的完成大大的减少了的工作量,驱动要完成的工作越来越少,的人可以专注于应用,这也就意味着开发周期的缩短,对于厂商来说周期的缩短意味着产品的更快上市也就意味着迅速抢占市场。因此用好内核源码。要充分利:百问网科技淘宝地址:后记我所讲的内容绝大部分来
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某纺织厂消防安全准则
- 2026年江西农发集团所属企业社会招聘1人笔试模拟试题及答案解析
- 厦门大学嘉庚学院2026-2027学年人才招聘笔试参考题库及答案解析
- 2026年河南省平顶山市公务员人员招聘笔试参考试题与答案详解
- 2026年昆明市西山区招聘社区专职工作人员(33人)考试模拟试题及答案解析
- 2026年哈尔滨市道外区公务员人员招聘笔试参考题库与答案详解
- 2026广州市从化区卫生健康局所属事业单位第二次公开招聘事业编制工作人员13人考试备考试题及答案解析
- 2026重庆市万州区溪口乡养老协管员非全日制公益性岗位招聘4人笔试参考题库及答案解析
- 2026年鞍山市立山区公务员人员招聘考试备考试题与答案详解
- 2026年浙江省衢州市公务员人员招聘考试试题与答案详解
- 2026中国邮政联合校园招聘笔试参考题库(含答案解析)
- (一模)嘉兴市2026-2027学年第一学期高三教学质量检测语文试卷(含答案)
- 2026中国洗衣干衣行业市场现状需求分析投资布局发展策略研究文献
- 2027年湖北交通投资集团有限公司秋季校园招聘131人笔试备考题库及答案解析
- 2026山东青岛水务集团有限公司招聘笔试历年参考题库附带答案详解
- T∕CCEAS008-2026 建设工程造价咨询成果文件质量标准
- 凉山2025年四川凉山州雷波重点国有林保护局招聘27人笔试历年参考题库附带答案详解
- 药品追溯系统培训课件
- 山东省菏泽市2025-2026学年高二上学期期中联考试题 物理(A)含答案
- 防触电安全课件幼儿园
- 天津市和平区汇文中学2026届九年级化学第一学期期中学业质量监测试题含解析
评论
0/150
提交评论