banner
NEWS LETTER

嵌入式 Linux 系列 22:固件版本、配置版本和升级迁移

Scroll down

固件升级不只是替换二进制。随着版本迭代,配置字段会增加、删除、改名,服务行为也会变化。如果没有版本管理和迁移机制,OTA 后很容易出现旧配置导致新程序启动失败。

一、固件版本要可追踪

建议系统里有:

1
2
/etc/firmware_version
/etc/build_info

内容示例:

1
2
3
4
version=1.4.2
git_commit=abcdef0
build_time=2026-06-26 22:05:00
profile=release

应用启动时也打印一次版本。现场排查第一步就是确认版本。

二、配置也要有版本

配置文件示例:

1
2
3
4
5
6
7
8
9
{
"config_version": 2,
"device_name": "gateway-001",
"timezone": "Asia/Shanghai",
"mqtt": {
"host": "mqtt.example.com",
"port": 8883
}
}

没有 config_version,程序就很难判断是否需要迁移。

三、配置迁移流程

启动时:

  1. 读取配置。
  2. 校验 JSON。
  3. 检查 config_version
  4. 逐级迁移到当前版本。
  5. 写回新配置。
  6. 启动业务。

不要跳着写一次性迁移。更稳的是:

1
v1 -> v2 -> v3

这样从任意旧版本升级都能处理。

四、迁移失败怎么办

迁移失败不能直接让设备不可用。

建议策略:

  • 保存坏配置副本。
  • 使用默认配置启动。
  • 上报迁移失败状态。
  • 保留日志。
  • 必要时进入恢复模式。

例如:

1
2
/data/config/device.json.bad
/data/config/device.json.default

五、版本兼容检查

OTA 前检查:

  • 当前固件版本。
  • 目标固件版本。
  • 是否允许升级。
  • 是否允许降级。
  • 配置版本是否支持迁移。
  • 硬件版本是否匹配。

不要让不匹配的固件刷到设备上。

六、验收清单

至少测试:

  • v1 配置升级到 v2。
  • 缺字段配置。
  • 多余字段配置。
  • JSON 损坏。
  • 配置迁移中断电。
  • 降级后配置是否还能处理。

配置迁移是 OTA 可靠性的一部分。

其他文章
目录导航 置顶
  1. 1. 一、固件版本要可追踪
  2. 2. 二、配置也要有版本
  3. 3. 三、配置迁移流程
  4. 4. 四、迁移失败怎么办
  5. 5. 五、版本兼容检查
  6. 6. 六、验收清单
请输入关键词进行搜索