1. USB基础概念

USB(Universal Serial Bus,通用串行总线)自1996年问世以来,已成为嵌入式系统和PC领域最成功的外设总线标准。本章从总线历史、版本演进、物理拓扑、电气特性与信号协议四个维度,为后续USB设备驱动开发奠定坚实的硬件基础。

1.1 USB总线历史

USB标准的诞生源于1990年代PC外设接口混乱的局面:串口、并口、PS/2、SCSI等接口互不兼容,热插拔支持差,带宽低。1994年,Intel、Microsoft、IBM等七家公司联合成立USB Implementers Forum(USB-IF),目标是用单一通用接口替代所有传统外设接口。

时间 里程碑 意义
1994年 USB-IF成立 七家公司联合制定标准
1996年 USB 1.0发布 首个正式规范,1.5 Mbps低速
1998年 USB 1.1发布 增加12 Mbps全速模式
2000年 USB 2.0发布 480 Mbps高速,大规模普及
2008年 USB 3.0发布 5 Gbps超高速,增加双总线架构
2013年 USB 3.1发布 10 Gbps,引入USB Type-C
2017年 USB 3.2发布 20 Gbps,双通道技术
2019年 USB4发布 40 Gbps,基于Thunderbolt 3协议
驱动开发视角:USB 2.0是目前嵌入式Linux设备中最广泛支持的版本,而USB 3.x/4.0的驱动开发主要涉及更复杂的DMA管理和电源管理。理解版本差异是选择驱动框架的第一步。

1.2 USB版本演进(1.0/2.0/3.0/3.1/3.2/4.0)

USB版本演进的核心驱动力是带宽需求增长和物理接口统一。下表对比各版本的关键技术参数:

版本 发布年份 理论带宽 信号速率 编码方式 接口类型 供电能力
USB 1.0/1.1 1996/1998 1.5 / 12 Mbps 1.5 / 12 Mbps NRZI Type-A/B 2.5V / 500 mA
USB 2.0 2000 480 Mbps 480 Mbps NRZI + 位填充 Type-A/B/Mini/Micro 5V / 500 mA
USB 3.0 2008 5 Gbps 5 Gbps 8b/10b Type-A/B(蓝色) 5V / 900 mA
USB 3.1 Gen 2 2013 10 Gbps 10 Gbps 128b/132b Type-C 5V / 3A(PD可达100W)
USB 3.2 Gen 2x2 2017 20 Gbps 10 Gbps × 2通道 128b/132b Type-C 5V / 3A
USB4 2019 40 Gbps 20 Gbps × 2通道 128b/132b Type-C 5V / 3A(PD可达240W)
关键演进特征:
  • USB 1.x → 2.0:带宽提升40倍,引入高速(High-Speed)模式,保留全速/低速向后兼容。
  • USB 2.0 → 3.0:增加独立的超高速(SuperSpeed)差分对,实现全双工通信,与USB 2.0信号线物理共存。
  • USB 3.0 → 3.1/3.2:Type-C接口统一,引入双通道(2-lane)技术,带宽翻倍。
  • USB 3.2 → USB4:基于Thunderbolt 3协议,支持隧道协议(PCIe、DisplayPort),带宽达40 Gbps。

1.3 USB物理拓扑结构(Host-Device-Hub)

USB采用星形-菊花链混合拓扑,由Host Controller(主机控制器)作为唯一根节点,通过Hub(集线器)扩展端口,最多支持127个设备(含Hub)。

USB物理拓扑结构(Host-Device-Hub) Host Controller Root Hub Hub 1 Hub 2 Hub 3 Device 1 Device 2 Device 3 Device 4 ... 拓扑规则: • 每个USB系统有且仅有1个Host Controller(主机控制器) • Hub级联最多7层(含Root Hub),设备总数不超过127个
驱动开发注意:USB拓扑中,Host Controller是唯一的总线仲裁者。所有数据传输必须由Host发起,Device不能主动发送数据。这意味着USB设备驱动中,所有读操作本质上都是Host先发送IN令牌包,Device再响应数据。

