免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3075 | 回复: 10

设备与驱动联系? [复制链接]

论坛徽章:
0
发表于 2010-04-07 12:52 |显示全部楼层
设备如何与该驱动相关联,以及如何调用到驱动程序中的probe函数?我的理解是在系统启动时候会检测系统上的设备,并为这些设备创建device,然而这些device与driver又是如何建立的联系呢?

论坛徽章:
0
发表于 2010-04-07 13:47 |显示全部楼层
LDD3中的 LINUX设备模型 一章有对PCI核心,驱动程序核心,以及单独的PCI驱动程序之间如何交互进行了介绍,我简单看过一点,应该是你问的这方面的内容,感觉还是蛮复杂的.

论坛徽章:
0
发表于 2010-04-07 14:17 |显示全部楼层
谢谢楼上提醒,找本书来看了下, 是通过pci_bus_match来匹配,匹配成功就将device中的driver指针指向这个驱动程序,然后调用这个driver->probe。X86下有PCI总线这种是这样,那像ARM体系下,它的使用的总线是AMBA。那下面的匹配是不是也是类似?

论坛徽章:
0
发表于 2010-04-07 16:46 |显示全部楼层
回复 3# xs3c


    AMBA是在SoC上连接不同ip的总线,和PCI这种PC架构上支持PnP的外设总线不是一个level的。AMBA总线应该是对软件非透明的

论坛徽章:
0
发表于 2010-04-07 16:50 |显示全部楼层
回复 3# xs3c


    之所以要有“probe”就是硬件做好后,各个外设的地址并不知道,需要有一个由软件轮询的过程。对于外设地址写在spec里的SoC来说,根本都不需要probe了。所有地址不都是硬编码的么

论坛徽章:
0
发表于 2010-04-07 17:21 |显示全部楼层
回复 5# snail_314


    之所以要有“probe”就是硬件做好后,各个外设的地址并不知道,需要有一个由软件轮询的过程。对于外设地址写在spec里的SoC来说,根本都不需要probe了。所有地址不都是硬编码的么
我是这样理解的那么在X86架构下PCI里面BR寄存器基地址不是由BIOS来分配地址。probe过程就是读取这些值(i/o内存),然后在ioremap使得驱动可以访问这些地址? spec是什么?

论坛徽章:
0
发表于 2010-04-07 17:51 |显示全部楼层
回复 6# xs3c


    AMBA是芯片内部(soc,片上系统)连接不同IP(graphics ip, eth ip, audio ip)的总线,比如一块ARM片子,这个芯片里面已经包含了audio, eth, wifi的模块了,那么这块芯片就有个spec对吧。其实就是把CPU和北桥/南桥的功能放在了一个芯片里面。

论坛徽章:
0
发表于 2010-04-07 19:45 |显示全部楼层
设备如何与该驱动相关联,以及如何调用到驱动程序中的probe函数?我的理解是在系统启动时候会检测系统上的设 ...
xs3c 发表于 2010-04-07 12:52



    这就需要看您具体是什么设备了。硬编址的设备,驱动程序直接操作相应地址即可,例如早期的ISA设备都是这样的,好像I2C设备也是这样的。
   可以动态编址的设备,像PCI,BIOS执行时就编址了,内核启动中再做检查,这时驱动代码就得调用probe去匹配到自己可以驱动的设备,匹配到后根据地址操作。
   还有一类伪设备,直接操作了,类似于硬编址了。

论坛徽章:
0
发表于 2010-04-07 19:48 |显示全部楼层
回复 1# xs3c


    补充,device本身就是driver代码的一个实例啦,如果把driver看成类,device就是类的实例。

论坛徽章:
0
发表于 2010-04-08 10:39 |显示全部楼层
回复 7# snail_314


    是不是可以这样理解,在我们PC机上无法预测会用什么设备,所以出现了PCI这种与CPU体系结构无关的总线。设备的地址即I/O地址可以由软件来配置。而在嵌入式系统上如由于用的设备是确定的,所以很少会去用PCI,当然也会有支持PCI的。即AMBA就是上的每个设备的地址都是固定的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP