EHCI

17 Mar 2025 | 6 分钟阅读
EHCI

EHCI 代表增强型主机控制器接口 (Enhanced Host Controller Interface),它负责定义 USB 2.0 主机控制器的寄存器级接口。它规定了系统软件与控制器硬件之间的硬件和软件接口。

它充当控制器硬件与系统软件之间的桥梁。该规范是为系统构建者和系统驱动程序开发人员定义的。

要理解该规范,读者应该了解 USB 2.0 规范。提供的版本规范与 USB 2. 规范之间存在一些冲突。但如果发生任何冲突,USB 2.0 规范具有优先权。

读者必须熟悉通用串行总线规范,修订版 2.0。尽管已尽力仔细校对,但本规范与 USB 2.0 规范之间仍可能存在冲突。

USB 2.0 主机控制器

配套的主机控制器可以是任何 USB 1.1 主机控制器。它可以是 OHCI 或 UHC。配套的主机控制器处理全速和低速 USB 设备。这些设备应连接到系统的根端口。cHCs 不了解高速模式主控制器的运行方式。

高速设备由 EHCI 主控制器维护和管理。它们可以包含在 USB 2.0 主控制器中而无需更改。当 eHC 被执行和配置时,主机控制器被指定为系统中所有根端口的所有者。

eHC 和主机控制器的驱动程序会查找所有连接的设备。它还包括可在每个端口寄存器中看到的额外控制位,这些寄存器处理路由逻辑。

如前所述,驱动程序的所有权主要归属于 eHC。当设备不是高速设备时,eHC 驱动程序会释放该设备的所有权。设备的控制被释放,所有权被分配给配套的主机控制器。

对于特定端口,枚举从初始连接点开始。连接到该点的设备在配套的主机控制器下进行枚举。否则,eHC 保留端口所有权。然后,枚举在 eHC 下进行。USB 2.0 规范未提供 UHCI 和 OHCI 的描述。它定义了 EHCI 的寄存器和调度接口。

增强型主机控制器接口提供的关键特性如下:

  • 完全、强大的 USB 2.0 功能支持: EHCI 规定的硬件和软件规范为用户提供了一个满足 USB2.0 低速、高速和全速设备所有要求的宿主控制器。这甚至包括对 USB2.0 最新功能的支持,例如拆分事务和对某些协议的附加扩展,例如新的 PING 协议。
  • 低风险支持: 它还为全速和低速外围设备提供风险支持。它在根端口上支持高速、低速和全速这三种设备速度。这是通过集成现有的 USB1.1 主机控制器硬件和软件来实现的,以支持连接到这些端口的全速和低速设备。这使得主控制器接口能够在不牺牲全速或低速设备复杂性的情况下,更有效地支持高速设备。
  • 电源管理: 当前的计算机架构支持系统中的积极电源管理。如果实现需要 PCI 配置寄存器,则主机控制器必须实现 PCI 电源管理接口。USB 设备对于提供一致而强大的用户体验至关重要。
  • 解决了 USB 1.1 主机控制器相关问题: 它为用户在使用 USB 1.1 主机控制器时遇到的问题提供了更简单、更强大的解决方案。EHCI 规范为控制器提供了有问题的解决方案。EHCI 规范中解决的一些问题包括内存抖动、电源管理冲突以及内存访问效率相关问题。EHCI 中引入的新架构增加了新功能并解决了旧版本的问题。
  • 优化的内存访问: EHCI 的开发是为了实现一种方法,使控制器能够减少实现 USB 事务所需的平均内存访问次数。调度中的每个数据结构都经过优化,以定义大型客户端的数据缓冲区。这减少了内存占用空间和穿越调度所需的开销。
  • 降低硬件复杂度: 与以前的主机控制器接口相比,增强型主机控制器接口为软件提供了一个更简单、异步的接口。这为控制器提供了参数化的工作项。控制器使用这些项来实现 USB 中的事务。该接口允许软件异步地向接口添加新任务。控制器执行操作而无需任何同步。该接口支持一种简单的硬件散乱-收集方法,该方法可以为接口中的所有数据结构实现。
  • 支持 32 位和 64 位寻址: 增强型主机控制器接口的开发人员设想,在实现 EHCI 时,接口可能会被用于提供 64 位可寻址内存空间支持的某些架构中。因此,开发人员包含了一个附加的接口扩展,允许用户实现该接口以提供对 64 位寻址的支持。

增强型主机控制器接口的通用架构

EHCI

EHCI 中的调度接口为上面提到的每种传输类型都有单独的调度。EHCI 支持异步传输和周期性传输。EHCI 支持的周期性传输包括等时和中断传输,而 EHCI 支持的异步传输包括控制和批量传输类型。

周期性调度是一个基于时间的帧列表,类似于控制器项的时间滑动窗口。周期性调度促进了等时和中断传输这两种类型的周期性传输。异步调度是一个循环列表,其中的工作项对所有异步传输实现轮询服务。

软件还可以使用 EHCI 启动或停止任何调度。这允许软件通过 SOF 流量保持 USB 运行。当 EHCI 禁用两个调度时,控制器将无法访问计划空间。因此,当两个调度都禁用时,主机控制器无法访问主内存。这使得移动系统能够更好地利用 CPU 功耗。

EHCI 的内部架构

增强型主机控制器接口定义了三个接口空间

  1. PCI 配置空间: 如果执行需要使用 PCI 寄存器。这些寄存器负责系统组件枚举和 PCI 电源管理。
  2. 寄存器空间: 这为实现特定的参数、功能和状态寄存器提供了空间。实现应作为内存映射 I/O 空间使用。寄存器空间也称为 I/O 空间。
  3. 计划接口空间: 这是由增强型主机控制驱动程序提供和控制的内存。它用于周期性调度和异步调度。

EHCI 调度数据结构

增强型主机控制器接口处理和控制中断、批量和控制传输类型。它使用一个简单的缓冲区来排队数据结构。

它使用队列数据结构来促进自动、有序的数据流传输。它允许软件异步地将数据缓冲区添加到队列中,从而保持连续流。USB 定义的短包语义在所有处理边界条件下都得到支持。这不需要软件进行任何额外的干预。

拆分事务用于全速和低速非等时传输。拆分事务被视为高速模型的简单扩展。相同的数据结构也处理它们。用户界面数据结构控制全速和高速等时传输。

根集线器模拟

主机控制器必须使用端口集线器。操作寄存器空间包含端口寄存器,其中包含处理 USB 规范中每个端口寄存器所需的最低硬件状态和控制。

主机控制器遍历 EHCI 调度并遇到工作项。这导致主机控制器实现 USB 事务。

事务与所有已启用并连接到下游 USB 设备的根端口共享。端口寄存器提供控制和状态报告,以根据 USB 规范操作端口。