当前位置: 代码迷 >> WinCE >> imx51 USB HUB长时间工作失灵。
  详细解决方案

imx51 USB HUB长时间工作失灵。

热度:91   发布时间:2016-04-28 12:36:07.0
imx51 USB HUB长时间工作失效。急急急!!!
硬件:imx51, USB HOST:USB3317, USB HUB:USB2517 

HUB上面挂有硬盘、USB盘、读卡器、USB 电容屏,当长时间播放硬盘歌曲时(24小时以上),每当把U盘拔出,触摸屏就不能用,串口没有什么消息输出,大约过一分钟串口输出CHub::HandleDetach(void)把所有设备(function)全部Detach.
... ...
   for (UCHAR port = 1; port <= m_usbHubDescriptor.bNumberOfPorts; port++)
    {
.. ...
        if (m_ppCDeviceOnPort[port - 1] != NULL)
        {
            m_ppCDeviceOnPort[port - 1]->HandleDetach();
             delete m_ppCDeviceOnPort[port - 1];
            m_ppCDeviceOnPort[port - 1] = NULL;
        }
    }
... ...

同时串口发现CRootHub::WaitForPortStatusChange函数fSuccess返回值从0变为1(默认状态未0):
DEBUGMSG( 1, (TEXT("-CRootHub::WaitForPortStatusChange, rPort = %d, fSuccess = %d\n"), rPort, fSuccess) );

希望多多指教,刚接触USB。谢谢
------解决方案--------------------
freescale的人爱理不理,这很正常。除非你的公司是真正的大公司,他们可能会考虑支持一下,否则只能自己解决。

如果不等这么久,拔U盘没有问题的话,应该是代码的问题。
如果等那么久,一定要出现,可以确认是代码的问题。

看看有没有什么内存泄露之类的问题?多加一些打印,来分析短时间拔、与长时间拔的区别在哪里?
------解决方案--------------------
这个只能在所有可能出现的地方加打印信息,看哪里出问题了。

哥,你的设计本身就很大风险,
为什么全部接USB上?

这个硬件谁想的
你要知道USB是非常敏感的设备,稍有不慎就会出问题的。

也许你不挂那么多,就什么事情都没有。

我不信你的电路没有IIC接口,用IIC接口的电容屏幕模拟IIC都行的。