首页 > 编程知识 正文

qualifier和winner,设备描述符

时间:2023-05-03 16:43:05 阅读:150992 作者:3053

USB内存设备限定描述符(Device Qualifier Descriptor )设备限定描述符(Device Qualifier Descriptor )描述可快速操作的设备在其他速度下发生的变化。 例如,如果设备当前正在全速运行,设备限定描述符将返回有关其如何快速运行的信息。

如果设备同时支持全速和高速状态,则必须包含设备限定描述符“Device Qualifier Descriptor”。 设备限定描述符(Device Qualifier Descriptor )包含这些字段以当前未使用的速度获取的值。

设备限定描述符(Device Qualifier Descriptor )不包含供应商、产品、设备、制造商、产品和序列号字段。 这是因为在所有支持的速度下,设备信息都是恒定的。 此描述符的版本号至少为2.0(0200h )。

对于只能进行全速操作的设备(设备描述符的版本号为0200H ),在接收到请求设备描述符的Get Descriptor请求时,必须响应STALL请求错误。

只有在成功获取设备限定描述符(Device Qualifier Descriptor )之后,主机才能请求其他速度配置(other_speed_configuration )描述符。

dvicequalifierdescriptoroffsetfieldsizevaluedescription0blength 1以number字节为单位的描述符大小1bDescriptorType1Constant设备限定描述符类型2 BCD USB2BCD lass类代码5bDeviceSubClass1SubClass子类代码6bDeviceProtocol1Protocol协议代码7bMaxPacketSize01Number其他速度端点0最大分组大小8 bnumbex

bLength设备限定描述符类型,device_Qualifier(0x06 )。

bDescriptorType是设备适用的USB标准版本号,该值采用BCD (二进制编码的十进制)格式。 将此数字转换为十进制数字后,前一个字节(8位)表示整数部分,后四位表示10位,最后四位表示100分位数。 USB 2.0为0x0200; USB 2.1为0x0210。

bcdUSB类代码。 此字段指定在设备级别定义功能的设备所属的类。

bDeviceClass子类代码。 此字段规定类的子类

bDeviceSubClass协议代码。 此字段指定选定类和子类的协议。

bDeviceProtocol是其他速度(Other-speed )下端点0的最大分组大小。

bMaxPacketSize0为其他速度(Other-speed )配置的数量。

bNumConfigurations被保留以供以后使用,并且必须为0。

获取设备限定描述符的主机通过发送Get Descriptor请求来获取设备限定描述符Device Qualifier Descriptor。

getdescriptorvaluebmrequesttype0x 80 bmrequesttype.recipient 0b 00000 (device ) bmrequesttype.typ e0b 00 (标准) ) ) bmrequesttype.direction0B1 (device-to-host ) brequest0x06 ) getdescriptor ) wvalue0x0600 ) configuration#0) windex0x0x0x

设备限定描述符Device Qualifier Descriptor如下所示:

在USB分析器中抓住包时,您会看到它将获得设备限定描述符Device Qualifier Descriptor。

获取设备限定描述符的步骤如下:

让我们看一下详细的过程:

接下来,让我们详细了解整个捕获进程中各个字段的含义。

第一个设置包流程:

设置数据:

输入包进程:

OUT打包流程:


完成整个设备限定描述符Device Qualifier Descriptor的获取。

不支持设备限定描述符的情况

如果设备不支持获取设备限定描述符,需要回复STALL来响应不支持的请求。
下面举例说明下不支持的情况如何正确响应:
如果不支持的话,使用USB分析仪抓包显示如下:

再展开看到详细的过程:

过程就只有IN包回复不同,看下IN包的详细回复过程,可以与上面的正常过程进行对比:

对比如下:

描述符示例

这里举例一个带有该描述符的示例设备。

Device Descriptor OffsetFieldSizeValueDescription0bLength10x121bDescriptorType10x01DEVICE2bcdUSB20x02002.004bDeviceClass10x005bDeviceSubClass10x006bDeviceProtocol10x007bMaxPacketSize010x408idVendor20x046d10idProduct20xc31c12bcdDevice20x00010.0114iManufacturer10x0115iProduct10x0216iSerialNumber10x0317bNumConfigurations10x01 Device Qualifier Descriptor OffsetFieldSizeValueDescription0bLength10x0a1bDescriptorType10x06DEVICE_QUALIFIER2bcdUSB20x02002.004bDeviceClass10x005bDeviceSubClass10x006bDeviceProtocol10x007bMaxPacketSize010x408bNumConfigurations10x019bReserved10x00 Configuration Descriptor OffsetFieldSizeValueDescription0bLength10x091bDescriptorType10x02CONFIGURATION2wTotalLength20x00b14bNumInterfaces10x045bConfigurationValue10x016iConfiguration10x007bmAttributes10xC08bMaxPower10x01 Interface Descriptor OffsetFieldSizeValueDescription0bLength10x091bDescriptorType10x04INTERFACE…………… Endpoint Descriptor OffsetFieldSizeValueDescription0bLength10x071bDescriptorType10x05ENDPOINT……………

省略中间的描述符。

Other_Speed_Configuration Descriptor OffsetFieldSizeValueDescription0bLength10x091bDescriptorType10x07OTHER_SPEED_CONFIGURATION2wTotalLength20x00b14bNumInterfaces10x045bConfigurationValue10x016iConfiguration10x007bmAttributes10xC08bMaxPower10x01 Interface Descriptor OffsetFieldSizeValueDescription0bLength10x091bDescriptorType10x04INTERFACE…………… Endpoint Descriptor OffsetFieldSizeValueDescription0bLength10x071bDescriptorType10x05ENDPOINT……………

后续描述符省略。

附录 USB2.0 Device Qualifier Descriptor OffsetFieldSizeValueDescription0bLength1NumberSize of descriptor1bDescriptorType1ConstantDevice Qualifier Type2bcdUSB2BCDUSB specification version number (e.g.,0200H for V2.00 )4bDeviceClass1ClassClass Code5bDeviceSubClass1SubClassSubClass Code6bDeviceProtocol1ProtocolProtocol Code7bMaxPacketSize01NumberMaximum packet size for other speed8bNumConfigurations1NumberNumber of Other-speed Configurations9bReserved1ZeroReserved for future use, must be zero [参考资料]

Universal Serial Bus Specification Revision 2.0

USB Complete, 5th Edition

USB开发大全

USB2.0与OTG规范及开发指南

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。