1.4 USB电气特性与信号协议

1.4.1 电气特性

USB使用差分信号传输,通过D+和D-两条数据线实现抗干扰通信。不同版本电气参数差异显著:

参数 USB 1.x / 2.0 USB 3.x / USB4
信号线数量 2(D+, D-) 2(D+, D-)+ 4(SSTX+, SSTX-, SSRX+, SSRX-)
传输方式 半双工 全双工(超高速通道)
差分电压 0~3.3V(低速/全速)/ 400mV(高速) 800~1200mV(超高速)
终端电阻 15kΩ(D+上拉)/ 1.5kΩ(设备端) 差分阻抗90Ω ± 15%
供电电压 4.75V ~ 5.25V 4.75V ~ 5.25V(VBUS)
最大电流 500 mA(USB 2.0)/ 100 mA(未配置) 900 mA(USB 3.0)/ 3A(Type-C)
设备检测原理:USB设备通过D+或D-线上的上拉电阻向Host报告速度等级。全速/高速设备在D+线上接1.5kΩ上拉电阻,低速设备在D-线上接1.5kΩ上拉电阻。Host检测到上拉信号后,启动枚举流程。

1.4.2 信号协议层次

USB协议采用分层架构,从物理层到应用层共4层:

USB协议分层架构 应用层(Application Layer) 设备类协议(HID、Mass Storage、CDC、Video等) 功能层(Functional Layer) 端点(Endpoint)、管道(Pipe)、接口(Interface) 设备层(Device Layer) 默认管道(Default Pipe)、标准请求、描述符 总线接口层(Bus Interface Layer) 包传输(SOF、令牌、数据、握手包)、电气信号

1.4.3 包传输与事务

USB总线上的所有数据传输都以包(Packet)为单位。一个完整的事务(Transaction)由以下阶段组成:

  1. 令牌阶段(Token Phase):Host发送令牌包(IN/OUT/SETUP/SOF),指定目标设备和端点。
  2. 数据阶段(Data Phase):数据发送方发送数据包(DATA0/DATA1/DATA2/MDATA)。
  3. 握手阶段(Handshake Phase):接收方返回握手包(ACK/NAK/STALL/NYET)。
驱动开发关键:USB设备驱动中,URB(USB Request Block)是内核抽象的事务描述结构。每个URB对应一次Host与Device之间的数据传输,驱动通过提交URB到Host Controller来发起事务。理解包结构是正确构造URB的前提。

1.4.4 传输类型

USB定义了4种传输类型,满足不同设备的需求:

传输类型 带宽保证 错误重试 延迟要求 典型设备 端点类型
控制传输(Control) 有(10%) 是 中等 所有设备(枚举用) 控制端点(Endpoint 0)
批量传输(Bulk) 无 是(CRC重试) 低 U盘、打印机 批量端点
中断传输(Interrupt) 有(保证轮询间隔) 是 高 键盘、鼠标、游戏手柄 中断端点
等时传输(Isochronous) 有(预留带宽) 否(无重试) 极高 音频、视频、摄像头 等时端点
驱动选择指南:
  • 控制传输:设备枚举、配置查询,所有驱动必须支持。
  • 批量传输:大数据量、可靠性优先的场景(存储、网络)。
  • 中断传输:小数据量、周期性轮询的场景(HID设备)。
  • 等时传输:实时性优先、允许少量丢包的场景(音视频流)。

1.5 本章小结

USB总线从1.0到4.0的演进,本质是带宽、供电能力和接口统一性的持续提升。物理拓扑中Host-Device-Hub的星形结构决定了驱动开发的主从模式思维。电气特性中的差分信号和上拉电阻检测机制,是设备枚举和速度协商的硬件基础。信号协议的分层架构和四种传输类型,直接对应Linux内核中URB、端点、管道的软件抽象。