HcLSThreshold 寄存器详解(OHCI 规范)

1. 功能概述

HcLSThreshold(Low-Speed Threshold Register)是USB OHCI主机控制器中用于优化低速(Low-Speed, 1.5 Mbps)设备传输性能的寄存器。它通过设定一个时间阈值,决定何时将低速设备的传输请求合并到单个帧(Frame)中,以减少总线开销和延迟。


2. 寄存器字段定义

HcLSThreshold 是一个 32 位(Dword) 寄存器,但仅低 15 位 有效(位 14:0),其余位为保留位(必须保持写入时的原始值)。

  • 有效值范围0x00000x7FFF(单位:微秒 μs)。
  • 默认值:通常为 0x0628(即 1576 μs ≈ 1.576 ms)。

3. 核心作用

  1. 低速设备传输优化

    • 当低速设备的传输请求预计执行时间 短于 HcLSThreshold 设定的阈值 时,OHCI 会尝试将多个请求合并到同一帧中,避免频繁切换总线速度(全速/低速)。
    • 若传输时间超过阈值,则单独分配一帧。
  2. 减少总线切换开销

    • 低速设备通信需要主机控制器插入额外的 前导包(PREamble Packet),切换总线速度会占用带宽。
    • 通过合并短传输,可降低总线切换频率,提升效率。

4. 驱动(HCD)的配置建议

  1. 默认值适用性

    • 默认值 0x0628(1576 μs)适用于大多数场景,无需修改。
    • 若系统需要更低的低速设备延迟(如键盘/鼠标),可适当减小该值(例如设为 0x03E8 = 1000 μs)。
  2. 修改注意事项

    • 保留位处理:需通过 Read-Modify-Write 操作保留高位(15–31):
      uint32_t value = read_reg(HcLSThreshold);
      value = (value & 0xFFFF8000) | 0x0628; // 仅修改低15位
      write_reg(HcLSThreshold, value);
    • 极端值避免
      • 设为 0x0000:强制所有低速传输独立占用帧(降低效率)。
      • 设为 0x7FFF:尽可能合并传输(可能增加延迟)。

5. 硬件行为

  • 阈值比较逻辑
    HC 在调度传输时,会估算低速设备的传输时间(基于数据包大小和协议开销),并与 HcLSThreshold 比较,决定是否合并。
  • HcControl 的关系:仅当 HCFS=10b (USBOPERATIONAL) 时生效。

6. 典型应用场景

  1. 人机接口设备(HID)

    • 键盘/鼠标等低速设备通常发送小数据包,通过合并传输减少延迟。
  2. 多低速设备共存

    • 当多个低速设备连接时,合理的阈值可平衡吞吐量与实时性。
  3. 调试与性能调优

    • 增大阈值可测试总线效率,减小阈值可测试单设备响应速度。

7. 注意事项

  • 全速/高速设备不受影响:仅作用于低速设备(1.5 Mbps)。
  • HcFmInterval 的关联:阈值需小于帧长度(通常 1ms),否则无意义。
  • 硬件依赖性:具体合并算法由 HC 实现决定,不同厂商可能有差异。

中文译名建议

在技术文档中,HcLSThreshold 可译为:

低速设备传输阈值寄存器

或简化为:

低速阈值寄存器


总结

HcLSThreshold 是 OHCI 中针对低速设备的 传输优化寄存器,通过动态合并短传输提升总线效率。驱动开发者通常无需修改默认值,但在特定场景(如实时性要求高的 HID 设备)可微调以平衡性能。