在嵌入式設(shè)備遠(yuǎn)程升級(jí)(FOTA)中,文件系統(tǒng)直接升級(jí)與串口分段傳輸技術(shù)是實(shí)現(xiàn)高效、穩(wěn)定升級(jí)的核心進(jìn)階方案。文件系統(tǒng)直接升級(jí)通過精簡數(shù)據(jù)寫入路徑,降低存儲(chǔ)占用與操作延遲;串口分段升級(jí)則依托串口通道,將升級(jí)包拆分為小段進(jìn)行傳輸與校驗(yàn),規(guī)避網(wǎng)絡(luò)波動(dòng)影響。本文將從技術(shù)背景、實(shí)現(xiàn)原理到落地實(shí)踐,系統(tǒng)詳解兩種技術(shù)的實(shí)現(xiàn)邏輯與適配要點(diǎn),助力開發(fā)者優(yōu)化FOTA升級(jí)體驗(yàn)。
FOTA(Firmware Over-The-Air)是固件遠(yuǎn)程升級(jí)的簡稱,用于設(shè)備固件的遠(yuǎn)程更新和維護(hù)。
LuatOS提供了靈活的FOTA升級(jí)方案,支持通過文件系統(tǒng)直接升級(jí)和串口分段升級(jí),可以滿足不同場景下的固件更新需求;支持靈活的存儲(chǔ)位置配置,可以使用內(nèi)部存儲(chǔ)或外部SPI Flash進(jìn)行固件升級(jí),同時(shí)提供了完整的升級(jí)流程控制和狀態(tài)查詢功能。
主要優(yōu)勢包括:
遠(yuǎn)程維護(hù):無需現(xiàn)場操作即可完成設(shè)備固件更新;
故障修復(fù):快速修復(fù)已部署設(shè)備的軟件缺陷;
功能升級(jí):為設(shè)備增加新功能,提升產(chǎn)品價(jià)值;
成本節(jié)約:大幅降低設(shè)備維護(hù)和升級(jí)成本;
安全保障:支持完整性校驗(yàn),確保升級(jí)過程安全可靠。
本文將以低功耗模組Air780EPM系列開發(fā)板為例,分享FOTA應(yīng)用示例要點(diǎn)。
一、升級(jí)包制作
LuatOS開發(fā)模式下,固件分為兩部分:
core:底層固件;
script:用戶腳本;
遠(yuǎn)程升級(jí)時(shí)可以僅升級(jí)script,也可以同時(shí)升級(jí)core+script,這為迭代和維護(hù)提供了極大的便利。
關(guān)于全量升級(jí)和差分升級(jí)說明如下:
僅script腳本升級(jí)時(shí):對(duì)于Air780EXX系列、Air8000系列、Air8101系列是全量升級(jí)。
core+script都升級(jí)時(shí):對(duì)于Air780EXX系列、Air8000系列是差分升級(jí);對(duì)于Air8101系列是全量升級(jí)。
升級(jí)包制作詳見:https://docs.openluat.com/air780epm/luatos/app/ota/fota_core/
▼ 全量升級(jí)包 ▼
僅script升級(jí)時(shí),升級(jí)包制作說明如下:
如果只是新增一些自己的腳本邏輯,沒有更新底層,可以選擇僅腳本升級(jí);
更新完自己腳本后,修改版本號(hào),點(diǎn)擊生成量產(chǎn)文件,生成的量產(chǎn)文件中以.bin結(jié)尾的就是僅腳本升級(jí)的升級(jí)包。


▼ 差分升級(jí)包 ▼
core+script都升級(jí)時(shí),升級(jí)包制作說明如下:
每一次core的升級(jí)都會(huì)帶來一些網(wǎng)絡(luò)上的優(yōu)化(例如信號(hào)差時(shí)的網(wǎng)絡(luò)穩(wěn)定性)以及一些bug修復(fù),所以在發(fā)布新版本以后,用戶可以先測試下core對(duì)自己腳本有無明顯影響或性能提升,然后進(jìn)行遠(yuǎn)程FOTA。
對(duì)于含core升級(jí)的話需要制作差分包,原始版本生成一次量產(chǎn)文件,新版本生成一次量產(chǎn)文件。
針對(duì)這兩個(gè)量產(chǎn)文件,制作一個(gè)差分文件:點(diǎn)擊到Luatools的主界面,依次點(diǎn)擊下方圖中藍(lán)框所示意的地方。
特別注意:必須使用luatools_3.0.9及其以上版本,要不差分包升級(jí)的時(shí)候可能會(huì)出問題。

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

二、FOTA升級(jí)示例demo
本demo演示的核心功能為,基于Air780EPM的兩種FOTA升級(jí)方式:
文件系統(tǒng)直接升級(jí):通過模組文件系統(tǒng)中的文件直接升級(jí),代碼演示通過Luatools的燒錄文件系統(tǒng)功能將升級(jí)包文件直接燒錄到文件系統(tǒng)然后升級(jí)。
分段升級(jí):通過串口將升級(jí)包文件分多個(gè)片段發(fā)送,每個(gè)片段接收并寫入,代碼演示使用USB虛擬串口分段寫入升級(jí)包升級(jí)。
適用場景:非標(biāo)準(zhǔn)數(shù)據(jù)傳輸 -> 串口、TCP、MQTT等自定義通道升級(jí);流程精細(xì)控制 -> 需要自定義升級(jí)前后處理邏輯。
兩種FOTA升級(jí)測試要點(diǎn)如下:
▼ 文件系統(tǒng)直接升級(jí) ▼
1)核心代碼實(shí)現(xiàn)
fota_file.lua核心測試代碼如下,完整demo詳見源碼倉庫最新文件。


