如果在通电之前插入USB设备,我们的嵌入式linux系统将无法识别该USB设备。有什么建议吗?
我们正在开发一种小型嵌入式设备。该设备是运行OpenEmbedded linux的gumstix Overo板。我们的开发工作几乎已完全完成,并且遇到了我们无法弄清的最奇怪的错误。 我们有一个USB设备(分光光度计),它具有USB2.0连接和用于光源的外部电源。典型的行为是先插入电源,然后再通过USB连接到主机。当设备检测到USB连接时,设备会启动并启用光源和风扇。然后该设备便可以被主机系统使用。 问题在于,如果在打开Gumstix之前将设备插入Gumstix,则显然系统未检测到USB设备(因此无法打开)。在正常情况下,通过插入USB电缆初始化连接后,光谱仪会自动打开并可供系统使用(通常可以通过“ lsusb”看到)。这些事情都没有发生。没有通过“ lsusb”检测到设备,也没有可见的任何dmesg错误。 好像没有插入设备。 如果我们在系统启动后拔下USB电缆并将其重新插入,则设备确实可以正常工作。它会打开并显示在usb总线上,我们可以使用驱动程序进行访问。 在任何其他台式机或笔记本电脑上,插入光谱仪时打开或关闭主机系统都没有关系。我认为这种行为是“正常的”-在启动时探测并初始化USB系统,然后USB设备联机。换句话说,只要系统启动后插入USB设备,我们的系统即可正常运行。不幸的是,这在我们的最终产品中是不可能的-一切都立即实现。 附加信息:1)当系统关闭时,我们尝试将闪存驱动器连接到系统。引导系统,按预期方式使闪存驱动器联机2)没有有关Spectro或USB设备的消息(使用dmesg)。“ lsusb”仅列出USB集线器/控制器。从字面上看,好像设备不存在且未插入电源。3)我们尝试了gumstix的全新图像和去年的较旧图像。两个图像都有此问题。我们使用的所有3个gumstix设备均存在此问题。 有没有人有什么建议?据我所知,实际上不可能对USB系统进行完整的“重新引导”,而这是“拔出”和“重新插入” USB设备的完整模拟。我感觉正在发生的事情是,USB总线上没有任何初始探针会触发USB握手,但这在某种程度上是特定于光谱的。这似乎是内核问题,或者至少是内核如何初始化USB子系统的问题。我不太确定。 我已经尝试过gumstix邮件列表,但似乎没有人以前见过此问题。关于从哪里开始寻找的任何建议都是很棒的。 谢谢!布莱恩 output etc. $ uname -a Linux overo 2.6.33 #1 Tue Apr 27 08:35:38 PDT 2010 armv7l GNU/Linux When the system is up and running and spectro is plugged in (working as intended), this is …