真实面经题目 · 原创解析
设计支持 OTA 升级的 Bootloader 时,Boot 区和 App 区如何划分?
这题考 OTA 启动分区设计,回答要覆盖 Bootloader 保护、双 App/下载区、镜像校验、切换标志和回滚。
真实面经题目 · 原创解析
这题考 OTA 启动分区设计,回答要覆盖 Bootloader 保护、双 App/下载区、镜像校验、切换标志和回滚。
支持 OTA 的 Bootloader 分区要以可恢复为核心。Bootloader 区应单独放在受保护区域,尽量小而稳定,负责校验镜像、选择启动分区和回滚。App 区常见有 A/B 双分区,当前运行 A,下载新固件到 B,下载完成后校验 CRC/Hash/签名,写入 metadata 标记 B 为 pending,重启后 Bootloader 验证 B 并启动;新 App 自检成功后再标记 confirmed。若启动失败、看门狗复位或未确认,Bootloader 回滚到 A。存储不足时也可以设计下载暂存区加单 App,但掉电恢复风险更高。分区要按 Flash 擦除块对齐,metadata 要双份或带版本计数防止掉电写坏,还要考虑版本号、防回滚、安全签名、升级进度和出厂恢复镜像。
Bootloader 是恢复入口,不应频繁 OTA 覆盖。它负责最小硬件初始化、读取升级状态、验证镜像和跳转 App,最好有写保护或严格升级机制。
新镜像写到非活动分区,旧镜像保持可启动。只有完整下载和校验通过后才切换启动标志,因此升级中断电不会破坏当前可用版本。
升级状态、活动槽位、pending/confirmed、版本号、重试次数和校验值都应存 metadata。metadata 本身也要防掉电损坏,常用双份、magic、序号和 CRC。
Bootloader 启动前验证镜像完整性和签名。新 App 第一次启动后必须自检并确认;若未确认或反复复位,Bootloader 应回滚旧版本。
擦除粒度、页写限制、XIP 地址、向量表位置、对齐、坏块和磨损都会影响分区大小和升级流程。不能只画两个区域而不考虑底层存储。
占用 Flash 较多,需要两份 App 空间和更复杂的 metadata,但换来升级原子性和回滚能力。
仅能启动不代表功能正常。确认机制能让 Bootloader 在新版本卡死或自检失败时自动回滚旧版本。
不要只背定义,要补上适用边界、常见失败现象、排查证据和验证指标,让面试官看到你能把机制落到真实系统里。