嵌入式主板正常生产调试的时候。我们尝尝会预留一个Uart(串口)作为debug口,用来调试设备。这个串口也是uboot和内核登入控制终端。其中在uboot引到阶段会有一个delay时间用来等待键盘输入。如果在delay时间以内,按下键盘上面的任意一个字符。uboot会停止引到程序,等待客户的下一步输入。如果在等待时间内没有任何输入。uboot就会按照预定的流程加载内核和文件系统正常启动设备。但是这样就会有一个问题,就是当串口有杂数据进入的时候我们就永远也进不了系统了,进入boot就会被打断,停止在boot状态下。在实际的生产流程中。偶尔会碰到设备启动异常卡logo的状态。当插入串口调试线产看的时候。有时会发现设备停止到如下日志的位置。这个情况大部分是串口杂波干扰导致uboot接收到了异常输入,停止了。
U-Boot 2025.04-rc3 (Mar 04 2025 - 16:58:24 +0800)
DRAM: 512 MiB
WARNING: Caches not enabled
Core: 23 devices, 11 uclasses, devicetree: embed
Flash: 128 MiB
MMC: mmci@5000: 0
Loading Environment from Flash... *** Warning - bad CRC, using default environment
In: uart@9000
Out: uart@9000
Err: uart@9000
Net: eth0: ethernet@3,02000000
Hit any key to stop autoboot: 0
=>
几乎所有的原始SDK里面的boot都是可以按任意键停止的,我们修改uboot源码。让uboot接收固定的按键停止。这样就避免了调试口接收杂波停止的情况。


675

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



