尊敬的 TI:
我尝试将 Tivaware USB 主机集线器移植到 BeagleBone Black、基本上只需按照 Tivaware 示例项目在 StarterWare 上返工即可。
我最困惑的是 usbhostenum.c 如何查找下游器件。
这是我的观察结果、
1. usbhostenum.c 中的以下3个函数似乎没有被任何其他函数/程序调用。 我将其注释掉并重新编译示例工程后、不会产生任何影响。
GetEventFlag (uint32_t ui32Event)、
USBHCDEventEnable (uint32_t ui32Index、void *pvEventDriver、uint32_t ui32Event)
USBHCDEventDisable (uint32_t ui32Index、void *pvEventDriver、uint32_t ui32Event)
2. main 函数不断调用 USBHCDMain (void)、并从 USBHCDMain (void)内部进一步调用 USBHHubMain ();
集线器成功打开后、g_sUSBHCD.piDeviceState[DEV_NUM]仍停留在 eHCDdle (位于 usbhostenum.c 的 USBHCDMain 中)、而 g_sRootHub.psPort[ui8Port].iState suded (位于 USBHubMain.c 中)中、 最后从 USBDhubhub_DevicePort[ui8Port].iState]更改为下行器件、然后从 USBDevicePort_DeviceConfigded.c、并从 duedu.eDeviceId_DeviceIdle 变为下行器件。
我不了解 g_sRootHub.psPort[ui8Port].iState 如何成为 ePortConnected。
usbhHUB.c 中的 HubIntINCallback ()具有案例 USB_EVENT_RX_Available:和案例 USB_EVENT_Scheduler:
它读回 g_ulHubChanges、该文件进一步分配给 g_ulChangeFlags、并指示 DEV_NUM 位置、即我的测试2、4、8、16。 (0已被集线器控制器占用)、这表示在 psPorts 位置1~4处查找下游器件。
出于某种原因、在我的移植代码中、USB_EVENT_Scheduler 的情况总是返回 g_ulHubChanges=0;我不确定我的移植代码是被置位、还是 USBHCPepeSchedule 实际接收到0值。
希望 TI 专家能详细介绍一下。 提前感谢。
Mike