编写设备驱动程序

兼容设备名称

Solaris 软件基于每个设备中存储的标识信息为 USB 绑定生成有序的兼容设备名称列表。此信息包括设备类、子类、供应商 ID、产品 ID、修订版和协议。有关 USB 类和子类的列表,请参见 http://www.usb.org/home

采用此名称分层结构,可以在没有特定于设备的驱动程序时,绑定到相对较常用的驱动程序。特定于类的驱动程序即是常规驱动程序。以 usbif 开头的设备名称指定单个接口的设备。有关示例,请参见示例 20–1。USBA 2.0 框架定义设备的所有兼容名称。使用 prtconf 命令可显示这些设备名称,如示例 20–2 中所示。

以下示例显示了 USB 鼠标设备的兼容设备名称。此鼠标设备表示完全由单个驱动程序操作的组合节点。USBA 2.0 框架为此设备节点指定了示例中所示的名称(按所示顺序)。


示例 20–1 USB 鼠标的兼容设备名称

  1. 'usb430,100.102'      Vendor 430, product 100, revision 102
  2. 'usb430,100'          Vendor 430, product 100
  3. 'usbif430,class3.1.2' Vendor 430, class 3, subclass 1, protocol 2
  4. 'usbif430,class3.1'   Vendor 430, class 3, subclass 1
  5. 'usbif430,class3'     Vendor 430, class 3
  6. 'usbif,class3.1.2'    Class 3, subclass 1, protocol 2
  7. 'usbif,class3.1'      Class 3, subclass 1
  8. 'usbif,class3'        Class 3

请注意,上面示例中的名称按从最具体到最常规的顺序进行排列。第 1 项仅绑定到特定供应商的特定产品的特定修订版。第 3、4 和 5 项用于由供应商 430 生产的类 3 设备。第 6、7 和 8 项用于任何供应商生产的类 3 设备。绑定过程将按从上到下的顺序查找名称匹配项。要进行绑定,必须将驱动程序添加到其别名与上述其中一个名称匹配的系统。要获取在添加驱动程序时要绑定到的兼容设备名称的列表,请在 prtconf -vp 命令的输出中检查设备的 compatible 属性。

以下示例显示了键盘和鼠标的兼容属性列表。使用 prtconf -D 命令可显示绑定的驱动程序。


示例 20–2 列显配置命令显示的兼容设备名称


# prtconf -vD | grep compatible
            compatible: 'usb430,5.200' + 'usb430,5' + 'usbif430,class3.1.1'
+ 'usbif430,class3.1' + 'usbif430,class3' + 'usbif,class3.1.1' +
'usbif,class3.1' + 'usbif,class3'
            compatible: 'usb2222,2071.200' + 'usb2222,2071' +
'usbif2222,class3.1.2' + 'usbif2222,class3.1' + 'usbif2222,class3' +
'usbif,class3.1.2' + 'usbif,class3.1' + 'usbif,class3'

使用最具体的名称可以更准确地确定一个设备或一组设备的驱动程序。要绑定为特定产品的特定修订版编写的驱动程序,请尽可能使用最具体的名称匹配项。例如,如果您有由供应商 430 为其产品 100 的修订版 102 编写的 USB 鼠标驱动程序,则可以使用以下命令将该驱动程序添加到系统中:

add_drv -n -i '"usb430,100.102"' specific_mouse_driver

要添加为供应商 430 的任何 USB 鼠标(类 3、子类 1、协议 2)编写的驱动程序,请使用以下命令:

add_drv -n -i '"usbif430,class3.1.2"' more_generic_mouse_driver

如果安装这两个驱动程序并连接兼容设备,则系统会将正确的驱动程序绑定到所连接的设备。例如,如果安装这两个驱动程序,并连接供应商 430、型号 100、修订版 102 的设备,则此设备将绑定到 specific_mouse_driver。如果连接供应商 430、型号 98 的设备,则此设备将绑定到 more_generic_mouse_driver 。如果连接其他供应商的鼠标,则此设备也将绑定到 more_generic_mouse_driver。如果有多个驱动程序可供特定设备使用,则驱动程序绑定框架将选择与兼容名称列表中第一个兼容名称匹配的驱动程序。