概述
目录
一、程序升级原理
1、本地应用程序更新
2、固件升级命令响应 和 升级固件下载
二、RT-Thread STM32通用Bootloader + ota_downloader软件包oat升级
1、使用环境
2、RT OAT软件架构
3、STM32通用Bootloader 功能及使用
4、制作包含ota下载器功能的app
5、打包app待升级固件
一、程序升级原理
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和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文件格式的待升级固件,
最后
以上就是淡定丝袜为你收集整理的STM32单片机OTA程序升级的全部内容,希望文章能够帮你解决STM32单片机OTA程序升级所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复