EHCI 控制器初始化

问题描述 投票:0回答:0

我正在开发 EHCI 控制器的主机控制器驱动程序。在扩展功能中向 BIOS 请求控制(从 HCCParams 寄存器位 15:8 偏移),然后重置 HC 并设置周期列表和异步列表后,我设法让它运行。我已经设法将其设置到必须在 EHCI 控制器寄存器中设置配置标志的程度。在 Qemu 上测试我没有遇到任何奇怪的问题,但是当我在我的硬件上测试它时,设置配置标志后我的电脑会立即重新启动。

这是我尝试设置配置标志之前操作寄存器的状态:

0x00 - 00080031 -USBCMD

0x04 - 0000E008 - USBSTS

0x08 - 00000007 - USBINTR

0x0C - 00001C3D - 帧索引

0x10 - 00000000 - CTRLDSSEGMENT

0x14 - 00032000 - 周期列表库

0x18 - 00033000 - 异步列表地址

...

0x40 - 00000000 - 配置标志

0x44 - 00003000 - 端口 1

0x48 - 00003000 - 端口 2

0x4C - 00003000 - 端口 3

...还有更多值为 0x00003000 的端口。

我尝试在启动计划的情况下设置配置,也尝试在不启动计划的情况下进行配置,但结果相同。

我已经将 PCI 中断线上的中断设置为 0xB,并且我有一个处理程序(ISR),但它仅将信息打印到屏幕上,以便我可以调试。

我还注意到,当我在 USBLEGSUP 寄存器中设置位 24 时,位 16 确实会自行关闭(我写入 0x01010000)。但是我没有在 USBLEGCTLSTS 中获得所有权更改状态位 29。

assembly usb intel usb-hostcontroller
© www.soinside.com 2019 - 2024. All rights reserved.