目录
二、RT-Thread STM32通用Bootloader + ota_downloader软件包oat升级
一、程序升级原理
IAP:在应用编程,指应用程序在运行过程中对User Flash的部分区域进行烧写,以更新运行的应用程序的一种对单片机flash擦写的一种编程方案。将程序分为boot程序和app应用程序;升级过程包括固件升级命令响应、升级固件下载和本地应用程序更新。
FOTA:远程固件空中升级,简单来说就是通过无线传输,接收并响应服务器端发出的固件升级命令,从远程服务器下载待升级的固件,然后更新设备端的老版本固件;分为设备端和服务器端
1、本地应用程序更新
根据单片机flash分区域不同和boot与app功能不同,更新方法也有所差异;
- Flash分区方案一:
分区名 |
起始地址 |
分区大小 |
分区位置 |
功能 |
boot |
0x8000000 |
自定义 |
片内FLASH |
|
app |
自定义 |
自定义 |
片内FLASH |
|
download |
自定义 |
自定义 |
片内FLASH或片外SPI FLASH |
存储待升级固件 |
factory |
自定义 |
自定义 |
片内FLASH或片外SPI FLASH |
存储出厂固件(可选) |
boot功能:本地应用程序更新。
app功能:固件升级命令响应和升级固件下载。固件更新流程:
boot功能:升级固件下载、本地应用程序更新。
app功能:固件升级命令响应。固件更新流程:
两种更新方式对比:
固件下载 |
好处 |
局限 |
|
boot下载 |
download分区在片外或片内flash |
1、断网或中断不会死机 |
1、固件下载功能不能被升级 2、需要较大内存 |
无download分区 |
1、节省存储空间 |
1、固件下载功能不能被升级 2、断网或中断需要手动复位 |
|
app下载 |
download分区在片外或片内flash |
1、断网或中断不会死机 2、固件下载功能可以升级 |
1、需要较大内存 |
- Flash分区方案二
分区名 |
起始地址 |
分区大小 |
分区位置 |
功能 |
boot |
0x8000000 |
自定义 |
片内FLASH |
下载待更新固件,更新app分区 |
app |
自定义 |
自定义 |
片内FLASH |
应用程序 |
固件升级流程:
固件升级之前,通常使用的Ymodem串口方式下是先在pc端使用超级终端工具准备好待升级固件,然后手动复位,进入boot引导程序。
2、固件升级命令响应 和 升级固件下载
根据传输方式的不同,大致可分为有线方法和无线方式获取升级固件。
有线传输 |
介质 |
通信协议 |
固件来源 |
RS483/232 |
YModem |
超级终端 |
|
RJ45 |
LWIP +TFTP |
TFTP服务器 |
|
LWIP +HTTP+MQTT |
HTTP服务器 |
||
USB/TF卡 |
U盘/TF卡 |
||
无线传输 |
GPRS/4G模块 |
GPRS/4G+HTTP+MQTT |
HTTP服务器 |
WIFI模块 |
WIFI+HTTP+MQTT |
HTTP服务器 |
|
蓝牙模块 |
在有线方式下,设备上电时在boot中接收输入的固件升级触发信号,如有触发则从超级终端或是U盘/TF卡下载待升级的固件。
在无线方式下,设备端利用以太网或无线通讯模组,使用MQTT协议(基于TCP/IP),通过消息队列的方式接受服务端的升级命令和升级固件版本号、大小等信息。当接收到升级指令时,设备端利用HTTP协议从服务器下载待升级的固件。
二、RT-Thread STM32通用Bootloader + ota_downloader软件包oat升级
1、使用环境
IDE |
MDK-ARM or IAR-ARM |
硬件平台 |
STM32 F1系列和F4系列 |
嵌入式操作系统 |
RT-Thread |
本地应用程序升级 |
flash分区方案一 |
升级固件下载 |
可选(YModem、HTTP) |
boot |
可配,STM32通用Bootloader,RT-Thread设备维护云自动生成 |
app |
支持ota_downloader 软件包(包含ota下载器功能) |
download(app) |
RTT的 OTA 固件打包器生成rbl文件(包含固件版本、压缩加密方式等信息) |
2、RT OAT软件架构
OTA Downloader:RTT提供的与OTA 服务器对应的客户端程序软件包,用于将OTA 固件从OTA 服务器下载到设备。通用的OTA Downloader 有Y-modem(串口升级)和HTTP OTA(网络升级)。每种升级方式都只需调用一次函数或者命令就可实现
RT OTA:RTT 开发的跨OS、跨芯片平台的固件空中升级技术(FirmwareOver-the-Air Technology),轻松实现对设备端固件的管理、升级与维护。不开源,使用在bootloader中。
FAL:(Flash Abstraction Layer) Flash 抽象层,是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作的 API
3、STM32通用Bootloader 功能及使用
Bootloader获取:
不带压缩加密功能:
带压缩加密功能:
4、制作包含ota下载器功能的app
第一步:下载安装ota_downloader 软件包
第二步:配置FAL(Flash 抽象层)组件分区
第三部:修改IAR或KEIL里的链接脚本和中断向量的跳转地址
5、打包app待升级固件
使用RTT的OTA固件打包器,将包含ota下载功能的app制作成rbl文件格式的待升级固件,