固件升级不只是替换二进制。随着版本迭代,配置字段会增加、删除、改名,服务行为也会变化。如果没有版本管理和迁移机制,OTA 后很容易出现旧配置导致新程序启动失败。
一、固件版本要可追踪
建议系统里有:
1 | /etc/firmware_version |
内容示例:
1 | version=1.4.2 |
应用启动时也打印一次版本。现场排查第一步就是确认版本。
二、配置也要有版本
配置文件示例:
1 | { |
没有 config_version,程序就很难判断是否需要迁移。
三、配置迁移流程
启动时:
- 读取配置。
- 校验 JSON。
- 检查
config_version。 - 逐级迁移到当前版本。
- 写回新配置。
- 启动业务。
不要跳着写一次性迁移。更稳的是:
1 | v1 -> v2 -> v3 |
这样从任意旧版本升级都能处理。
四、迁移失败怎么办
迁移失败不能直接让设备不可用。
建议策略:
- 保存坏配置副本。
- 使用默认配置启动。
- 上报迁移失败状态。
- 保留日志。
- 必要时进入恢复模式。
例如:
1 | /data/config/device.json.bad |
五、版本兼容检查
OTA 前检查:
- 当前固件版本。
- 目标固件版本。
- 是否允许升级。
- 是否允许降级。
- 配置版本是否支持迁移。
- 硬件版本是否匹配。
不要让不匹配的固件刷到设备上。
六、验收清单
至少测试:
- v1 配置升级到 v2。
- 缺字段配置。
- 多余字段配置。
- JSON 损坏。
- 配置迁移中断电。
- 降级后配置是否还能处理。
配置迁移是 OTA 可靠性的一部分。
- 本文链接: https://blog.hansong.icu/2026/06/26/Embedded_Linux_Series_22_Version_Config_Migration/
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。