The HcCommandStatus register is used by the Host Controller to receive commands issued by the Host Controller Driver, as well as reflecting the current status of the Host Controller. To the Host Controller Driver, it appears to be a “write to set” register. The Host Controller must ensure that bits written as ‘1’ become set in the register while bits written as ‘0’ remain unchanged in the register. The Host Controller Driver may issue multiple distinct commands to the Host Controller without concern for corrupting previously issued commands. The Host Controller Driver has normal read access to all bits.
HcCommandStatus寄存器用于主机控制器(HC)接收来自主机控制器驱动程序(HCD)的命令,并反映主机控制器的当前状态。对HCD而言,该寄存器表现为”写1置位”寄存器。主机控制器必须确保写入’1’的位在寄存器中置位,而写入’0’的位保持寄存器中的原值不变。HCD可以发出多个独立命令而无需担心影响先前发出的命令。HCD对所有位具有正常读取权限。
The SchedulingOverrunCount field indicates the number of frames with which the Host Controller has detected the scheduling overrun error. This occurs when the Periodic list does not complete before EOF. When a scheduling overrun error is detected, the Host Controller increments the counter and sets the SchedulingOverrun field in the HcInterruptStatus register.
该字段指示主机控制器检测到调度超限错误的帧数。当周期列表在EOF(帧结束)前未能完成时,即发生此错误。一旦检测到调度超限错误,主机控制器将递增此计数器,并在HcInterruptStatus寄存器中设置SchedulingOverrun状态位。

HCR
HostControllerReset
This bit is set by HCD to initiate a software reset of HC. Regardless of the functional state of HC, it moves to the USBSUSPEND state in which most of the operational registers are reset except those stated otherwise; e.g., the InterruptRouting field of HcControl, and no Host bus accesses are allowed. This bit is cleared by HC upon the completion of the reset operation. The reset operation must be completed within 10 ms. This bit, when set, should not cause a reset to the Root Hub and no subsequent reset signaling should be asserted to its downstream ports.
该位由HCD置位以启动HC的软件复位。无论HC处于何种功能状态,它都将转入USBSUSPEND状态,在此状态下,除另有说明外(例如HcControl的InterruptRouting字段),大多数操作寄存器将被复位,且不允许主机总线访问。该位在复位操作完成后由HC清除。复位操作必须在10毫秒内完成。该位置位时不应导致根集线器复位,且不应向其下游端口发出后续复位信号。
CLF
ControlListFilled
This bit is used to indicate whether there are any TDs on the Control list. It is set by HCD whenever it adds a TD to an ED in the Control list. When HC begins to process the head of the Control list, it checks CLF. As long as ControlListFilled is 0, HC will not start processing the Control list. If CF is 1, HC will start processing the Control list and will set ControlListFilled to 0. If HC finds a TD on the list, then HC will set ControlListFilled to 1 causing the Control list processing to continue. If no TD is found on the Control list, and if the HCD does not set ControlListFilled, then ControlListFilled will still be 0 when HC completes processing the Control list and Control list processing will stop.
该位用于指示控制列表中是否存在任何TD。当HCD向控制列表中的ED添加TD时,会置位该位。当HC开始处理控制列表头部时,会检查CLF位:只要ControlListFilled为0,HC就不会启动控制列表处理;若CLF为1,HC将启动控制列表处理并将ControlListFilled清零。如果HC在列表中发现TD,则会重新将ControlListFilled置1,使控制列表处理持续进行。如果在控制列表中未找到TD,且HCD未置位ControlListFilled,则HC完成控制列表处理时ControlListFilled仍保持为0,控制列表处理将停止。
BLF
BulkListFilled
This bit is used to indicate whether there are any TDs on the Bulk list. It is set by HCD whenever it adds a TD to an ED in the Bulk list.
When HC begins to process the head of the Bulk list, it checks BF. As long as BulkListFilled is 0, HC will not start processing the Bulk list. If BulkListFilled is 1, HC will start processing the Bulk list and will set BF to 0. If HC finds a TD on the list, then HC will set BulkListFilled to 1 causing the Bulk list processing to continue. If no TD is found on the Bulk list, and if HCD does not set BulkListFilled, then BulkListFilled will still be 0 when HC completes processing the Bulk list and Bulk list processing will stop.
该位用于指示批量列表中是否存在任何TD。当HCD向批量列表中的ED添加TD时,会置位该位。
当HC开始处理批量列表头部时,会检查BF位:只要BulkListFilled为0,HC就不会启动批量列表处理;若BulkListFilled为1,HC将启动批量列表处理并将BF清零。如果HC在列表中发现TD,则会重新将BulkListFilled置1,使批量列表处理持续进行。如果在批量列表中未找到TD,且HCD未置位BulkListFilled,则HC完成批量列表处理时BulkListFilled仍保持为0,批量列表处理将停止。
bit[3] OCR
This bit is set by HC when HCD sets the OwnershipChangeRequest field in HcCommandStatus. This event, when unmasked, will always generate an System Management Interrupt (SMI) immediately. This bit is tied to 0b when the SMI pin is not implemented.
当HCD设置HcCommandStatus寄存器中的OwnershipChangeRequest字段时,HC会将该位置位。若未被屏蔽,该事件将立即产生系统管理中断(SMI)。若未实现SMI引脚,该位将始终绑定为0b。
SOC
SchedulingOverrunCount
These bits are incremented on each scheduling overrun error. It is initialized to 00b and wraps around at 11b. This will be incremented when a scheduling overrun is detected even if SchedulingOverrun in HcInterruptStatus has already been set. This is used by HCD to monitor any persistent scheduling problems.
这些位在每个调度超限错误发生时递增。其初始值为00b,达到11b后回绕。即使HcInterruptStatus中的SchedulingOverrun位已被置位,检测到调度超限时仍会递增此计数器。该计数器供HCD用于监控任何持续性调度问题。
