BeagleBone Black死机

7
我们正在开发一个基于标准Angstrom系统的BeagleBone Black应用程序。使用GDB(由Netbeans远程控制),它可以愉快地运行5-10分钟,但在某个相对随机的时间点会冻结 - 心跳LED闪烁停止,需要完全重新启动。
可能的原因是连接的(USB)设备太多了。我们通过FTDI串行连接到我的开发PC(有一个客户端应用程序与BBB服务器通信),并使用4路FTDI集线器和其中的多个设备(目前为3个),以及另一个带有其他硬件附加件的单个FTDI连接。还有两个I2C设备。加上鼠标和键盘。
当然,我没有证据证明是USB引起了问题。我的软件没有发出任何信号,日志文件告诉我很少信息。我运行了系统监视器应用程序,看看是否存在内存泄漏问题,但它似乎表现良好稳定(尽管CPU占用率上升)。我想找到一种方法来彻底解决问题,并希望得到帮助。

没有反馈?好吧,这里有个手榴弹可以扔。我在我的笔记本电脑上安装了Ubuntu(+Netbeans +svn +...),成功构建和运行代码,它非常稳定,可以全天候运行(尽管I2C除外)。我们强烈怀疑BBB / Angstrom上的USB堆栈存在问题。 - Julian Gold
2个回答

7
最后,到了兔子洞的底部: http://e2e.ti.com/support/arm/sitara_arm/f/791/t/308549 看起来TI芯片有问题,具体是中断控制器,会导致当USB过于繁忙时出现“babble”中断。这会导致主机尝试复位,应用程序也因此停止运行。这就解释了为什么这个问题在Angrstrom和Debian中都存在——这根本不是堆栈/驱动程序问题,而是TI芯片的问题。痛苦!由于这个原因,我们可能不得不放弃BBB作为我们的平台首选。
从调试串口控制台输出可以确定我们的应用程序存在这个问题。
_handle_irq+0x39/0x58)
[  466.343796] [<c0008551>] (omap3_intc_handle_irq+0x39/0x58) from [<c045b95b>]
(__irq_svc+0x3b/0x5c)
[  466.359334] Exception stack(0xd2759cf8 to 0xd2759d40)
[  466.368332] 9ce0:                                                       00000000 c0849ac0
[  466.382735] 9d00: 00000000 00000000 c07a2080 00000000 d2758000 00000002 d2759db0 00000003
[  466.397178] 9d20: c0812610 d2758000 b405025a d2759d40 c0031241 c0030f4e 40000133 ffffffff
[  466.411686] [<c045b95b>] (__irq_svc+0x3b/0x5c) from [<c0030f4e>] (__do_softirq+0x46/0x174)
[  466.426346] [<c0030f4e>] (__do_softirq+0x46/0x174) from [<c0031241>] (irq_exit+0x29/0x50)
[  466.440833] [<c0031241>] (irq_exit+0x29/0x50) from [<c000c8cf>] (handle_IRQ+0x3f/0x5c)
[  466.454864] [<c000c8cf>] (handle_IRQ+0x3f/0x5c) from [<c0008551>]        (omap3_intc_handle_irq+0x39/0x58)
[  466.470777] [<c0008551>] (omap3_intc_handle_irq+0x39/0x58) from [<c045b95b>](__irq_svc+0x3b/0x5c)
[  466.486319] Exception stack(0xd2759db0 to 0xd2759df8)
[  466.495351] 9da0:                                     00000002 00000000 00007d00 00000000
[  466.509782] 9dc0: c07c81d0 c07c81d0 c07c75dc 00007d02 0000007d 00000003 c0812610 de5f4b40
[  466.524147] 9de0: 00000100 d2759df8 c0025b2d c0025bea 00000133 ffffffff
[  466.536019] [<c045b95b>] (__irq_svc+0x3b/0x5c) from [<c0025bea>] (omap3_noncore_dpll_set_rate+0x1f2/0x330)
[  466.553005] [<c0025bea>] (omap3_noncore_dpll_set_rate+0x1f2/0x330) from [<c0383273>]  (clk_change_rate+0x1b/0x52)
[  466.570813] [<c0383273>] (clk_change_rate+0x1b/0x52) from [<c03832fb>] (clk_set_rate+0x51/0x72)
[  466.586199] [<c03832fb>] (clk_set_rate+0x51/0x72) from [<c034ba29>] (cpu0_set_target+0xf9/0x198)
[  466.601754] [<c034ba29>] (cpu0_set_target+0xf9/0x198) from [<c0348c5d>] (__cpufreq_driver_target+0x4d/0x70)
[  466.618890] [<c0348c5d>] (__cpufreq_driver_target+0x4d/0x70) from [<c034b33b>] (dbs_check_cpu+0x123/0x134)
[  466.635897] [<c034b33b>] (dbs_check_cpu+0x123/0x134) from [<c034ad31>] (od_dbs_timer+0x4d/0xb0)
[  466.651283] [<c034ad31>] (od_dbs_timer+0x4d/0xb0) from [<c003c8c5>] (process_one_work+0x1b5/0x2c0)
[  466.667088] [<c003c8c5>] (process_one_work+0x1b5/0x2c0) from [<c003cca3>] (worker_thread+0x19b/0x258)
[  466.683355] [<c003cca3>] (worker_thread+0x19b/0x258) from [<c003fb8f>] (kthread+0x67/0x74)
[  466.698026] [<c003fb8f>] (kthread+0x67/0x74) from [<c000c0dd>] (ret_from_fork+0x11/0x34)
[  466.712148] drm_kms_helper: panic occurred, switching back to text console
[  407.924892] CAUTION: musb: Babble Interrupt Occurred
[  407.965570] CAUTION: musb: Babble Interrupt Occurred
[  408.026994]  gadget: high-speed config #1: Multifunction with RNDIS
[  413.918684] musb_g_ep0_irq 710: SetupEnd came in a wrong ep0stage wait

这里的要点是 BBB 还没有准备好用于主流市场。不管任何情况下,都不要将其用于工业设计中。Element14 必须了解此问题并加以解决。 - RobC

0

看起来,如果USB集线器上有其他设备进行IO操作,将鼠标插入USB集线器并将其连接到BBB可能会导致此问题。同事告诉我,在树莓派上也存在这样的问题。拔掉鼠标后,软件运行了一个多小时而没有冻结。重新插入后,大约10分钟后就会冻结。再次移除鼠标,重新运行,又已经半个小时了,没有任何问题。


太好了,难以置信。仍然会冻结,只是平均需要更长的时间。叹气。 - Julian Gold

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接