嵌入式Linux设备驱动程序开发指南(原书第2版)
上QQ阅读APP看书,第一时间看更新

第2章 Linux设备与驱动模型

理解Linux设备与驱动模型对Linux设备驱动开发至关重要。Linux内核2.6版本引入的统一设备模型提供了单一机制,来表示设备以及描述设备在系统中的拓扑结构。Linux设备和驱动模型是一种将设备与驱动组织到总线上的统一方式。这样的系统提供了如下优点:

  • 减少代码冗余度。
  • 通过将设备驱动与控制器驱动分离、将硬件描述从驱动中剥离等方式,使代码组织更整洁。
  • 提供了查看系统中所有设备及其状态和功耗的能力。能够查看设备连接到哪个总线并决定为其使用哪个驱动。
  • 能够为系统中的所有设备构造一个完整有效的树状结构,包括所有的总线与连接。
  • 提供了将设备和驱动互相关联的能力。
  • 将设备从具体的拓扑结构中抽象出来,根据类型或者说类(比如输入设备)来划分。

设备模型涉及设备、驱动、总线等术语:

  • 设备:连接到总线上的物理或者虚拟对象。
  • 驱动:负责探测并关联设备的代码实体,也可以执行部分管理功能。
  • 总线:为其他设备提供接入点的设备。

设备模型围绕3个主要的数据结构组织:

1. bus_type数据结构表示某种类型的总线(比如USB、PCI、I2C)。

2. device_driver数据结构表示一个能够处理特定总线上特定设备的驱动程序。

3. device数据结构表示一个连接到总线上的设备。