我正在努力在 Beaglebone Black 上安装一个定制系统。事情大部分时间都在工作,但每隔一段时间,系统就会在开机时无法启动。连接串行调试电缆时不会发生这种情况(这样我就可以看到 u-boot 和内核消息。)
但是,我发现,在极少数情况下,如果我连接串行电缆,我发现我正坐在 u-boot 提示符下。如果我手动设置 u-boot 以从那里加载内核和所有内容,我可以启动只是找到(它可以读取 eMMC 等)。
我的第一个想法是串行线路上有某种噪音导致 u-boot 中断(我相信默认会在 2 秒内中断空间)。但是,我重新编译了 u-boot 以使用 0 秒延迟(不等待空格键),但这并没有解决问题。
我怎样才能弄清楚为什么 u-boot 在引导期间没有连接串行电缆就停止了(因为这会使问题消失;Heisenbug)?我可以访问是否启用了任何类型的日志记录?
有一次,我有一块板子,将 uart RX 引脚接地。所以u-boot总是看到一个按键。
不知道你用的是什么版本...
在
/common/autoboot.c
功能
static int abortboot_normal(int bootdelay)
在返回之前添加该行
abort = 0;
这将返回没有按下任何键。