【USB笔记】二进制设备对象存储描述符BOS Descriptor

您所在的位置:网站首页 什么是USB设备描述符 【USB笔记】二进制设备对象存储描述符BOS Descriptor

【USB笔记】二进制设备对象存储描述符BOS Descriptor

2024-07-15 23:19| 来源: 网络整理| 查看: 265

USB笔记 二进制设备对象存储描述符(BOS Descriptor)

二进制设备对象存储描述符(Binary Device Object Store Descriptor),简写成BOS描述符(BOS Descriptor)。

BOS描述符(BOS Descriptor)是用于存储特定某项技术或设备功能信息的描述符,和设备功能描述符(Device Capability Descriptor)一起由Wireless Universal Serial Bus Specification Revision 1.0规范引入,之后在USB 2.0 ECN: Link Power Management (LPM) 、USB3.x Specification、Microsoft OS 2.0 Descriptors Specification 等协议规范都加入了定义。

BOS描述符(BOS Descriptor)定义了一个与配置描述符(Configuration Descriptor)类似的根描述符(root descriptor),是一个或多个设备功能描述符(Device Capability Descriptor)的基础描述符。主机端通过BOS描述符的wTotalLength字段获取整个BOS描述符集的大小,再通过这个大小来获取完整的描述符集。

主机使用GetDescriptor()请求获取BOS描述符(BOS Descriptor)。主机端不能单独读取单个的设备功能描述符(Device Capability Descriptor),只能通过GetDescriptor()请求获取BOS描述符(BOS Descriptor)并通过wTotalLength字段得到长度来读取整个描述符集。

在USB 2.0 ECN: Link Power Management (LPM)中定义,标准usb 2.0设备描述符(Device Descriptor)中bcdUSB字段的值,用于指示设备支持读取BOS描述符(即GetDescriptor(BOS))的请求。支持BOS描述符的设备的bcdUSB值必须是0201H或更大的值。 另外,Microsoft OS 2.0 Descriptors Specification中定义,设备描述符(Device Descriptor)中的USB版本必须是usb 2.1及更高版本。

BOS Descriptor OffsetFieldSizeValueDescription0bLength1Number以字节为单位的描述符大小1bDescriptorType1ConstantBOS描述符类型2wTotalLength2Number此描述符及其所有子描述符的总长度4bNumDeviceCaps1Number在BOS中独立的设备能力描述符(device capability descriptors)数量

bLength以字节为单位的描述符大小 (0x05)。

bDescriptorTypeBOS描述符类型,为BOS(0x0F)。

wTotalLength 此描述符及其所有子描述符的总长度。主机端通过BOS描述符的wTotalLength字段获取整个BOS描述符集的大小,再通过这个大小来获取完整的描述符集。

bNumDeviceCaps 在BOS中独立的设备功能描述符(Device Capability Descriptor)数量。

获取BOS描述符

主机通过发送Get Descriptor请求,取得BOS描述符及其附属描述符。

Get DescriptorValuebmRequestType0x80  bmRequestType.Recipient0b00000(Device)  bmRequestType.Type0b00(Standard)  bmRequestType.Direction0b1(Device-to-Host)bRequest0x06(Get Descriptor)wValue0x0f00(BOS#0)wIndex0x0000wLength0x???

下面举例说明一个获取BOS描述符(BOS Descriptor)的过程。使用USB分析仪抓包,软件Total Phase Data Center。

获取一个设备的BOS描述符(BOS Descriptor),该设备的BOS描述符(BOS Descriptor)如下所示: 0

使用USB分析仪抓包可以看到,获取BOS描述符(BOS Descriptor),主机端先获取BOS描述符的信息,从而得到描述符集的大小,再获取第二次BOS描述符,得到整个描述符集: 1

BOS描述符(BOS Descriptor)的获取过程如下: 2

再展开看到详细的过程: 3

接下来详细看整个获取过程的各个字段含义: 4

一开始的setup包过程: 5

setup data: 6

IN包过程 7

OUT包过程: 8

完成整个BOS描述符(BOS Descriptor)的获取。

附录 Wireless USB 1.x BOS Descriptor OffsetFieldSizeValueDescription0bLength1NumberSize of this descriptor.1bDescriptorType1ConstantDescriptor type: BOS.2wTotalLength2NumberLength of this descriptor and all of its sub descriptors.4bNumDeviceCaps1NumberThe number of separate device capability descriptors in the BOS. USB 3.x BOS Descriptor OffsetFieldSizeValueDescription0bLength1NumberSize of descriptor1bDescriptorType1ConstantBOS Descriptor type2wTotalLength2NumberLength of this descriptor and all of its sub descriptors4bNumDeviceCaps1NumberThe number of separate device capability descriptors in the BOS [参考资料]

Universal Serial Bus Specification Revision 2.0

Universal Serial Bus 3.0 Specification

Universal Serial Bus 3.1 Specification

Universal Serial Bus 3.2 Specification

Wireless Universal Serial Bus Specification Revision 1.0

Wireless Universal Serial Bus Specification Revision 1.1

USB 2.0 ECN: Link Power Management (LPM)

Microsoft OS 2.0 Descriptors Specification

USB Complete, 5th Edition

USB开发大全

本文链接:https://blog.csdn.net/u012028275/article/details/109953472



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3