USB枚举及其描述符(1)— USB 枚举/断开过程

参考文章:
1.https://www.usbzh.com/article/detail-110.html
本文章参考了USB中文网的资料,以及个人的一些抓包数据。
由于本人水平有限,USB协议也是一边学习一边写笔记,文章中可能会有错误以及不准确的地方,希望广大网友帮我指正,大家一起学习一起进步。

USB设备枚举一般会经过插入、供电、初始化、分配地址,配置,获取设备描述符、获取配置描述符、获取字符串描述符和配置设备这么几个过程。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总线3ms无活动,挂起

USB设备的枚举过程

USB主机检测到USB设备插入后,就要对设备进行枚举了。 枚举的作用就是从设备是那个读取一些信息,知道设备是什么样的设备,然后通信,这样主机就可以根据这些信息安装合适的驱动程序。 USB设备的枚举过程如下:
1.USB设备插入USB接口后,主机检测D+/D-线上的电压,确认有设备连接,USB集线器通过中断IN通道,向主机报告有USB设备连接。
2.主机接到通知后,通过集线器设备类请求GetPortStatus获取更多的信息。然后主机等待100ms等待设备稳定,然后发送集线器设备类请求SetPortStatus,对USB设备进行复位,复位后USB设备的地址为0,这样主机就可以使用地址0与USB设备进行通信,复位后的设备可以从USB总线上获取小于100mA的电流,用于使用默认地址对管道0控制事务响应。
3.主机向地址为0(即刚插入的USB设备)的设备端点0(默认端点)发送获取设备描述符的标准请求GetDescriptor。
4.USB设备收到请求后,将其预设的设备描述符返回给主机
5.主机收到设备描述符后,返回一个0长度的数据确认包
6.主机对设备再次复位,复位后主机对地址为0的设备端点0发送一个设置地址SetAddress请求(新的设备地址在数据包中)。
7.主机发送请求状态返回,设备返回0长度的状态数据包
8.主机收到状态数据包后,发送应答包ACK给设备,设备收到ACK后,启用新的设备地址。
9.主机再次使新的地址获取设备描述符GetDescriptor,设备返回地址描述符。
10.主机获取第一次配置描述符有前18个字节,设备返回配置描述符的前18个字节,其数据包中含有配置描述符的总长度。
11.主机根据配置描述符的总长度再次获取配置描述符,设备返回全总的配置描述符。
12.如果还有字符串描述符,系统还会获取字符串描述符。像HID设备还有报告描述符,它也需要单独获取。

USB设备枚举的抓包分析

接下来从抓包数据进行一下过程的分析:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HwanVeMen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值