2)文件系統(tǒng)升級(jí)操作步驟
參考實(shí)操教程搭建好演示硬件環(huán)境;
修改配置:在main.lua中取消require("fota_file") 的注釋,注釋掉require("fota_uart");
制作升級(jí)包:按照第一章節(jié),使用Luatools制作升級(jí)包;
燒錄文件:
使用Luatools燒錄內(nèi)核固件和腳本代碼,通過"燒錄文件系統(tǒng)"功能將升級(jí)包文件燒錄到設(shè)備中;
自動(dòng)升級(jí):設(shè)備啟動(dòng)后會(huì)自動(dòng)檢測并執(zhí)行升級(jí)流程。
注意:"燒錄文件系統(tǒng)"功能使用
將制作好的升級(jí)包修改名字為update.bin,然后放到一個(gè)空文件夾中,在Luatools的"燒錄文件系統(tǒng)"功能欄中選中這個(gè)文件夾,點(diǎn)擊下載即可;燒錄成功后,update.bin會(huì)在文件系統(tǒng)根目錄下,路徑為"/update.bin"。

3)查看運(yùn)行日志
開始升級(jí),讀取文件系統(tǒng)目錄下的升級(jí)包文件/update.bin;
FOTA初始化 → 底層就緒 → 文件寫入 → MD5校驗(yàn)通過;
升級(jí)完成,版本驗(yàn)證成功;
設(shè)備自動(dòng)重啟;
新版本1.0.1正常運(yùn)行,新增日志確認(rèn)升級(jí)成功。
如下圖示:文件系統(tǒng)FOTA升級(jí)完全成功,版本從1.0.0升級(jí)到1.0.1。

▼ 串口分段升級(jí) ▼
1)核心代碼實(shí)現(xiàn)
fota_uart.lua核心測試代碼如下,完整demo詳見源碼倉庫最新文件。






2)串口升級(jí)操作步驟
參考實(shí)操教程搭建好演示硬件環(huán)境;
修改demo腳本代碼:確保main.lua中已注釋 require("fota_file"),取消require("fota_uart") 的注釋;
制作升級(jí)包:按照第一章節(jié),使用Luatools制作升級(jí)包;將制作好的升級(jí)包放在main.py同級(jí)目錄下;
燒錄文件:Luatools燒錄內(nèi)核固件和修改前的demo腳本代碼,燒錄成功后,自動(dòng)開機(jī)運(yùn)行;
通過串口升級(jí):確認(rèn)設(shè)備連接到電腦的串口(虛擬USB串口);按一下板上的Powerkey鍵,然后運(yùn)行Python腳本發(fā)送升級(jí)包;腳本會(huì)自動(dòng)尋找設(shè)備虛擬串口,發(fā)送升級(jí)命令并傳輸fota_uart.bin文件;設(shè)備接收并驗(yàn)證升級(jí)包,升級(jí)成功后會(huì)自動(dòng)重啟。
3)查看運(yùn)行日志
USB虛擬串口連接,收到#FOTA起始指令;
開始分段接收升級(jí)包,每次256字節(jié),累計(jì)5751字節(jié);
所有數(shù)據(jù)包寫入成功,MD5校驗(yàn)通過;
升級(jí)完成,重啟;
重啟后新版本1.0.2運(yùn)行,新增日志確認(rèn)升級(jí)成功。
如下圖示:串口FOTA升級(jí)完全成功,版本從1.0.0升級(jí)到1.0.2。



今天的內(nèi)容就分享到這里了~
審核編輯 黃宇
-
FOTA
+關(guān)注
關(guān)注
0文章
31瀏覽量
8193
發(fā)布評(píng)論請(qǐng)先 登錄
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之FatFs文件系統(tǒng)介紹
LuatOS FOTA升級(jí)全解析
LuatOS FOTA升級(jí):新手也能秒懂的操作指南
零基礎(chǔ)入門:用libfota2實(shí)現(xiàn)第三方服務(wù)器FOTA升級(jí)服務(wù)
FOTA升級(jí)全流程教學(xué):基于libfota2與第三方服務(wù)器搭建
從小白到大牛:Linux嵌入式系統(tǒng)開發(fā)的完整指南
明晚8點(diǎn)|睿擎文件系統(tǒng)實(shí)戰(zhàn):從開發(fā)到發(fā)布全流程解析
【直播預(yù)告】下周三晚8點(diǎn)|睿擎文件系統(tǒng)實(shí)戰(zhàn):從開發(fā)到發(fā)布全流程解析
睿擎派文件系統(tǒng)指南:從開發(fā)到發(fā)布全流程實(shí)踐 | 技術(shù)解析
文件系統(tǒng),使用iar編譯報(bào)錯(cuò),gcc可以正常編譯,為什么?
技術(shù)貼|【RK3588】ELF 2開發(fā)板如何添加exFAT和NTFS文件系統(tǒng)格式
Linux三大主流文件系統(tǒng)解析
飛凌嵌入式ElfBoard ELF 1板卡-文件系統(tǒng)簡介
服務(wù)器數(shù)據(jù)恢復(fù)—ocfs2文件系統(tǒng)被格式化為Ext4文件系統(tǒng)的數(shù)據(jù)恢復(fù)案例
RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階7 向系統(tǒng)中添加一個(gè)系統(tǒng)調(diào)用
FOTA升級(jí)進(jìn)階指南:文件系統(tǒng)直寫與串口分段傳輸技術(shù)詳解!
評(píng)論