IsochronousEnable 位功能详解(OHCI 规范)

1. 核心功能

IsochronousEnableHcControl 寄存器中的一个控制位,用于 全局启用/禁用等时传输(Isochronous Transfers) 的调度。

  • 等时传输特性:用于实时性要求高的数据流(如音频、视频),需在固定时间间隔内完成传输

2. 工作流程

  1. 周期性列表(Periodic List)处理

    • 主机控制器(HC)在每帧(Frame)中遍历 Periodic List 时,若遇到 等时传输端点描述符(ED)(其 F 字段为 1),会检查 IsochronousEnable 位的状态:
      • 1(启用):继续处理该 ED 及其后的等时传输。
      • 0(禁用)立即停止处理 Periodic List(假设列表中仅剩等时 ED),转而调度 非周期性列表(Bulk/Control EDs)
  2. 生效时机

    • 修改此位的效果 不会立即生效,而是在下一帧开始时(非当前帧)应用。
    • 例如:在第 N 帧中设置 IsochronousEnable=1,第 N+1 帧才会开始处理等时 ED。

3. 驱动(HCD)使用场景

  1. 动态开关等时传输

    // 启用等时传输
    uint32_t hc_control = read_reg(HcControl);
    hc_control |= (1 << ISOCHRONOUS_ENABLE_BIT);  // 设置对应位
    write_reg(HcControl, hc_control);
    
    // 禁用等时传输(下一帧生效)
    hc_control &= ~(1 << ISOCHRONOUS_ENABLE_BIT);
    write_reg(HcControl, hc_control);
  2. 应用场景

    • 实时流启停:如音频设备开始/停止播放时,动态开关等时传输以节省带宽。
    • 错误恢复:等时传输出错时,临时禁用并重新初始化 ED。

4. 硬件行为细节

  • PLE 的关系
    PLE(Periodic List Enable)控制整个 Periodic List 的开关,而 IsochronousEnable 仅针对其中的等时 ED。

    • PLE=0,即使 IsochronousEnable=1,也不会处理任何 Periodic ED。
  • 状态切换延迟
    由于生效延迟,HCD 需确保在禁用后等待一帧再修改等时 ED 配置,避免冲突。


5. 注意事项

  • 默认值:硬件复位后通常为 0(禁用)。
  • 保留位处理:修改时需通过 Read-Modify-Write 保留其他位。
  • 实时性影响:禁用等时传输可能导致数据流中断,需配合设备协议层处理。

中文技术术语

  • IsochronousEnable等时传输使能位
  • Periodic List周期性传输列表
  • Frame(USB 时间单位,通常 1ms)

总结

IsochronousEnable 是 OHCI 中管理实时数据传输的关键开关位,驱动需注意其延迟生效特性,并在启停等时传输时确保与设备端同步,避免数据丢失或总线冲突。