BootROM出错,为什么芯片可能启动不了?
BootROM代码量未必很大,但它的位置非常靠前。复杂SoC刚复位后,完整的软件环境通常还没有建立。DDR可能还没初始化,操作系统还没启动,很多驱动和日志也还不能用。
这时,BootROM要先完成早期启动判断,让系统具备加载下一阶段软件的条件。比如从哪里启动、启动模式怎么判断、镜像怎么加载、安全检查是否通过,很多关键动作都发生在这个阶段。所以BootROM一旦出错,后面的Bootloader甚至操作系统可能根本没有机会跑起来。更麻烦的是,启动早期的可观察性很弱。没有完整日志,调试入口也可能受限,Bring-up时只能靠JTAG、UART、状态寄存器、启动进度码等线索一点点排查。
BootROM验证也不能只看正常启动路径。镜像损坏、介质读取失败、安全校验失败、配置冲突、fallback/recovery路径,都应该有明确的预期行为。
它看起来只是启动链前面的一小段代码,但影响的是芯片能不能进入后续可加载、可调试、可验证的状态。






