目前我们(开源)项目目前的一个里程碑是完成USB支持,因此我们目前正在努力研究驱动程序。我们目前的开发重点是x86和ARM上的EHCI(特别是OMAP35xx SoC,仅在板上硅的EHCI)。我们在各种模拟器中运行顺畅 - VMware(免费和非免费版本),QEMU和VirtualBox。
然而,当我们在真实硬件上进行测试时,我们绝对无处可去。我们系统中设备枚举的基本例程如下:
我们的时序延迟基本上与Linux的驱动程序相同(如果有的话,更长)。
根据USB 2.0规范,此行为是“端口错误”(第11.8节),但说实话,我没有看到如何将其端口错误描述转换为我们的驱动程序的工作解决方案。由于我们是一个开源项目,我们也没有钱出去购买适当的硬件USB协议分析仪来调查线路上发生了什么。
有没有人遇到类似的问题,并且知道解决方案?
答案 0 :(得分:2)
我们已经确定此问题的原因一直是时间问题,但在我们的案例中,问题太多很多的延迟。
通过修改我们的qTD / QH创建代码来创建一个具有多个与之关联的链接qTD的QH,我们已经能够在物理硬件上成功运行。
我们还必须使用先前尚未实现的te EHCI 64位数据结构。