1. EHCI 概述:EHCI 控制器在 USB 2.0 体系中的定位、主要特性与功能框图
1.1 USB 2.0 体系架构与 EHCI 的定位
USB 2.0 规范引入了 高速(High-Speed, 480 Mbps) 传输模式,同时保持对全速(12 Mbps)和低速(1.5 Mbps)设备的向后兼容。EHCI(Enhanced Host Controller Interface)是专为 USB 2.0 高速传输设计的开放主机控制器接口标准,由 Intel、Microsoft 等公司联合制定。
在 USB 2.0 主机端,EHCI 控制器负责管理高速事务,而 UHCI / OHCI 控制器(或内嵌在 EHCI 中的 Companion Controller)负责处理全速/低速事务。这种分工通过 Transaction Translator(TT) 机制实现。
关键概念: EHCI 只处理高速(HS)调度;全速(FS)/低速(LS)设备通过 TT 或 Companion Controller 桥接,不直接占用 EHCI 的调度帧。
1.2 EHCI 的主要特性
| 特性类别 | 具体描述 |
|---|---|
| 传输速率 | 支持高速模式(480 Mbps),向下兼容全速/低速(通过 TT) |
| 调度机制 | 基于微帧(Microframe, 125 µs)的周期性与异步调度 |
| 数据结构 | 使用周期列表(Periodic List)与异步列表(Async List)管理传输描述符(qTD) |
| 批量传输 | 支持批量端点(Bulk Endpoint),采用异步列表调度,无带宽保证但可重试 |
| 中断传输 | 支持中断端点,使用周期列表,保证最大服务间隔 |
| 等时传输 | 支持高速等时端点,使用周期列表,无重试机制 |
| 控制传输 | 默认端点 0 使用控制传输,由周期列表与异步列表共同管理 |
| 电源管理 | 支持挂起/恢复、远程唤醒、端口电源控制 |
| 错误处理 | 支持传输错误重试、Babble 检测、帧超时等 |
1.3 EHCI 功能框图
下图展示了 EHCI 主机控制器在 USB 2.0 系统中的核心模块与数据流关系:
1.4 EHCI 与 UHCI/OHCI 的对比
| 特性 | EHCI | UHCI (Intel) | OHCI (Compaq/Microsoft) |
|---|---|---|---|
| 支持速率 | 高速 (480 Mbps) | 全速/低速 | 全速/低速 |
| 调度粒度 | 微帧 (125 µs) | 帧 (1 ms) | 帧 (1 ms) |
| 数据结构 | qTD + iTD/siTD | TD + QH | ED + TD |
| 寄存器接口 | MMIO + 系统总线 | I/O 端口 | MMIO |
| TT 支持 | 内嵌或外挂 Companion | 无 | 无 |
| 批量传输调度 | 异步列表,基于 QH 轮询 | 异步列表,基于 TD 链 | 异步列表,基于 ED 链 |
1.5 EHCI 批量传输的调度模型
批量传输在 EHCI 中属于 异步传输,由 异步列表(Async List) 管理。调度引擎在每个微帧中轮询异步列表,执行挂起的批量事务。批量传输没有固定的带宽保证,但 EHCI 保证在 每微帧至少执行一个批量事务(如果存在挂起的批量请求)。
批量传输特点: 数据量大、无实时性要求、错误重试机制完善。在 EHCI 中,批量传输的优先级低于中断和等时传输,但高于控制传输(在异步列表中控制传输优先级最低)。
1.6 EHCI 寄存器空间概述
EHCI 控制器通过 MMIO(Memory-Mapped I/O) 暴露寄存器空间,主要寄存器分组如下:
- CAPLENGTH / HCIVERSION:能力寄存器,标识控制器版本与能力。
- USBCMD / USBSTS:命令与状态寄存器,控制运行/停止、复位、中断使能等。
- FRINDEX / PERIODICLISTBASE / ASYNCLISTADDR:帧索引与列表基址寄存器,用于调度。
- PORTSC (xN):端口状态与控制寄存器,管理端口连接、使能、复位、挂起等。
- CONFIGFLAG:配置标志寄存器,用于端口路由配置。
批量传输配置关键寄存器: ASYNCLISTADDR 寄存器指向异步列表的基址,USBCMD 中的 ASE(Async Schedule Enable)位控制异步调度的启动与停止。
1.7 EHCI 批量传输的典型应用场景
| 应用场景 | 设备类型 | 批量传输特点 |
|---|---|---|
| 大容量存储 | U 盘、移动硬盘 | 大数据块传输,BOT 协议,错误重试 |
| 网络适配器 | USB 以太网卡 | 批量传输承载网络帧,延迟敏感 |
| 打印机 | USB 打印机 | 批量输出,数据量大,无实时性 |
| 数据采集 | USB 数据采集卡 | 批量输入,高吞吐,需保证不丢包 |
注意: 批量传输在 EHCI 中不保证延迟,但保证数据完整性。对于需要实时性的应用(如音频/视频),应使用中断或等时传输。