当前位置:  技术问答>linux和unix

内核自动匹配设备驱动的过程或者方式

    来源: 互联网  发布时间:2017-03-05

    本文导语:     内核是如何匹配到设备驱动的  这里面跟Vendor ID, Device ID, Class ID 有何关联,哪些设备是通过Vendor ID 匹配的哪些是通过Class ID 匹配的。pci_ids.h 这个文件是起什么作用的? | 又是我...

   内核是如何匹配到设备驱动的  这里面跟Vendor ID, Device ID, Class ID 有何关联,哪些设备是通过Vendor ID 匹配的哪些是通过Class ID 匹配的。pci_ids.h 这个文件是起什么作用的?

|
又是我 唉

pci_ids.h 仅仅是一个pci设备的常见vendor 和device 的集合,只是方便把无意义的数字转换成有意义的宏定义,方便驱动代码阅读,除此没有什么大的作用

lz首先需要建立  bus device driver 这三者的模型,就不会迷惑了。
网上很多,自己搜

简单说,设备和驱动挂在总线上。一条总线上每挂上一个驱动或一个设备,都会尝试为这个设备找到对应的驱动,或者为新加入的驱动尝试找到匹配的设备

总线有很多种,不同的总线上,设备和驱动的匹配方式也不同。
对于pci 和 usb 总线来说,设备和驱动的匹配,一般都是靠Vendor ID, Device ID, Class ID 来匹配的。其他总线匹配的方法不一样。

对于usb 和pci总线,device 数据结构里包含这个设备的Vendor ID, Device ID, Class ID,driver里明确指示这个driver支持哪些Vendor ID, Device ID, Class ID,
device和driver的这些ID能匹配就挂载成功了

Vendor ID, Device ID的组合相对Class ID要多很多,相应的,用Class ID来匹配的,一个驱动能支持很多厂家的设备
但是具体使用哪种方式,是硬件设备制造商决定的。比如各家的网卡的寄存器都不一样,所以网卡靠Vendor ID, Device ID 来匹配。 usb 鼠标键盘都遵循HID协议,所以用Class ID 就足够了。



lz可以仔细研究下 /sys/bus/pci 和 /sys/bus/usb ,这两个目录下有device 和 driver ,能够通过这些方便地了解当前内核的驱动匹配状态

|
认真看这个sata控制器的手册 不会凭空出现的
很可能是一个pci多功能设备,即一块pci卡有多个逻辑功能,对应有多个pci配置空间

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux内核中影响tcp三次握手的一些协议配置
  • Fedora Core 2自带的内核升级程序下载下来内核后,要不要再编译一遍内核?
  • TCP协议四次断连过程介绍及Linux内核协议栈中相关设置项
  • 进程内核栈和操作系统内核栈的关系
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • Linux中内核线程不访问内核态地址空间?
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • 2.6内核下编译2.4内核
  • linux内核中的likely宏和unlikely宏介绍及用法
  • 谁能提供kgdb内核补丁内核模块的下载
  • CentOS 6.5 下载地址及如何升级内核(kernel)版本到 3.10.28
  • 编译新内核后怎么进入原来内核
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • 请问linux中如何判断内核是否已经启动。(在内核中写程序)
  • docker使用的技术之Container内核原理介绍
  • 请教:如何安装新内核(rpm包)而不同原来得内核冲突?? 在线等待!!
  • linux为什么要升级内核?升级内核有何作用?
  • 内核升级后,如何在新的内核中加载显卡驱动?
  • 内核源码和结果make过的内核源码有什么区别
  • 不重新编译内核能修改内核函数吗?
  • 如何学好内核?学了内核能应用于哪方面?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3