编写设备驱动程序

将驱动程序绑定到设备

除了构造设备树之外,内核还可确定用于管理设备的驱动程序。

将驱动程序绑定到设备指的是系统选择用于管理特定设备的驱动程序的过程。绑定名称是将驱动程序与设备信息树连接在一起的唯一设备结点名称。对于设备树中的每个设备,系统都会尝试从已安装的驱动程序列表中选择一个驱动程序。

每个设备节点都有关联的 name 属性。可以在系统引导期间通过外部代理(如 PROM )或通过 driver.conf 配置文件指定此属性。无论在哪种情况下,name 属性都表示指定给设备树中的设备的节点名称节点名称是在 /devices 中可见并列在 prtconf(1M) 输出中的名称。

图 2–3 设备节点名称

图中显示了一个简单的设备节点名称示例。

设备节点也可以有关联的 compatible 属性。compatible 属性包含设备的一个或多个可能的驱动程序名称或驱动程序别名的有序列表。

系统使用 compatible 属性和 name 属性来为设备选择驱动程序。如果 compatible 属性存在,则系统会首先尝试将 compatible 属性的内容与系统中的驱动程序匹配。系统将从 compatible 属性列表的第一个驱动程序名称开始,尝试将该驱动程序名称与系统中的已知驱动程序匹配。系统将会处理该列表中的每一项,直到找到匹配项或者到达列表结尾。

如果 name 属性或 compatible 属性的内容与系统中的某个驱动程序匹配,则将该驱动程序绑定到设备节点。如果未找到匹配项,则不会将任何驱动程序绑定到设备节点。

通用设备名称

某些设备将通用设备名称指定为 name 属性的值。通用设备名称用于描述设备的功能,不实际标识设备的特定驱动程序。例如,SCSI 主机总线适配器可能具有通用设备名称 scsi。以太网设备可能具有通用设备名称 ethernet

通过 compatible 属性,系统可以确定具有通用设备名称的设备的备用驱动程序名称,例如,glm 对应于 scsi HBA 设备驱动程序,hme 对应于 ethernet 设备驱动程序。

具有通用设备名称的设备需要提供 compatible 属性。


注 –

有关通用设备名称的完整说明,请参见 IEEE 1275 Open Firmware Boot Standard。


下图显示了具有特定设备名称的设备节点。驱动程序绑定名称 SUNW,ffb 与设备节点名称同名。

图 2–4 特定驱动程序节点绑定

图中显示了使用特定设备名称的设备节点: SUNW, ffb。

下图显示了具有通用设备名称 display 的设备节点。驱动程序绑定名称 SUNW,ffbcompatible 属性驱动程序列表中与系统驱动程序列表中的驱动程序匹配的第一个名称。在这种情况下,display 是帧缓存器的通用设备名称。

图 2–5 通用驱动程序节点绑定

图中显示了使用通用设备名称的设备节点: display。