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