linux下总线、设备、驱动程序三的关系
总线:总线是主机和外设之间的连接通道。有些总线比较标准,形成了很多协议,如PCI、USB、1394、IIC等,任何设备都可以选择合适的总线连接到主机,当然,主机也可以是CPU本身,内存也通过总线与主机相连。内存可以使用的总线不是外围总线,所以谈论使用相同类型总线的内存设备的总线是相当模糊的。
在嵌入式开发中,网卡通过内存总线直接连接到CPU,在编写网卡驱动程序时,很难定义总线。
司机:
驱动程序是在CPU运行时提供操作的软件接口,所有设备必须有一个匹配的驱动程序才能正常工作,一个驱动程序可以驱动许多类似的或完全不同的设备。
装置:
设备是连接到总线的物理实体,设备是功能性的,具有相同功能的设备被划分为一个类(类),例如音频设备(和所有相关的声音)、输入设备(鼠标、键盘、游戏杆等)。
从宏观上看,任何设备都必须与主机连接才能发挥作用,离开计算机的鼠标不再是鼠标,当提到连接时,总线总线是不可避免的,任何正常运行的设备都必须有软件支持,所有设备都必须有驱动程序,设备的目的是完成功能。根据函数的分类,该设备必然属于一个类。
1。三个的定义是包含在。
2中的两个链表如何处理。总线形式:
这就要求每次出现设备时,它都会向总线或注册报告。每次出现一个驱动程序,它也会被报告给总线或注册,例如,当系统初始化时,它将扫描所连接的设备,并为每个设备设置一个结构变量的设备。每次安装一个驱动程序,我们需要准备device_driver struct结构的变量,这些变量被添加到相应的链表,设备插入设备链表,和司机插入驱动链表。这样,每一个设备和驱动程序可以通过总线发现。但是,如果设备没有相应的驱动器在计算机中,设备将无法工作。反过来,如果只有司机没有设备,驱动器不发挥任何作用。
3上的两个链表。总线已经存在,列表中的设备和驱动程序是如何连接的
每一个使用该设备的计算机在启动前都已经插上电源,它应该放在一个位置上,然后启动计算机,然后开始操作系统初始化,总线开始扫描设备,每找到一个设备,应用一个结构设备的结构,并将总线挂在总线设备列表中;
然后每个驱动程序开始初始化、注册结构device_driver结构开始,然后到总线的设备列表中找到(导线),寻找每一个不绑定的驱动装置,即结构装置结构device_driver指针仍然是空的,然后它会去观察设备的特点,看他是否支持设备,如果是,然后调用一个称为device_bind_driver.in言之功能、结构device_driver驱动设备结构指向这个驱动程序,和结构device_driver驱动增加了设备结构其结构链表,总线,设备,和司机之间的三或22,连接。
4。热插拔:
装置可插入或拔出电脑后启动计算机。所以很难说是否有设备或驱动程序第一。因为它是可能的。设备可以发生在任何时间,和司机可以随时加载,所以有情况下,当一个设备结构出生,它会去公交司机名单,找到自己的另一半,另一方面,当一个结构device_driver诞生了,它是寻找它的设备总线设备列表。如果你找到合适的人,然后,与以前的情况,需要结合的device_bind_driver。