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)内部使用。 |
关键说明
HCCA 对齐要求
- HCCA结构 必须位于 256字节对齐 的内存地址(如
0x00000000
、0x00000100
)★★★ - 驱动需将HCCA地址写入主控的
HcHCCA
寄存器。
- HCCA结构 必须位于 256字节对齐 的内存地址(如
字段用途
HccaInterruptTable
:管理USB中断传输(如键盘、鼠标)。HccaFrameNumber
:同步1ms帧周期调度。HccaDoneHead
:硬件通知驱动传输完成(需结合中断处理)。
保留字段
- 必须初始化为0,未来可能用于硬件扩展。
注意事项
HccaDoneHead
的LSb=1:表示中断有效,驱动需检查此位以避免误处理。- 写入操作延迟(Posted Writes):对寄存器的写入由硬件异步执行,减少CPU阻塞。