60 秒回答模板

支持 OTA 的 Bootloader 分区要以可恢复为核心。Bootloader 区应单独放在受保护区域,尽量小而稳定,负责校验镜像、选择启动分区和回滚。App 区常见有 A/B 双分区,当前运行 A,下载新固件到 B,下载完成后校验 CRC/Hash/签名,写入 metadata 标记 B 为 pending,重启后 Bootloader 验证 B 并启动;新 App 自检成功后再标记 confirmed。若启动失败、看门狗复位或未确认,Bootloader 回滚到 A。存储不足时也可以设计下载暂存区加单 App,但掉电恢复风险更高。分区要按 Flash 擦除块对齐,metadata 要双份或带版本计数防止掉电写坏,还要考虑版本号、防回滚、安全签名、升级进度和出厂恢复镜像。

考点 分区布局
难度 真实面经题
回答目标 证明自己能设计可断电恢复、可校验、可回滚的 OTA 启动分区方案。

深入解析

01

Bootloader 要稳定且受保护

Bootloader 是恢复入口,不应频繁 OTA 覆盖。它负责最小硬件初始化、读取升级状态、验证镜像和跳转 App,最好有写保护或严格升级机制。

02

A/B 分区提升原子性

新镜像写到非活动分区,旧镜像保持可启动。只有完整下载和校验通过后才切换启动标志,因此升级中断电不会破坏当前可用版本。

03

metadata 决定启动选择

升级状态、活动槽位、pending/confirmed、版本号、重试次数和校验值都应存 metadata。metadata 本身也要防掉电损坏,常用双份、magic、序号和 CRC。

04

验证和回滚是核心

Bootloader 启动前验证镜像完整性和签名。新 App 第一次启动后必须自检并确认;若未确认或反复复位,Bootloader 应回滚旧版本。

05

分区设计受 Flash 约束

擦除粒度、页写限制、XIP 地址、向量表位置、对齐、坏块和磨损都会影响分区大小和升级流程。不能只画两个区域而不考虑底层存储。

易错点

  • 升级时直接覆盖当前 App,断电后设备不可启动。
  • 只做 CRC 不做签名,无法防止恶意固件或错误来源。
  • metadata 单点写入无保护,掉电后启动状态损坏。
  • 没有 pending/confirmed 和回滚机制,把能跳转当成 OTA 完成。

面试官追问

A/B 分区缺点是什么?

占用 Flash 较多,需要两份 App 空间和更复杂的 metadata,但换来升级原子性和回滚能力。

为什么新 App 要主动确认?

仅能启动不代表功能正常。确认机制能让 Bootloader 在新版本卡死或自检失败时自动回滚旧版本。

面试里怎么把这个答案讲得更工程化?

不要只背定义,要补上适用边界、常见失败现象、排查证据和验证指标,让面试官看到你能把机制落到真实系统里。