当系统启动时,枚举主机控制器,为寄存器空间分配一个基址,BIOS将FLADJ寄存器设置为系统特定的值。初始上电或HCReset(硬件或通过USBCMD寄存器中的HCReset位)后,所有的操作寄存器将在其默认值,如表所示。在硬件复位后,只有辅助电源井中不包含的运行寄存器将处于默认值。
软件应执行的步骤:
- CTRLDSSEGMENT寄存器编写4-gb段,其中分配了所有接口数据
- 将适当的值写入USBINTR寄存器以启用适当中断
- 周期帧列表基址写入PREIODICLIST基寄存器。
- 写USBCMD寄存器设置所需中断阈值,设置运行停止位
- 向CONFIGFLAG写1,将所有端口路由到EHCI
此时,主机已经运行,端口寄存器报告设备连接,系统软件通过重置过程枚举端口,此时端口活动但还没有开始调度
为了异步调度,ss写ASYNDLISTADDR。软件在USBCMD异步调用位写1.
为启动定期调度,向USBCMD相应位写1,可以在第一个端口重置前打开调度。