AliOS Things全链路优化-CoAP FOTA
摘要: FOTA(Firmware Over-The-Air)即空中固件升級功能;CoAP(Constrained Application Protocol),字面意思為受限的應用協議,基于UDP,專為資源有限的物聯網設備量身定制;所以AliOS Things的純CoAP FOTA就是專為資源有限的物聯網設備(如基于NB-IoT,LoRa)提供的遠程固件升級功能。
FOTA(Firmware Over-The-Air)即空中固件升級功能;CoAP(Constrained Application Protocol),字面意思為受限的應用協議,基于UDP,專為資源有限的物聯網設備量身定制;所以AliOS Things的純CoAP FOTA就是專為資源有限的物聯網設備(如基于NB-IoT,LoRa)提供的遠程固件升級功能。
1.AliOS Things1.1.2 FOTA簡介
我們先看一下當前版本(AliOS Thing1.1.2)的FOTA結構圖:
信息交互通道:指與特定的云平臺交互更新信息如版本上報、查詢,下載鏈接獲取,進度上報等控制或通知類信息;
下載通道:通過1中獲取的下載鏈接下載指定固件;
FOTA service:fota主服務;
版本管理:維護升級前后的固件版本;
Security:fota安全部分,包括通道安全(mbedtls),固件下載校驗,flash寫入校驗等;
Hal適配層:針對特定硬件的接口適配,主要指flash操作部分;
啟動參數設置/固件更新:這里分兩種情況,1.乒乓升級,直接將新固件寫入與當前程序運行分區對等的另一個分區中,下載完成后設置啟動參數讓下次程序啟動直接從FOTA下載分區啟動,每次更新來回切換;2.下載完成后設置啟動參數進入bootloader中,將下載好的固件從下載分區中復制到程序運行分區以完成固件升級。
2.CoAP塊傳輸
CoAP協議格式:
FOTA CoAP下載由客戶端像服務端請求資源,所以采用BLOCK2請求資源。
Block 格式:Option Value為變長0-3個字節的無符號數。
NUM:具有給定大小的塊序列內的塊(NUM)的相對數(從0開始編號),即塊序號
M:是否有更多塊
SZX:塊大小,取值0-6,實際每個塊的payload為2^ (4+SZX),即塊大小為16-1024Byte
NUM:表示當前Message的Payload在整個body中的編號
M:表示是否還有更多塊才能完成整個body的傳輸
SZX:當M為1時,表示當前Message的Payload的大小(2**(SZX+4));當M為0時,實際Payload為1到2**(SZX+4)Byte;
Block2出現在Request中,屬于控制性用法:
NUM:期望Response傳輸的塊號
M:無意義,設置為0
SZX:當NUM為0時,表示希望采用的塊大小;當NUM非0時,直接采用上一個接收到的Response中的塊大小
3.純CoAP FOTA
通過上節我們對CoAP塊傳輸有了比較詳細的了解,CoAP FOTA正是借助了CoAP塊傳輸功能實現完整固件的下載。如第一節FOTA框架圖,當交互通道與下載通道都走CoAP協議時,即為純CoAP FOTA,僅僅依賴UDP協議,無需資源消耗較大的TCP協議支持,甚至連TCP/IP協議棧都不用實現,從而減少code size,ram等資源占用,更重要的是CoAP對網絡帶寬/網絡穩定性要求要求都很低,說到此,可能很多人都想到了NB-IoT,LoRa環境,沒錯,我們針對這種低功耗低性能場景有備而來。CoAP FOTA流程如下:
4.上板測驗:
至此,我們對CoAP FOTA應該有了較深的理解,如果想實戰試一把,請移步 AliOS Things github,下載代碼搭建環境親自體驗一把,我們配有較豐富并持續豐富中的指導文檔,請參考https://github.com/alibaba/AliOS-Things/wiki/AliOS-Things-FOTA-Porting-Guide 功能驗證章節。
總結
以上是生活随笔為你收集整理的AliOS Things全链路优化-CoAP FOTA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 95后热搜哪些事,夸克用AI引擎发布20
- 下一篇: 腾讯安全发布安全托管服务MSS,推动网络