USB协议中的
建立事务只用于控制通道上的
控制传输。每一次控制传输都以一个建立事务为开端。建立事务主要用于主机向设备发关控制请求。一个建立建务包含一个
令牌包,一个8字节的DATA0
数据包,一个
握手包。其具体格式,及其它事务的格式参:
http://www.docin.com/p-149698164.html 的第七页和第六页。
此次 控制传输中,主机想向设备发出什么 控制请求呢?这个信息就包含在8字节的DATA0 数据包中。
采用Bus Hound软件可以获得建立事务中8字节DATA0数据包的内容。下面是bus hound抓到的内容:
其中CTL是Control的缩写,这表时是一次控制传输。为什么能确定是控制传输呢?有建立事务就是控制传输,两者一对一的关系。
下面的8字节就是DATA0数据包中的内容。
GET DESCRIPTOR表明这是一个获得设备描述符的请求。
这8个字节的格式为:
下面我们对照上表,解释那前两个字节(因为后面的字节会因请求的不同,含义也不同):
80 第一字节:传输方向:设备到主机 类型:标准 接收者:对设备的请求
06 第二字节:请求类别:bRequest的描述为:
可知06代表Get Descriptor.
参考资料: http://www.beyondlogic.org/usbnutshell/usb6.shtml
此次 控制传输中,主机想向设备发出什么 控制请求呢?这个信息就包含在8字节的DATA0 数据包中。
采用Bus Hound软件可以获得建立事务中8字节DATA0数据包的内容。下面是bus hound抓到的内容:
29.0 CTL 80 06 00 02 00 00 09 00 GET DESCRIPTOR 2.2.0
其中CTL是Control的缩写,这表时是一次控制传输。为什么能确定是控制传输呢?有建立事务就是控制传输,两者一对一的关系。
下面的8字节就是DATA0数据包中的内容。
GET DESCRIPTOR表明这是一个获得设备描述符的请求。
这8个字节的格式为:
Offset
|
Field
|
Size
|
Value
|
Description
|
0 | bmRequestType | 1 | Bit-Map | D7 Data Phase Transfer Direction 0 = Host to Device 1 = Device to Host D6..5 Type 0 = Standard 1 = Class 2 = Vendor 3 = Reserved D4..0 Recipient 0 = Device 1 = Interface 2 = Endpoint 3 = Other 4..31 = Reserved |
1
|
bRequest
|
1
|
Value
|
Request |
2
|
wValue
|
2
|
Value
|
Value |
4
|
wIndex
|
2
|
Index or Offset
|
Index |
6
|
wLength
|
2
|
Count
|
Number of bytes to transfer if there is a data phase |
80 第一字节:传输方向:设备到主机 类型:标准 接收者:对设备的请求
06 第二字节:请求类别:bRequest的描述为:
bmRequestType | bRequest | wValue | wIndex | wLength | Data |
1000 0000b
|
GET_STATUS (0x00)
|
Zero
|
Zero
|
Two
|
Device Status
|
0000 0000b
|
CLEAR_FEATURE (0x01)
|
Feature Selector
|
Zero
|
Zero
|
None
|
0000 0000b
|
SET_FEATURE (0x03)
|
Feature Selector
|
Zero
|
Zero
|
None
|
0000 0000b
|
SET_ADDRESS (0x05)
|
Device Address
|
Zero
|
Zero
|
None
|
1000 0000b
|
GET_DESCRIPTOR (0x06)
|
Descriptor Type & Index
|
Zero or Language ID
|
Descriptor Length
|
Descriptor
|
0000 0000b
|
SET_DESCRIPTOR (0x07)
|
Descriptor Type & Index
|
Zero or Language ID
|
Descriptor Length
|
Descriptor
|
1000 0000b
|
GET_CONFIGURATION (0x08)
|
Zero
|
Zero
|
1
|
Configuration Value
|
0000 0000b
|
SET_CONFIGURATION (0x09)
|
Configuration Value
|
Zero
|
Zero
|
None
|
可知06代表Get Descriptor.
参考资料: http://www.beyondlogic.org/usbnutshell/usb6.shtml