以固件的视角查看HID设备的枚举过程
2023-10-08
364
0
以下从固件的角度来理解HID设备的枚举过程。
使用以下的抓包过程,可以对照BUSHOUND的抓包过程,来理解事务和传输之间的关系。
一次传输可以包括多个事务。
USB_Reset
//获取设备描述符符
<-SETUP:80 06 00 01 00 00 40 00
SetupPacket:请求->主机,标准请求,目标=设备,6:GET_DESCRIPTOR,
请求设备符,要求长度=64
实际返回长度:18
->EP0IN:12 01 00 02 00 00 00 08
EP0_IN,发送成功
->EP0IN:83 06 00 01 00 02 04 2C
EP0_OUT,接收成功
StatusOutStage..无数据
USB_Reset
//设置地址
<-SETUP:00 05 18 00 00 00 00 00
SetupPacket:请求->设备,标准请求,目标=设备,5:SET_ADDRESS,
StatusInStage..空包应答
EP0_IN,发送成功
USB_SetAddress:18
//获取设备描述符符
<-SETUP:80 06 00 01 00 00 12 00
SetupPacket:请求->主机,标准请求,目标=设备,6:GET_DESCRIPTOR,
请求设备符,要求长度=18
实际返回长度:18
->EP0IN:12 01 00 02 00 00 00 08
EP0_IN,发送成功
->EP0IN:83 06 00 01 00 02 04 2C
EP0_IN,发送成功
->EP0IN:48 01
EP0_IN,发送成功
EP0_OUT,接收成功
StatusOutStage..无数据
//获取配置描述符
<-SETUP:80 06 00 02 00 00 FF 00
SetupPacket:请求->主机,标准请求,目标=设备,6:GET_DESCRIPTOR,
请求配置符,索引号 = 0,要求长度=255
实际返回长度:73
->EP0IN:09 02 49 00 02 01 00 80
EP0_IN,发送成功
->EP0IN:F0 09 04 00 00 02 03 00
EP0_IN,发送成功
->EP0IN:00 2C 09 21 10 01 00 01
EP0_IN,发送成功
->EP0IN:22 21 00 07 05 81 03 40
EP0_IN,发送成功
->EP0IN:00 03 07 05 01 03 40 00
EP0_IN,发送成功
->EP0IN:10 09 04 01 00 02 03 00
EP0_IN,发送成功
->EP0IN:01 00 09 21 10 01 00 01
EP0_IN,发送成功
->EP0IN:22 41 00 07 05 82 03 40
EP0_IN,发送成功
->EP0IN:00 03 07 05 02 03 40 00
EP0_IN,发送成功
->EP0IN:10
EP0_IN,发送成功
EP0_OUT,接收成功
StatusOutStage..无数据
//获取字符串描述符语言ID
<-SETUP:80 06 00 03 00 00 FF 00
SetupPacket:请求->主机,标准请求,目标=设备,6:GET_DESCRIPTOR,
请求字符串符:索引号 = 0,要求长度=255
实际返回长度:4
->EP0IN:04 03 09 04
EP0_IN,发送成功
EP0_OUT,接收成功
StatusOutStage..无数据
//获取字符串描述符
<-SETUP:80 06 2C 03 09 04 FF 00
SetupPacket:请求->主机,标准请求,目标=设备,6:GET_DESCRIPTOR,
请求字符串符:索引号 = 44,要求长度=255
实际返回长度:28
->EP0IN:1C 03 44 00 49 00 54 00
EP0_IN,发送成功
->EP0IN:32 00 33 00 59 00 20 00
EP0_IN,发送成功
->EP0IN:52 00 65 00 61 00 64 00
EP0_IN,发送成功
->EP0IN:65 00 72 00
EP0_IN,发送成功
EP0_OUT,接收成功
StatusOutStage..无数据
<-SETUP:80 06 48 03 09 04 FF 00
SetupPacket:请求->主机,标准请求,目标=设备,6:GET_DESCRIPTOR,
请求字符串符:索引号 = 72,要求长度=255
实际返回长度:26
->EP0IN:1A 03 30 00 30 00 30 00
EP0_IN,发送成功
->EP0IN:31 00 41 00 30 00 30 00
EP0_IN,发送成功
->EP0IN:30 00 30 00 30 00 30 00
EP0_IN,发送成功
->EP0IN:30 00
EP0_IN,发送成功
EP0_OUT,接收成功
StatusOutStage..无数据
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936