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都行的。