STM32單片機程序遠程升級

目錄

一、程序升級原理

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功能:固件升級命令響應和升級固件下載。固件更新流程:

       boot功能:升級固件下載、本地應用程序更新。

       app功能:固件升級命令響應。固件更新流程:

兩種更新方式對比:

固件下載

好處

侷限

boot下載

download分區在片外或片內flash

1、斷網或中斷不會死機

1、固件下載功能不能被升級

2、需要較大內存

 

無download分區

1、節省存儲空間

1、固件下載功能不能被升級

2、斷網或中斷需要手動復位

app下載

download分區在片外或片內flash

1、斷網或中斷不會死機

2、固件下載功能可以升級

1、需要較大內存

  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文件格式的待升級固件,

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章