USB设备的枚举过程

USB设备枚举过程详解

USB设备的枚举过程

  1. Get Device Descriptor。主机的第一个命令要求得到设备描述符,此SETUP 包为8 个字节数据(80,06,00,01,00,00,40,00),发向地址0,端口0。“40”表示返回数据长度最大为40H 个字节。实际上,只返回一个包,即数组DEV_DESC[ ]中的前8 个字节,用于说明设备的描述符的真实长度和设备的类型。
  2. Set Address。接着是设置设备地址处理事件,主机发送一个含有指定地址的数据包(00,05,02,00,00,00,00,00),在主机只有一个USB 设备的时候,这个地址一般会是2,最大地址127,USB 协议中可以连接127 个设备。设置地址事件处理结束后,设备进入地址状态,主机以后会在新的指定地址处访问设备。
  3.  Get Device Descriptor。主机再次发送请求得到设备描述符的数据包(80,06,00,01,00,00,12,00),与上次不同的是,要求的数据的长度是实际的数据长度,同时是发送到Set Address命令所设置的地址。
  4. 读取全部Configuration Descriptor。接着主机要求得到设备全部的配置描述符、接口描述符和节点描述符(80,06,00,02,00,00,40,00),由于主机不知道设备描述符的真实长度,因此它要求得到64个字节。
  5. Set Interface,主机发送数据包(01,0B,00,00,00,00,00,00),设置接口值为0。
  6.  Set Conifguration,确定USB设备工作在哪一个配置下。对于U盘设备来说,一般只有1个配置值,其值为01。主机发送数据包(00,09,01,00,00,00,00,00)。
  7. 如果以上步骤都正确,主机将找到新设备,并且配置成功,该设备可以正常使用,可以进行后续的U盘枚举过程了。
  8. 用busHound观察计算机对于U盘的枚举过程,发现上述步骤后还有一个GetMaxLun的操作,但是实际上对于U盘来说忽略该步骤也没有问题。
     
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值