系统与软件 · D11
启动链与 Bootloader
从上电到你的业务代码跑起来,中间隔着一整条启动链。排查「板子不启动」、做固件 OTA、把内核参数改对,全都绕不开这条链。嵌入式岗位面试里,bootloader 是高频考题。
要学什么
- 两条启动链:MCU 线(ROM→Flash 向量表→SystemInit→main,以 STM32 为例)与 SoC 线(BootROM→SPL/U-Boot→设备树→kernel→init,以 Jetson/树莓派为例)
- U-Boot 实操:环境变量、bootcmd/bootargs、从 eMMC/SD/网络(TFTP)加载内核
- 设备树(Device Tree):DTS 把硬件描述与驱动解耦,改外设不用改内核
- 固件升级:双分区 A/B、IAP/DFU、升级失败的回滚与断电保护
四条路线需要多深
算法不需要
系统软件用过
嵌入式电控精通
机械结构不需要
「精通」= 能从零推导 / 能手写实现 / 能判断别人的方案对不对;「用过」= 能调起来、能改参数;「知道」= 能听懂、能提问。
怎么算学会了
能画出给定板子的完整启动链(从上电到 main/init),能在 U-Boot 命令行里改启动参数把系统带起来,能向别人解释设备树到底解决了什么问题。
常见错误
- 改了设备树源文件但没重新编译烧写 dtb,或烧错了分区,误判成「我的代码没生效」
- OTA 只用单分区,升级中途断电整机变砖,没有 A/B 回滚