mOTA簡介
mOTA 是一款專為 32 位 MCU 開發(fā)的 OTA 組件,組件包含了 bootloader 、固件打包器 (Firmware_Packager) 、固件發(fā)送器 三部分。
固件更新流程:
????源碼地址:
https://gitee.com/DinoHaw/mOTA 作者:DinoHaw
mOTA 中的 m 可意為 mini 、 micro 、 MCU ( Microcontroller Unit ),而 OTA ( Over-the-Air Technology ),即空中下載技術,根據(jù)維基百科的定義, OTA 是一種為設備分發(fā)新軟件、配置,乃至更新加密密鑰(為例如移動電話、數(shù)字視頻轉(zhuǎn)換盒或安全語音通信設備——加密的雙向無線電)的方法。 OTA 的一項重要特征是,一個中心位置可以向所有用戶發(fā)送更新,其不能拒絕、破壞或改變該更新,并且該更新為立即應用到頻道上的每個人。用戶有可能“拒絕” OTA 更新,但頻道管理者也可以將其踢出頻道。由此可得出 OTA 技術幾個主要的特性:
一個中心可向多個設備分發(fā)更新資料(固件);
更新資料一旦發(fā)送便不可被更改;
設備可以拒絕更新;
中心可以排除指定的設備,使其不會接收到更新資料。
mOTA功能
該組件實現(xiàn)了以下功能:
固件包完整性檢查:自動檢測固件 CRC 值,保證固件數(shù)據(jù)的可靠性。
固件加密:支持 AES256 加密算法,提高固件的安全性。
APP 完整性檢查:支持 APP 運行前進行完整性檢查,以確認運行的固件無數(shù)據(jù)缺陷。
斷電保護:當固件更新過程中(含下載、解密、更新等過程),任何一個環(huán)節(jié)斷電,設備再次上電時,依然能確保有可用的固件。(需配置為至少雙分區(qū))
固件水印檢查:可檢測固件包是否攜帶了特殊的水印,確認非第三方或非匹配的固件包。
固件自動更新:當 download 或 factory 分區(qū)有可用的固件,且 APP 分區(qū)為空或 APP 分區(qū)不是最新版本的固件時,可配置為自動開始更新。
恢復出廠設置:factory 分區(qū)存放穩(wěn)定版的固件,當設備需要恢復出廠設置時,該固件會被更新至 APP 分區(qū)。
無須 deinit :我們知道,固件更新完畢后從 bootloader 跳轉(zhuǎn)至 APP 前需要對所用的外設進行 deinit ,恢復至上電時的初始狀態(tài)。本組件的 bootloader 包含了下載器的功能,當使用復雜的外設收取固件包時, deinit 也將變得復雜,甚至很難排除對 APP 的影響。為此,本組件采用了再入 bootloader 的方式,給 APP 提供一個相當于剛上電的外設環(huán)境,免去了 deinit 的代碼。
功能可裁剪:本組件通過功能裁剪可實現(xiàn)單分區(qū)、雙分區(qū)、三分區(qū)的方案切換、是否配置解密組件、是否自動更新 APP 、是否檢查 APP 完整性、 是否使用 SPI Flash (待實現(xiàn)) 。
固件存放至 SPI flash :本組件可通過 user_config.h 配置 download 分區(qū)和 factory 分區(qū)的所在位置為片內(nèi) flash 或 SPI flash ,使用了 SFUD (Serial Flash Universal Driver) 作為 SPI flash 的底層驅(qū)動庫。若使用的 SPI flash 支持 SFDP (Serial Flash Discovable Parameters) ,則可在不修改任何源代碼的情況下更換其它品牌型號的 SPI flash 。若不支持 SFDP ,SFUD 中已有對應 SPI flash 參數(shù)表的話,也可做到在不修改任何源代碼的情況下更換其它品牌型號的 SPI flash 。
mOTA軟件架構
硬件層描述的是運算器件和邏輯器件,如CPU、ADC、TIMER、各類IC等,是所有軟件組件的硬件基礎,是軟件邏輯的最終底層實現(xiàn)。
硬件抽象層是位于驅(qū)動與硬件電路之間的接口層,將硬件抽象化。它隱藏了特定平臺的硬件接口細節(jié),為驅(qū)動層提供抽象化的硬件接口,使其具有硬件無關性。
驅(qū)動層通過調(diào)用硬件抽象層的開放接口,實現(xiàn)一定的邏輯功能后封裝,提供給上層軟件調(diào)用。
數(shù)據(jù)傳輸層負責收發(fā)數(shù)據(jù),對外開放的是數(shù)據(jù)發(fā)送與接收相關的接口,屏蔽了通訊接口的邏輯代碼,使其易于修改為其他類型的通訊接口。
協(xié)議析構層將調(diào)用數(shù)據(jù)傳輸層的數(shù)據(jù)收發(fā)接口進行封包發(fā)送與收包解析,通過實現(xiàn)用戶的自定義協(xié)議,完成對數(shù)據(jù)的構造和解析。
應用層負責業(yè)務邏輯代碼的實現(xiàn),通過調(diào)用其他層封裝的接口,完成頂層邏輯功能。
審核編輯:湯梓紅
-
mcu
+關注
關注
146文章
17824瀏覽量
360071 -
OTA
+關注
關注
7文章
604瀏覽量
36178 -
軟件架構
+關注
關注
0文章
64瀏覽量
10456 -
組件
+關注
關注
1文章
529瀏覽量
18287 -
mota
+關注
關注
0文章
3瀏覽量
2339
原文標題:一款專為32位MCU開發(fā)的OTA組件
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
怎樣去理解和掌握一款MCU呢
怎樣挑選一款MCU平臺進行嵌入式系統(tǒng)開發(fā)
開發(fā)一款射頻SOC藍牙芯片
快速掌握一款新MCU的方法
快速應用一款新MCU的方法有哪些
新版火狐瀏覽器:一款專為VR開發(fā)的網(wǎng)絡瀏覽器
如何學習一款新型的MCU

如何快速掌握一款新的MCU?

如何實現(xiàn)MCU開發(fā)和OTA升級
一款專為32位MCU開發(fā)的OTA組件-mOTA
介紹一款帶12位AD的1.5K OTP型MCU—PMS121
介紹一款集成5通道有效精度18位的?Δ ADC的8位MCU

評論