uboot源码中提供的进入uboot命令行的方式为输入任意键。这样有一个隐患,当调试串口有干扰输入信号时,系统会将干扰信号识别为任意键而进入uboot,从而无法正常引导操作系统,这样对产品将是灾难性的影响。
解决或者规避该问题的方法之一是将任意键改为组合键减小异常几率,当然归根结底还是要从硬件的角度避免干扰信号的产生。
修改方法:
不同版本需要修改的文件不一样,可能是common/autoboot.c或者common/main.c。
或者在uboot源码根目录搜索关键字’Hit any key’寻找该文件。
$find .|xargs grep -ri ‘Hit any key’
./common/autoboot.c: printf(“Hit any key to stop autoboot: %2d “, bootdelay);
代码片段:
static int __abortboot(int bootdelay)
{
int abort = 0;
unsigned long ts;
#ifdef CONFIG_MENUPROMPT
prin

通过将uboot默认的任意键启动命令行修改为特定的组合键(如ctrl+q/Q,值为17),可以降低串口干扰导致异常进入uboot的风险。这种方法涉及修改uboot源码中的autoboot.c或main.c文件,通过查找'Hit any key'定位正确位置。更改后,当检测到tstc()返回真并获取到按键值17时,系统进入uboot命令行。
最低0.47元/天 解锁文章
7260

被折叠的 条评论
为什么被折叠?



