问一个设备驱动模型的问题

发布于 2022-10-15 09:09:47 字数 206 浏览 40 评论 0

2.6的设备模型里是谁来注册device的?对应驱动代码里?那样的话把device和driver分开就没意义了吧。像platform_device那静态分配,bus的match方法只是走走过场而已,感觉像是被强行嵌入到设备驱动模型里。device与driver可以分开的话,假设driver先注册了,谁来注册device呢?比如USB或者PCI总线,每当一个新设备出现了,其对应的device结构体是由谁来生成?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

没︽人懂的悲伤 2022-10-22 09:09:47

大概是因为有时候一个驱动会应用到很多设备上吧。我这边的代码是,设备在板子BSP的代码上注册,驱动在响应的实现里注册。

掀纱窥君容 2022-10-22 09:09:47

那就是静态注册啊。如果内核编译好了后,总线上又增加了同样的设备,系统里是确实有相应驱动,但是device的生成与注册、设备和驱动的匹配与绑定,这些过程是由什么触发的呢?

苦行僧 2022-10-22 09:09:47

这些我也一直想了解,没看到什么资料介绍这些的。。

画▽骨i 2022-10-22 09:09:47

比如,一个USB设备,系统中存在对应驱动,当设备插入系统中,硬件上可能有某种方法检测到它的存在。内核的USB层依照USB协议可以获得设备的信息,总线驱动再依据这些信息生成对应的device结构体,将其注册到系统中。然后标准设备驱动模型就照那一套流程来绑定设备与驱动。PCI兴许也是这样。两种总线我都不了解,不知道是否如此。

但是上述情况出现在I2C这样的总线上就没办法了。就算是有相应的设备驱动,由于I2C总线没有办法获取设备的信息,几乎不能向标准设备驱动模型提供什么线索,无法生成device结构体并注册,也就没有查找对应驱动这一环节。所以I2C的设备信息只能静态地声明,新增一个设备,就得通过某种方式手工向内核提供其硬件信息。但I2C里有个通过地址探测设备的环节,又有点那种自动检测的味道。或者应该说,如果地址是唯一必要的信息,那么I2C设备就跟USB设备类似,由总线层负责创建device结构体并注册;如果驱动需要其它信息才能操纵设备,那就只能通过模块之类的方式人工向内核提供设备信息。

有没有人确认一下呀。。。。。。

笑饮青盏花 2022-10-22 09:09:47

driver 是用来驱动device的, 因此, 要么在kernel的编译时,就准备好device, 或在驱动加载时动态加入.

讽刺将军 2022-10-22 09:09:47

2.6的设备模型里是谁来注册device的?对应驱动代码里?那样的话把device和driver分开就没意义了吧。像platf ...
tempname3 发表于 2011-04-19 16:03

所有的操作都是driver完成,只是driver不同,
所有的driver执行都是由内核编译时将入口放置到一个特定的section中,排序执行

   
设备的发现和注册:基于ACPI描述,由ACPI的driver完成
其他具体设备的驱动在执行时查找本driver支持的设备,使得driver和deivce关联起来

情归归情 2022-10-22 09:09:47

所有的操作都是driver完成,只是driver不同,
所有的driver执行都是由内核编译时将入口放置到一个特 ...
chiwq 发表于 2011-04-22 09:13

如果设备后于驱动出现在系统中,那表设备的device结构体是谁来创造与注册的呢?注册之后才能匹配到驱动吧。

壹場煙雨 2022-10-22 09:09:47

如果设备后于驱动出现在系统中,那表设备的device结构体是谁来创造与注册的呢?注册之后才能匹配到驱动 ...
tempname3 发表于 2011-04-22 09:34

   
两种情况:
1、hotplug:加了设备不重新启动,由hotplug机制负责添加设备、搜索驱动;
2、重启系统:这就简单了,BIOS会发现新的设备,将描述提交给OS,然后OS跟往常一样,。。。。。

苍景流年 2022-10-22 09:09:47

回复 9# chiwq

哦。也就是说,USB设备添加以后,hotplug层负责创建device并注册。PCI设备添加以后,BIOS自检时查到设备,提供设备信息,内核某部分的初始化代码根据这些信息创建device结构体并注册。两种方式都行不通的话,程序员静态地提供设备信息,平台初始化代码里根据这些信息生成并注册device。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文