基于rtthread的OTA功能实现
文章结构:
第三章 Firmware固件的打包、设计、实现与使用
前言
在《App的设计与实现》一章中,编译器编译出来的应用程序rtthread.bin 属于原始固件,并不能用于 RT-Thread OTA的升级固件,需要用户使用 OTA 固件打包器 打包生成 .rbl 后缀名的固件,然后才能进行 OTA 升级。
关键步骤
可以根据需要,选择是否对固件进行加密和压缩,提供多种压缩算法和加密算法支持 ,基本操作步骤如下:
- 选择待打包的固件
- 选择生成固件的位置
- 选择压缩算法
- 选择加密算法
- 配置加密密钥(不加密则留空)
- 配置加密 IV (不加密则留空)
- 填写固件分区名
- 填写固件版本
- 开始打包
- OTA 升级
重要:
- 加密密钥和 加密 IV 必须与 BootLoader 程序中的一致,否则无法正确加密固件
- 固件打包过程中有 固件分区名 的填写,这里注意需要填入 Flash 分区表中对应分区的名称,不能有误
(本文中应用程序区名称为 app)
RBL打包器原理
打包软件可以设置代码加密和压缩,其配置信息都存在rbl文件前96字节中:
rt-fota />fota show fm_area 0 96
00000000: 52 42 4C 00 00 02 00 00 5E A9 A4 5D 61 70 70 00
00000010: 00 00 00 00 00 00 00 00 00 00 00 00 31 2E 30 2E
00000020: 36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000030: 00 00 00 00 31 2E 30 2E 36 00 00 00 00 00 00 00
00000040: 00 00 00 00 00 00 00 00 00 00 00 00 43 33 29 0A
00000050: 47 08 F6 DA 84 BB 00 00 1C 84 00 00 C4 3D E3 B5
typedef struct {
char type[4];