USB枚举实战:USB复位分析与地址分配调试 - 第1节
1.1 USB 总线架构:分层拓扑与主机中心模型
USB(Universal Serial Bus)采用分层星形拓扑,由主机(Host)、集线器(Hub)和设备(Device)三级构成。主机位于拓扑根部,通过根集线器(Root Hub)向下扩展端口;集线器负责信号中继与电源管理,设备是功能端点。整个总线由主机独占调度,设备不能主动发起事务。
核心特征:USB 是主机主导的轮询总线,所有数据传输均由主机启动帧(Frame)或微帧(Microframe)触发,设备仅被动响应。
主机与设备的角色分工
| 角色 | 职责 | 关键组件 |
| 主机 (Host) | 调度总线、管理枚举、分配地址、控制电源 | 主机控制器 (HC)、根集线器、系统软件栈 |
| 集线器 (Hub) | 端口扩展、信号中继、连接/断开检测、电源转换 | 端口状态机、中继器、事务翻译器 (TT) |
| 设备 (Device) | 实现具体功能(存储、HID、通信等) | 端点 (Endpoint)、接口 (Interface)、配置 (Configuration) |
1.2 USB 版本演进:从 1.0 到 3.x
USB 标准经历了多个重大版本迭代,每次升级都在速率、电源管理和协议架构上带来突破。理解版本差异是分析枚举行为的基础。
版本对比速览
| 版本 | 发布年份 | 信号速率 | 编码方式 | 拓扑变化 |
| USB 1.0 / 1.1 | 1996 / 1998 | 1.5 Mbps (Low-Speed) 12 Mbps (Full-Speed) | NRZI + 位填充 | 主机-集线器-设备 |
| USB 2.0 | 2000 | 480 Mbps (High-Speed) | NRZI + 位填充 | 引入事务翻译器 (TT) |
| USB 3.0 / 3.1 / 3.2 | 2008 / 2013 / 2017 | 5 Gbps (SuperSpeed) 10 Gbps (SuperSpeed+) 20 Gbps (Gen 2×2) | 8b/10b (3.0) 128b/132b (3.1+) | 新增独立差分对,全双工 |
枚举调试提示:USB 2.0 设备在复位后通过挂起信号 (Chirp J/K) 协商高速模式;USB 3.x 设备则通过轮询 (Polling) 状态机建立链路。不同版本的复位时序差异是枚举失败常见原因。
USB 2.0 与 USB 3.x 协议栈对比
USB 3.x 并非 USB 2.0 的简单提速,而是引入了双总线架构:保留 USB 2.0 差分对(D+/D-)用于兼容,新增 SuperSpeed 发送/接收差分对(SSTX+/SSTX-、SSRX+/SSRX-),实现全双工通信。
1.3 枚举视角的关键版本差异
在 USB 枚举过程中,不同版本在复位行为、速度检测和地址分配阶段存在显著差异:
- 复位时序:USB 2.0 复位至少持续 10 ms;USB 3.0 复位(LFPS 握手)约 100 µs,且需要链路训练。
- 速度协商:USB 2.0 通过 D+/D- 线上电平组合(Chirp)确定速度;USB 3.x 通过边带信号 (Pericom) 和训练序列 (TS1/TS2) 建立链路。
- 地址分配:USB 2.0 使用控制传输 (Setup Token) 发送
SET_ADDRESS 请求;USB 3.x 同样使用控制传输,但链路层需先完成 Link Training。
- 电源管理:USB 2.0 支持挂起/唤醒;USB 3.x 引入 U0/U1/U2/U3 链路电源状态,枚举期间需协商退出低功耗状态。
常见陷阱:调试 USB 3.0 枚举时,若逻辑分析仪仅捕获 D+/D- 信号,将完全看不到 SuperSpeed 链路训练过程。必须同时捕获 SSTX/SSRX 差分对,或使用支持 USB 3.0 协议解码的示波器。
1.4 本章小结