免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1618 | 回复: 3
打印 上一主题 下一主题

[内核入门] 问个device,driver和module的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-24 10:50 |只看该作者 |倒序浏览
看到有的模块没有注册driver,只注册了一个device
有的模块既注册了device,又注册的driver,
我想问的问题是,driver在linux驱动模块中主要起一个什么作用呢,driver和module之间对应关系式什么呢

论坛徽章:
0
2 [报告]
发表于 2012-10-24 23:49 |只看该作者
可以这么简单的理解

device 对应实体硬件的抽象
driver 是软件

硬件可以存在, 它是否工作, 不一定. 所以, 只注册了device, 就等于硬件<可以是虚拟的>存在.
软件可以安装, 是否运行, 也不一定. 所以, 只注册了driver, 就等于软件安装了.

硬件<device> 要工作, 得需要driver<软件>控制它如何工作. 就这么简单.

module 是 linux 支持的一个模块功能. driver 可以被编译为模块, 在内核启动后加载. 也可以编译进内核, 在内核启动时就运行.

论坛徽章:
0
3 [报告]
发表于 2012-10-25 09:11 |只看该作者
    谢谢你的回复

貌似device可以独立工作是吧,比如chardev。

论坛徽章:
1
水瓶座
日期:2013-09-28 21:40:25
4 [报告]
发表于 2012-10-25 22:33 |只看该作者
这个问题应该涉及到Linux内核的设备模型,简而言之:
Linux系统里上有很多Bus(PCI、USB、Platform),Bus上可以注册不同类型的Device和Driver,Device和Driver通过Bus的Match方法来匹配,如果Match上了就用Driver来驱动匹配的Device。一个Device对应个Driver,而一个Driver可以驱动多个Device(例如一台可以有多个同一型号的网卡,但是只需要同一个Driver来驱动)。

Linux把设备驱动上升到模型的高度的好处应该很多,包括减少代码冗余、提供公共的设备功能等等。

关于Linux设备驱动模型,LDD/PLA/USLK里面应该都有相应的章节介绍。

欢迎纠正和补充!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP