本文將以低功耗模組Air780EPM系列開發板為例,分享FOTA應用示例要點。


一、升級包製作

LuatOS開發模式下,固件分為兩部分:

core:底層固件;

script:用户腳本;

遠程升級時可以僅升級script,也可以同時升級core+script,這為迭代和維護提供了極大的便利。

▼  全量升級包  ▼
 

僅script升級時,升級包製作説明如下:

如果只是新增一些自己的腳本邏輯,沒有更新底層,可以選擇僅腳本升級;

更新完自己腳本後,修改版本號,點擊生成量產文件,生成的量產文件中以.bin結尾的就是僅腳本升級的升級包。

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_嵌入式硬件

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_差分_02

▼  差分升級包  ▼

core+script都升級時,升級包製作説明如下:

每一次core的升級都會帶來一些網絡上的優化(例如信號差時的網絡穩定性)以及一些bug修復,所以在發佈新版本以後,用户可以先測試下core對自己腳本有無明顯影響或性能提升,然後進行遠程FOTA。

對於含core升級的話需要製作差分包,原始版本生成一次量產文件,新版本生成一次量產文件。

針對這兩個量產文件,製作一個差分文件:點擊到Luatools的主界面,依次點擊下方圖中藍框所示意的地方。

特別注意:必須使用luatools_3.0.9及其以上版本,要不差分包升級的時候可能會出問題。

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_物聯網_03


按下圖所示選擇舊版本以及新版本的固件,然後點擊開始執行即可;如果不想輸出的差分包在Luatools根目錄下,可以自行選擇一個輸出路徑;在你選擇的目錄下看,新生成的.bin文件就是升級差分包。

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_差分_04


二、FOTA升級示例demo

本demo演示的核心功能為,基於Air780EPM的兩種FOTA升級方式:

文件系統直接升級:通過模組文件系統中的文件直接升級,代碼演示通過Luatools的燒錄文件系統功能將升級包文件直接燒錄到文件系統然後升級。

分段升級:通過串口將升級包文件分多個片段發送,每個片段接收並寫入,代碼演示使用USB虛擬串口分段寫入升級包升級。

適用場景:非標準數據傳輸 -> 串口、TCP、MQTT等自定義通道升級;流程精細控制 -> 需要自定義升級前後處理邏輯。

兩種FOTA升級測試要點如下:


▼  文件系統直接升級  ▼

1)核心代碼實現

fota_file.lua核心測試代碼如下,完整demo詳見源碼倉庫最新文件。

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_差分_05

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_嵌入式硬件_06

2)文件系統升級操作步驟

參考實操教程搭建好演示硬件環境;

修改配置:在main.lua中取消require("fota_file") 的註釋,註釋掉require("fota_uart");

製作升級包:按照第一章節,使用Luatools製作升級包;

燒錄文件:

使用Luatools燒錄內核固件和腳本代碼,通過"燒錄文件系統"功能將升級包文件燒錄到設備中;

自動升級:設備啓動後會自動檢測並執行升級流程。

注意:"燒錄文件系統"功能使用

將製作好的升級包修改名字為update.bin,然後放到一個空文件夾中,在Luatools的"燒錄文件系統"功能欄中選中這個文件夾,點擊下載即可;燒錄成功後,update.bin會在文件系統根目錄下,路徑為"/update.bin"。

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_串口_07

3)查看運行日誌

開始升級,讀取文件系統目錄下的升級包文件/update.bin;

FOTA初始化 → 底層就緒 → 文件寫入 → MD5校驗通過;

升級完成,版本驗證成功;

設備自動重啓;

新版本1.0.1正常運行,新增日誌確認升級成功。

如下圖示:文件系統FOTA升級完全成功,版本從1.0.0升級到1.0.1。

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_物聯網_08

▼  串口分段升級  ▼

1)核心代碼實現

fota_uart.lua核心測試代碼如下,完整demo詳見源碼倉庫最新文件。

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_文件系統_09

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_嵌入式硬件_10

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_串口_11

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_物聯網_12

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_嵌入式硬件_13

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_串口_14

2)串口升級操作步驟

參考實操教程搭建好演示硬件環境;

修改demo腳本代碼:確保main.lua中已註釋 require("fota_file"),取消require("fota_uart") 的註釋;

製作升級包:按照第一章節,使用Luatools製作升級包;將製作好的升級包放在main.py同級目錄下;

燒錄文件:Luatools燒錄內核固件和修改前的demo腳本代碼,燒錄成功後,自動開機運行;

通過串口升級:確認設備連接到電腦的串口(虛擬USB串口);按一下板上的Powerkey鍵,然後運行Python腳本發送升級包;腳本會自動尋找設備虛擬串口,發送升級命令並傳輸fota_uart.bin文件;設備接收並驗證升級包,升級成功後會自動重啓。

3)查看運行日誌

USB虛擬串口連接,收到#FOTA起始指令;

開始分段接收升級包,每次256字節,累計5751字節;

所有數據包寫入成功,MD5校驗通過;

升級完成,重啓;

重啓後新版本1.0.2運行,新增日誌確認升級成功。

如下圖示:串口FOTA升級完全成功,版本從1.0.0升級到1.0.2。

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_物聯網_15

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_嵌入式硬件_16

嵌入式FOTA進階:文件系統直接升級與串口分段傳輸技術深度解析_差分_17

今天的內容就分享到這裏了~