我正在将 Linux 移植到 ARM 平台。我正在开发的平台有一个 OTG 芯片,我想将驱动程序附加到该芯片上。它还没有 OTG 驱动程序。但是,它基于 EHCI 规范,所以我认为至少可以让主机控制器工作而无需编写全新的驱动程序。
我已将通用 EHCI HCD 平台驱动程序附加到设备,它似乎被检测到并初始化,但当我插入设备时没有中断进入。
在我花更多时间进行调试之前,我只想问一下,是否可以通过一些小的修改,在 OTG 设备上使用通用主机控制器驱动程序来仅支持 USB 主机?
谢谢
我正在将 Linux 移植到 ARM 平台。我正在开发的平台有一个 OTG 芯片,我想将驱动程序附加到该芯片上。它还没有 OTG 驱动程序。但是,它基于 EHCI 规范,所以我认为至少可以让主机控制器工作而无需编写全新的驱动程序。
我已将通用 EHCI HCD 平台驱动程序附加到设备,它似乎被检测到并初始化,但当我插入设备时没有中断进入。
在我花更多时间进行调试之前,我只想问一下,是否可以通过一些小的修改,在 OTG 设备上使用通用主机控制器驱动程序来仅支持 USB 主机?
谢谢
我的记忆太模糊无法回答这个问题所以我只能说我认为我从事的一个项目就是这样做的。如果我没记错的话,它是一个专有的 OTG 控制器,它实现了全套 EHCI 寄存器,只需对附加寄存器或位进行非常小的调整,以确定控制器是作为主机还是设备连接。尽管 USB 很复杂,但 EHCI 规范非常好用,并提供了一套相当清晰(并且行业硬件标准化!)的寄存器。如果您可以启动系统并主动转储或以其他方式查看此 EHCI 寄存器集,您应该能够很快确定您的主机控制器是否正在运行(例如,请参阅 FRINDEX 寄存器递增)以及是否检测到设备(检查相应 PORTSC 寄存器的位 0,当前连接状态)。就像我说的,寄存器集是硬件标准化的,因此只要您正确配置了 USBBASE 寄存器,驱动程序中用于转储寄存器的任何调试例程都应该可以正常工作。祝你好运!