STM32单片机程序远程升级

时间:2024-03-21 13:23:53

目录

一、程序升级原理

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功能不同,更新方法也有所差异;

  1. Flash分区方案一:

分区名

起始地址

分区大小

分区位置

功能

boot

0x8000000

自定义

片内FLASH

 

app

自定义

自定义

片内FLASH

 

download

自定义

自定义

片内FLASH或片外SPI FLASH

存储待升级固件

factory

自定义

自定义

片内FLASH或片外SPI FLASH

存储出厂固件(可选)

     boot功能:本地应用程序更新。

     app功能:固件升级命令响应和升级固件下载。固件更新流程:

STM32单片机程序远程升级

       boot功能:升级固件下载、本地应用程序更新。

       app功能:固件升级命令响应。固件更新流程:

STM32单片机程序远程升级

两种更新方式对比:

固件下载

好处

局限

boot下载

download分区在片外或片内flash

1、断网或中断不会死机

1、固件下载功能不能被升级

2、需要较大内存

 

无download分区

1、节省存储空间

1、固件下载功能不能被升级

2、断网或中断需要手动复位

app下载

download分区在片外或片内flash

1、断网或中断不会死机

2、固件下载功能可以升级

1、需要较大内存

  1.    Flash分区方案二

分区名

起始地址

分区大小

分区位置

功能

boot

0x8000000

自定义

片内FLASH

下载待更新固件,更新app分区

app

自定义

自定义

片内FLASH

应用程序

固件升级流程:

STM32单片机程序远程升级

固件升级之前,通常使用的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协议从服务器下载待升级的固件。

 

STM32单片机程序远程升级

 

二、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软件架构

STM32单片机程序远程升级

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

STM32单片机程序远程升级

3、STM32通用Bootloader 功能及使用

STM32单片机程序远程升级

Bootloader获取:

STM32单片机程序远程升级

STM32单片机程序远程升级

STM32单片机程序远程升级

STM32单片机程序远程升级

不带压缩加密功能:

STM32单片机程序远程升级

带压缩加密功能:

STM32单片机程序远程升级

4、制作包含ota下载器功能的app

第一步:下载安装ota_downloader 软件包

第二步:配置FAL(Flash 抽象层)组件分区

第三部:修改IAR或KEIL里的链接脚本和中断向量的跳转地址

5、打包app待升级固件

使用RTT的OTA固件打包器,将包含ota下载功能的app制作成rbl文件格式的待升级固件,

STM32单片机程序远程升级