术语
在了解系统更新之前先明确几个概念
系统更新概念
刷机
刷机一般会清除存储介质上的所有的数据, 并重新进行存储分区、坏块管理、固件写入等不可逆工作,因此刷机会导致用户所有数据丢失
刷机一般要借助专门的刷机工具进行
刷机一般在工程调试、生产的时候进行,针对客户机的刷机操作一定要慎重
AiBurn 刷机工具也可以刷单个分区,从而不破坏其他分区的数据,不过有可能会因为各个分区的数据不匹配而导致系统异常
升级
升级不会进行磁盘分区等操作,更多的是进行现有系统的更新,并且升级流程一般都会有保护客户现有数据的逻辑,并且支持升级中断,固件损坏等 异常场景的处理,因此是一种相对安全的客户机的系统更新方案
OTA(Over The Air)升级指通过网络方式下载升级包到本地,再升级系统
升级因为功能强大,对固件制作有一定要求,Luban SDK 中的 OTA, ota_emmc 两个项目是升级的示例
升级功能对存储的要求会比较大,一般要求1.5 - 3倍的存储空间
Recovery 升级
固件包含一个小的 Recovry 系统,升级的时候先切换到 Recovry 系统,再更新整个系统,特点是:
- 固件只有一个正式运行系统
- Recovery 只负责更新系统,功能简单而健壮
- Recovery 系统一般比较小以节省存储空间
- Recovery 系统来保证升级一定成功
AIC SDK 使用的是 Recovery 升级
双系统升级
也叫 Ping-Pong 系统, 特点是:
- 固件同时有两个系统,一个运行,一个备份
- 双系统导致存储容量增大一倍
- 系统更新时当前运行系统更新备份的系统
- 升级成功后重启切换到新系统,原系统作为备份
双系统对存储要求比较高,不符合嵌入式的精简原则
系统更新途径
SD卡:SD卡作为存储介质存放要更新的固件更新系统
USB 线:设备通过 USB 线和计算机相连,通过计算机上的刷机工具:AiBurn 更新系统
U盘:U盘作为存储介质存放要更新的固件更新系统
网络:通过网络(有线、无线、CAN 等)的方式下载升级包到本地,再更新系统