微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > USB总线驱动中的标识串

USB总线驱动中的标识串

时间:09-12 来源:互联网 点击:

在驱动设备的枚举和加载过程中,设备的标识串起着很重要的作用。设备标识串一般分为硬件标识串、兼容类标识串和设备标识串这几种。这些标识串其实是由上一级的驱动程序(一般是总线驱动)产生的,Windows系统用它来寻找和加载相应的驱动程序。

举一个简单的例子,当你插入一个U盘时,USB总线就会检测到这个U盘设备被插入了,然后,它就会创建这个U盘设备的PDO,同时呢,会给这个PDO产生标识串,就象你在设备管理器中设备属性对话框的详细信息中看到的那样:

设备范例Id:

USBVID_123APID_567B1234567890ABCDEF

硬件Id:

USBVid_123APid567BRev_0001

USBVid_123APid567B

兼容Id:

USBClass_08SubClass_06Pro_50

USBClass_08SubClass_06

USBClass_08

每种设备产生的标识串都是不一样的,特别的,对于USB设备,这些标识串的产生是有一定的规范的。

USB设备分为单功能设备和多功能设备。单功能设备最常见,如U盘、鼠标等,而多功能设备是指设备描述符里具备多个接口描述符的设备,如USB手柄,包含按键和听筒及受话器,按键部分定义的是HID接口,听筒及受话器部分定义的是Audio接口。

多功能设备的枚举比单功能设备要复杂一些,USB总线要先加载usbccgp.sys驱动。然后,这个驱动按每个功能接口继续枚举设备。

硬件标识串

它是由多个子字符串组成的,以来分隔,以结尾。

对于普通的单功能设备来说,一般是2个子字符串,第一个字符串是 USBVID_xxxxPID_xxxxREV_xxxx,每个xxxx都是4位的16进制字符数字,分别表示Vendor ID, Product ID, Revision ID。一般而言,这三项能精确确定某一款具体的设备。但一般情况下,Revision ID不是很重要,在设备驱动安装时可以不指定,所以就有了第二个字符串USBVID_xxxxPID_xxxx。

对于多功能设备来说,一般包含一个子字符串USBVID_xxxxPID_xxxxMI_xx,前面的xxxx分别表示是 Vendor ID和Product ID,后面的xx则是表示接口的数目,与设备的接口描述符的bInterfaceNumber项一致。

兼容标识串

它也是由多个子字符串组成的,以来分隔,以结尾。

对于普通的单功能设备来说,一般是3个子字符串,第一个字符串是 USBCLASS_xxSUBCLASS_xxPROT_xx,每个xx都是2位的16进制字符数字,分别表示Class ID, SubClass ID, Protocol ID。一般而言,这三项能精确确定该设备是属于哪一类设备用的是什么协议。其中Class ID最重要,其它两项则有可能会被忽略,所以就有了第二、第三个子字串:USBCLASS_xxSUBCLASS_xx, USBCLASS_xx。

对于多功能设备来说,一般是4个子字符串,前三个子字符串是差不多 的:USBDEVCLASS_xxSUBCLASS_xxPROT_xx,USB DEVCLASS_xxSUBCLASS_xx,USBDEVCLASS_xx,第四个子字符串则是 USBCOMPOSITE。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top