推薦一個很贊的單片機OTA開源項目
mOTA 是一個專為 32 位微控制器(MCU)設計的 OTA(空中下載)組件,提供了一整套固件更新解決方案。
以下是 mOTA 的詳細功能介紹:
本組件實現了以下功能:
- 固件包完整性檢查: 自動檢測固件 CRC 值,驗證固件數據的準確性。
- 固件加密: 支持 AES256 加密算法,提高固件的安全性。
- APP 完整性檢查: 支持在 APP 運行前進行完整性檢查,以確認可運行的固件通過數據校驗。
- 斷電保護: 當固件更新過程中(含下載、解密、更新等過程),任何一個環(huán)節(jié)斷電,設備再次上電時,依然能確保有可用的固件。(需在 bootloader_config.h 中配置為雙分區(qū)或三分區(qū))
- 固件水印檢查: 可檢測下載的固件包是否攜帶了特殊的水印,用于確認非第三方或非匹配的固件包,防止錯誤更新。
- 固件自動更新: 當 download 或 factory 分區(qū)有可用的固件,且 APP 分區(qū)為空或 APP 分區(qū)不是最新版本的固件時,可配置為自動開始更新。
- 恢復出廠設置: factory 分區(qū)設計用于存放穩(wěn)定版的固件,當設備需要恢復出廠設置時,該固件會被更新至 APP 分區(qū)。
- 無須 deinit : 我們知道,固件更新完畢后從 bootloader 跳轉至 APP 前需對所用的外設 deinit ,以使外設恢復至上電時的初始狀態(tài)。本組件的 bootloader 包含了下載器的功能,當使用復雜的外設收取固件包時, deinit 也將變得復雜,甚至很難排除對 APP 的影響。為此,本組件采用了再入 bootloader 的方式,給 APP 提供一個相當于剛上電的外設環(huán)境,免去了 deinit 的代碼。
- 功能可裁剪: 本組件通過功能裁剪(bootloader_config.h)可實現單分區(qū)、雙分區(qū)、三分區(qū)的方案切換、是否配置解密組件、是否自動更新 APP 、是否檢查 APP 完整性、 是否使用 SPI Flash 等功能。
- 固件存放至 SPI flash : 本組件可通過 bootloader_config.h 配置 download 分區(qū)和 factory 分區(qū)的所在位置為片內 flash 或 SPI flash ,使用了 SFUD (Serial Flash Universal Driver) 作為 SPI flash 的底層驅動庫。若使用的 SPI flash 支持 SFDP (Serial Flash Discovable Parameters) ,則可在不修改任何源代碼的情況下更換其它品牌型號的 SPI flash 。若不支持 SFDP ,SFUD 中已有對應 SPI flash 參數表的,也可做到在不修改任何源代碼的情況下更換其它品牌型號的 SPI flash 。
軟件架構
- 硬件層描述的是運算器件和邏輯器件,如 CPU、ADC、TIMER、各類 IC 等,是所有軟件組件的硬件基礎,是軟件邏輯的最終底層實現。
- 硬件抽象層是位于驅動與硬件電路之間的接口層,將硬件抽象化。它隱藏了特定平臺的硬件接口細節(jié),為驅動層提供抽象化的硬件接口,使其具有硬件無關性。
- 驅動層通過調用硬件抽象層的開放接口,實現一定的邏輯功能后封裝,提供給上層軟件調用。
- 數據傳輸層負責收發(fā)數據,對外開放的是數據發(fā)送與接收相關的接口,屏蔽了通訊接口的邏輯代碼,使其易于修改為其他類型的通訊接口。
- 協(xié)議析構層將調用數據傳輸層的數據收發(fā)接口進行封包發(fā)送與收包解析,通過實現公有協(xié)議或自定義的協(xié)議,完成對數據的構造和解析。
- 應用層負責業(yè)務邏輯代碼的實現,通過調用其他層封裝的接口,完成頂層邏輯功能。
├─ document 設計和原理性文檔
├─ example 示例工程
├─ image 圖片資源
├─ source mOTA 組件的源碼
│ ├─ bootloader mOTA 組件的 bootloader 部分
│ │ ├─ Component 第三方庫
│ │ ├─ Config bootloader 配置文件
│ │ ├─ Core 核心源碼
│ │ │ ├─ Module 代碼模塊(可移植部分)
│ ├─ BSP BSP(板級支持包)
├─ tools mOTA 組件的工具部分
│ ├─ firmware_packager 固件打包工具
│ ├─ YModem_Sender 基于 YModem-1K 協(xié)議的發(fā)送工具
├─ README.md 說明文件
├─ LICENSE Apache-2.0 開源許可
*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。