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

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

OffsetFieldSizeValueDescription
0bLength1Number以字节为单位的描述符大小
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 DescriptorValue
bmRequestType0x80
  bmRequestType.Recipient0b00000(Device)
  bmRequestType.Type0b00(Standard)
  bmRequestType.Direction0b1(Device-to-Host)
bRequest0x06(Get Descriptor)
wValue0x0f00(BOS#0)
wIndex0x0000
wLength0x???

下面举例说明一个获取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

OffsetFieldSizeValueDescription
0bLength1NumberSize 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

OffsetFieldSizeValueDescription
0bLength1NumberSize of descriptor
1bDescriptorType1ConstantBOS Descriptor type
2wTotalLength2NumberLength of this descriptor and all of its sub descriptors
4bNumDeviceCaps1NumberThe 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值