理解Linux设备与驱动模型对Linux设备驱动开发至关重要。Linux内核2.6版本引入的统一设备模型提供了单一机制,来表示设备以及描述设备在系统中的拓扑结构。Linux设备和驱动模型是一种将设备与驱动组织到总线上的统一方式。这样的系统提供了如下优点:
-
减少代码冗余度。
-
通过将设备驱动与控制器驱动分离、将硬件描述从驱动中剥离等方式,使代码组织更整洁。
-
提供了查看系统中所有设备及其状态和功耗的能力。能够查看设备连接到哪个总线并决定为其使用哪个驱动。
-
能够为系统中的所有设备构造一个完整有效的树状结构,包括所有的总线与连接。
-
提供了将设备和驱动互相关联的能力。
-
将设备从具体的拓扑结构中抽象出来,根据类型或者说类(比如输入设备)来划分。
设备模型涉及设备、驱动、总线等术语:
-
设备
:连接到总线上的物理或者虚拟对象。
-
驱动
:负责探测并关联设备的代码实体,也可以执行部分管理功能。
-
总线
:为其他设备提供接入点的设备。
设备模型围绕3个主要的数据结构组织:
1.
bus_type
数据结构表示某种类型的总线(比如USB、PCI、I2C)。
2.
device_driver
数据结构表示一个能够处理特定总线上特定设备的驱动程序。
3.
device
数据结构表示一个连接到总线上的设备。
KeyIO20rKl3FSbwA7WsebnS1GvzkNehDRtMQb6/IBe5X3SpvxaHNY/bG0p1/WAKn