OTA 流程步骤

← OTA | ← 主页


双备份区 OTA 方案:外挂 Flash (W25Q64) 的 A/B 双区 + EEPROM 标志位,APP 下载 + Bootloader 解密搬运。

整体流程

APP 运行 → 后台下载固件到外挂 Flash A区 → 校验通过写 Flag → 复位
    ↓
Bootloader → 检查 Flag → 解密 A区→B区(1K分段) → 备份当前 APP 到 A区 → 搬 B区到片上 Flash → 跳转 APP

复位后首先执行 Bootloader,所以 APP 切换必须复位一次。


1. APP 阶段

1.1 后台下载固件到 A 区域

  • 独立线程执行,不影响手表等设备的正常使用
  • 支持断点续传,应对网络不稳定
  • 固件下载到外挂 Flash 的 A 区域(512KB)

1.2 校验与置 Flag

  • 下载完成后 CRC 校验,确认固件完整性
  • 校验通过 → 将升级 Flag 写入 EEPROM,通知 Bootloader

2. Bootloader 阶段

2.1 检查 Flag

  • Bootloader 启动时读取 EEPROM 中的 Flag
  • Flag 有效才执行升级,避免无效操作

2.2 解密固件(A 区 → B 区)

  • 将 A 区加密固件分段(每次 1K)读入 SRAM 解密,转存到 B 区
  • 分段处理原因:SRAM 太小装不下完整固件;1K 正好匹配 Flash 擦除单位

2.3 备份当前 APP(片上 Flash → A 区)

  • 将当前正常运行的 APP 备份到 A 区(覆盖已解密完的原固件)
  • 用途:新固件异常时可回退到旧版本

2.4 搬移固件到片上 Flash(B 区 → 片上 APP 区)

  • 将 B 区已解密固件写入 STM32 片上 Flash 的 APP 区域
  • 完成后修改 Flag,防止下次重启再次迁移
  • 重启整机

2.5 跳转与确认

  • 跳转到片上 Flash 的 APP 区域
  • APP 启动后再次修改 Flag,确认启动成功(防止这个改的app有bug)

3. 优势与局限

优势局限
随时升级,不受场景限制依赖无线通信稳定性
方便新增功能和修复漏洞固件被篡改则存在安全风险
延长设备使用寿命需要额外存储(双区 + 备份)

4. 注意事项

  1. 通信稳定:确保设备与服务器连接可靠,避免升级中断
  2. 固件校验:下载/写入前严格 CRC 校验,防止固件损坏
  3. 备份旧固件:写入新固件前备份,升级失败可回退
  4. 安全措施:加密通信、验证数字签名,防篡改
  5. 充分测试:实际部署前完整测试升级流程