1. RV1106 NOR Flash在线OTA升级方案解析
在嵌入式设备开发中,固件升级是个永恒的话题。最近在调试瑞芯微RV1106平台的OTA功能时,发现官方文档对NOR Flash的支持说明比较简略。经过两周的实战摸索,终于实现了不在uboot阶段的完整OTA方案,这里把核心实现思路和踩坑经验做个系统梳理。
RV1106作为瑞芯微面向物联网领域推出的低功耗芯片,其NOR Flash方案在成本敏感型设备中应用广泛。与NAND Flash相比,NOR的最大优势是支持XIP(就地执行),但擦写寿命和容量是短板。传统升级方式需要进入uboot环境,这对终端用户极不友好。我们实现的方案具有以下特点:
- 用户无感知的后台下载
- 双区备份确保升级安全
- 支持断点续传和校验回滚
- 完整日志上报机制
2. 技术方案选型与设计
2.1 存储架构设计
RV1106的典型NOR Flash布局如下(以16MB为例):
| 分区名称 | 起始地址 | 大小 | 用途说明 |
|---|---|---|---|
| uboot | 0x000000 | 512KB | 引导程序 |
| env | 0x080000 | 256KB | 环境变量 |
| kernel | 0x0C0000 | 3MB | 内核镜像 |
| rootfs | 0x3C0000 | 10MB | 只读根文件系统 |
| ota_cache | 0xDC0000 | 2MB | OTA下载缓存区 |
| userdata | 0xFC0000 | 256KB | 用户数据区 |
关键设计点:
- 保留最后2MB作为OTA缓存区,采用乒乓缓冲策略
- rootfs分区设置为只读,升级时重新创建文件系统
- 使用SquashFS压缩只读分区节省空间
2.2 升级流程设计
完整OTA流程分为六个阶段:
1
