Host Controller Communications Area (HCCA) 结构定义

Offset Size (bytes) Name R/W Description
0 128 HccaInterruptTable R 这32个双字(Dword)是指向中断端点描述符(Interrupt EDs)的指针。
0x80 2 HccaFrameNumber W 当前帧号:主机控制器(HC)在开始处理当前帧的周期性列表前更新此值。
0x82 2 HccaPad1 W 当HC更新HccaFrameNumber时,会将此字段清零。
0x84 4 HccaDoneHead W 完成队列头指针
1. 当HC处理完一帧且其延迟中断寄存器为0时,会将HcDoneHead的当前值写入此位置,并在中断使能时触发中断。
2. 在软件清除HcInterruptStatus寄存器的WD位前,HC不会再次写入此位置。
3. 最低位(LSb)=1表示写入HccaDoneHead时存在未屏蔽的HcInterruptStatus中断。
0x88 116 reserved R/W 保留字段:供主机控制器(HC)内部使用。

关键说明

  1. HCCA 对齐要求

    • HCCA结构 必须位于 256字节对齐 的内存地址(如 0x000000000x00000100)★★★
    • 驱动需将HCCA地址写入主控的 HcHCCA 寄存器。
  2. 字段用途

    • HccaInterruptTable:管理USB中断传输(如键盘、鼠标)。
    • HccaFrameNumber:同步1ms帧周期调度。
    • HccaDoneHead:硬件通知驱动传输完成(需结合中断处理)。
  3. 保留字段

    • 必须初始化为0,未来可能用于硬件扩展。

注意事项

  • HccaDoneHead 的LSb=1:表示中断有效,驱动需检查此位以避免误处理。
  • 写入操作延迟(Posted Writes):对寄存器的写入由硬件异步执行,减少CPU阻塞。