0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一款專為32位MCU開發(fā)的OTA組件

STM32嵌入式開發(fā) ? 來(lái)源:STM32嵌入式開發(fā) ? 2023-02-09 10:40 ? 次閱讀

mOTA簡(jiǎn)介

mOTA 是一款專為 32 位 MCU 開發(fā)的 OTA 組件,組件包含了 bootloader 、固件打包器 (Firmware_Packager) 、固件發(fā)送器 三部分。

固件更新流程:

f605f798-a796-11ed-bfe3-dac502259ad0.png ????源碼地址:

https://gitee.com/DinoHaw/mOTA 作者:DinoHaw

mOTA 中的 m 可意為 mini 、 micro 、 MCU ( Microcontroller Unit ),而 OTA ( Over-the-Air Technology ),即空中下載技術(shù),根據(jù)維基百科的定義, OTA 是一種為設(shè)備分發(fā)新軟件、配置,乃至更新加密密鑰(為例如移動(dòng)電話、數(shù)字視頻轉(zhuǎn)換盒或安全語(yǔ)音通信設(shè)備——加密的雙向無(wú)線電)的方法。 OTA 的一項(xiàng)重要特征是,一個(gè)中心位置可以向所有用戶發(fā)送更新,其不能拒絕、破壞或改變?cè)摳?,并且該更新為立即?yīng)用到頻道上的每個(gè)人。用戶有可能“拒絕” OTA 更新,但頻道管理者也可以將其踢出頻道。由此可得出 OTA 技術(shù)幾個(gè)主要的特性:

一個(gè)中心可向多個(gè)設(shè)備分發(fā)更新資料(固件);

更新資料一旦發(fā)送便不可被更改;

設(shè)備可以拒絕更新;

中心可以排除指定的設(shè)備,使其不會(huì)接收到更新資料。

mOTA功能

該組件實(shí)現(xiàn)了以下功能:

固件包完整性檢查:自動(dòng)檢測(cè)固件 CRC 值,保證固件數(shù)據(jù)的可靠性。

固件加密:支持 AES256 加密算法,提高固件的安全性。

APP 完整性檢查:支持 APP 運(yùn)行前進(jìn)行完整性檢查,以確認(rèn)運(yùn)行的固件無(wú)數(shù)據(jù)缺陷。

斷電保護(hù):當(dāng)固件更新過(guò)程中(含下載、解密、更新等過(guò)程),任何一個(gè)環(huán)節(jié)斷電,設(shè)備再次上電時(shí),依然能確保有可用的固件。(需配置為至少雙分區(qū))

固件水印檢查:可檢測(cè)固件包是否攜帶了特殊的水印,確認(rèn)非第三方或非匹配的固件包。

固件自動(dòng)更新:當(dāng) download 或 factory 分區(qū)有可用的固件,且 APP 分區(qū)為空或 APP 分區(qū)不是最新版本的固件時(shí),可配置為自動(dòng)開始更新。

恢復(fù)出廠設(shè)置:factory 分區(qū)存放穩(wěn)定版的固件,當(dāng)設(shè)備需要恢復(fù)出廠設(shè)置時(shí),該固件會(huì)被更新至 APP 分區(qū)。

無(wú)須 deinit :我們知道,固件更新完畢后從 bootloader 跳轉(zhuǎn)至 APP 前需要對(duì)所用的外設(shè)進(jìn)行 deinit ,恢復(fù)至上電時(shí)的初始狀態(tài)。本組件的 bootloader 包含了下載器的功能,當(dāng)使用復(fù)雜的外設(shè)收取固件包時(shí), deinit 也將變得復(fù)雜,甚至很難排除對(duì) APP 的影響。為此,本組件采用了再入 bootloader 的方式,給 APP 提供一個(gè)相當(dāng)于剛上電的外設(shè)環(huán)境,免去了 deinit 的代碼。

功能可裁剪:本組件通過(guò)功能裁剪可實(shí)現(xiàn)單分區(qū)、雙分區(qū)、三分區(qū)的方案切換、是否配置解密組件、是否自動(dòng)更新 APP 、是否檢查 APP 完整性、 是否使用 SPI Flash (待實(shí)現(xiàn)) 。

固件存放至 SPI flash :本組件可通過(guò) user_config.h 配置 download 分區(qū)和 factory 分區(qū)的所在位置為片內(nèi) flash 或 SPI flash ,使用了 SFUD (Serial Flash Universal Driver) 作為 SPI flash 的底層驅(qū)動(dòng)庫(kù)。若使用的 SPI flash 支持 SFDP (Serial Flash Discovable Parameters) ,則可在不修改任何源代碼的情況下更換其它品牌型號(hào)的 SPI flash 。若不支持 SFDP ,SFUD 中已有對(duì)應(yīng) SPI flash 參數(shù)表的話,也可做到在不修改任何源代碼的情況下更換其它品牌型號(hào)的 SPI flash 。

mOTA軟件架構(gòu)

f619d718-a796-11ed-bfe3-dac502259ad0.png

硬件層描述的是運(yùn)算器件和邏輯器件,如CPU、ADC、TIMER、各類IC等,是所有軟件組件的硬件基礎(chǔ),是軟件邏輯的最終底層實(shí)現(xiàn)。

硬件抽象層是位于驅(qū)動(dòng)與硬件電路之間的接口層,將硬件抽象化。它隱藏了特定平臺(tái)的硬件接口細(xì)節(jié),為驅(qū)動(dòng)層提供抽象化的硬件接口,使其具有硬件無(wú)關(guān)性。

驅(qū)動(dòng)層通過(guò)調(diào)用硬件抽象層的開放接口,實(shí)現(xiàn)一定的邏輯功能后封裝,提供給上層軟件調(diào)用。

數(shù)據(jù)傳輸層負(fù)責(zé)收發(fā)數(shù)據(jù),對(duì)外開放的是數(shù)據(jù)發(fā)送與接收相關(guān)的接口,屏蔽了通訊接口的邏輯代碼,使其易于修改為其他類型的通訊接口。

協(xié)議析構(gòu)層將調(diào)用數(shù)據(jù)傳輸層的數(shù)據(jù)收發(fā)接口進(jìn)行封包發(fā)送與收包解析,通過(guò)實(shí)現(xiàn)用戶的自定義協(xié)議,完成對(duì)數(shù)據(jù)的構(gòu)造和解析。

應(yīng)用層負(fù)責(zé)業(yè)務(wù)邏輯代碼的實(shí)現(xiàn),通過(guò)調(diào)用其他層封裝的接口,完成頂層邏輯功能。

f6430c50-a796-11ed-bfe3-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16885

    瀏覽量

    349916
  • OTA
    OTA
    +關(guān)注

    關(guān)注

    7

    文章

    564

    瀏覽量

    35105
  • 軟件架構(gòu)
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    10268
  • 組件
    +關(guān)注

    關(guān)注

    1

    文章

    503

    瀏覽量

    17784
  • mota
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    2293

原文標(biāo)題:一款專為32位MCU開發(fā)的OTA組件

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    分享一款不錯(cuò)的基于STM32W108的32無(wú)線MCU RF解決方案

    分享一款不錯(cuò)的基于STM32W108的32無(wú)線MCU RF解決方案
    發(fā)表于 05-21 06:07

    怎樣去理解和掌握一款MCU

    任何一款MCU,其基本原理和功能都是大同小異,所不同的只是其外圍功能模塊的配置及數(shù)量、指令系統(tǒng)等。對(duì)于指令系統(tǒng),雖然形式上看似千差萬(wàn)別,但實(shí)際上只是符號(hào)的不同,其所代表的含義、所要完成的功能和尋址
    發(fā)表于 11-01 07:02

    怎樣挑選一款MCU平臺(tái)進(jìn)行嵌入式系統(tǒng)開發(fā)

    如今,嵌入式系統(tǒng)開發(fā)往往基于平臺(tái)模式。MCU平臺(tái)包括MCU及其相關(guān)器件(外延器件、配套器件等),集成開發(fā)環(huán)境(開發(fā)板、
    發(fā)表于 11-03 08:42

    開發(fā)一款射頻SOC藍(lán)牙芯片

    芯片產(chǎn)品從定義到面向市場(chǎng),大約3~6個(gè)月時(shí)間。然后以藍(lán)牙為代表的射頻技術(shù),與MCU微控制器的設(shè)計(jì)制造應(yīng)用流程有諸多不同:開發(fā)一款射頻SOC藍(lán)牙芯片的周期遠(yuǎn)遠(yuǎn)長(zhǎng)于開發(fā)
    發(fā)表于 11-10 06:49

    快速掌握一款MCU的方法

    任何一款MCU,其基本原理和功能都是大同小異,所不同的只是其外圍功能模塊的配置及數(shù)量、指令系統(tǒng)等。對(duì)于指令系統(tǒng),雖然形式上看似千差萬(wàn)別,但實(shí)際上只是符號(hào)的不同,其所代表的含義、所要完成的功能和尋址
    發(fā)表于 02-08 06:48

    快速應(yīng)用一款MCU的方法有哪些

    在工作中,有時(shí)往往會(huì)因?yàn)轫?xiàng)目進(jìn)度要求需要用一款自己以前未曾使用過(guò)的MCU來(lái)進(jìn)行產(chǎn)品的開發(fā),而且進(jìn)度要求很急,為此,我結(jié)合自己使用多款MCU的經(jīng)驗(yàn),談
    發(fā)表于 02-08 06:05

    新版火狐瀏覽器:一款專為VR開發(fā)的網(wǎng)絡(luò)瀏覽器

    今年早些時(shí)候,火狐瀏覽器Firefox的開發(fā)者M(jìn)ozilla宣布,他們正在開發(fā)一款新版本的火狐瀏覽器,這款瀏覽器專為VR和AR頭戴設(shè)備設(shè)計(jì)?,F(xiàn)在該公司宣布他們想法已經(jīng)實(shí)現(xiàn),F(xiàn)iref
    發(fā)表于 10-01 16:30 ?3617次閱讀

    如何學(xué)習(xí)一款新型的MCU

    任何一款MCU,其基本原理和功能都是大同小異,所不同的只是其外圍功能模塊的配置及數(shù)量、指令系統(tǒng)等。對(duì)于指令系統(tǒng),雖然形式上看似千差萬(wàn)別,但實(shí)際上只是符號(hào)的不同,其所代表的含義、所要完成的功能和尋址
    發(fā)表于 10-26 09:06 ?9次下載
    如何學(xué)習(xí)<b class='flag-5'>一款</b>新型的<b class='flag-5'>MCU</b>

    如何快速掌握一款新的MCU

    任何一款MCU,其基本原理和功能都是大同小異,所不同的只是其外圍功能模塊的配置及數(shù)量、指令系統(tǒng)等。對(duì)于指令系統(tǒng),雖然形式上看似千差萬(wàn)別,但實(shí)際上只是符號(hào)的不同,其所代表的含義、所要完成的功能和尋址
    發(fā)表于 12-05 09:51 ?10次下載
    如何快速掌握<b class='flag-5'>一款</b>新的<b class='flag-5'>MCU</b>?

    如何實(shí)現(xiàn)MCU開發(fā)OTA升級(jí)

    本文以依托 GC211 和秉火開發(fā)板,講述如何實(shí)現(xiàn)MCU開發(fā)OTA升級(jí)。 用戶如果將開發(fā)了的產(chǎn)品發(fā)布上線銷售,后期需要更新固件和程序,就需
    的頭像 發(fā)表于 10-28 09:31 ?3958次閱讀

    推薦一款實(shí)用的32MCU-OTA組件

    mOTA 是一款專為 32 MCU 開發(fā)OTA 組件
    的頭像 發(fā)表于 12-22 11:00 ?982次閱讀

    針對(duì)單片機(jī)開發(fā)的輕量級(jí)OTA組件

    今天為大家分享一款開源的,專為單片機(jī)開發(fā)的輕量級(jí) OTA 組件:mOTA。
    的頭像 發(fā)表于 12-26 09:36 ?1338次閱讀

    一款專為32MCU開發(fā)OTA組件-mOTA

    今天為大家分享一款開源的,專為單片機(jī)開發(fā)的輕量級(jí) OTA 組件,挺有參考和學(xué)習(xí)意義的。
    的頭像 發(fā)表于 04-04 09:18 ?962次閱讀

    介紹一款帶12AD的1.5K OTP型MCU—PMS121

    PMS121是一款帶12AD的1.5K OTP型MCU,主要功能和PMS171B基本完全致,差別就在于PMS171B的規(guī)格是8ADC,
    的頭像 發(fā)表于 12-28 14:52 ?1257次閱讀

    介紹一款集成5通道有效精度18的?Δ ADC的8MCU

    HS23P6622L /HS23P6625L 是一款集成了5 通道有效精度18 的?Δ ADC 的8 MCU,內(nèi)置了可配置的LDO。MCU
    的頭像 發(fā)表于 03-11 15:06 ?669次閱讀
    介紹<b class='flag-5'>一款</b>集成5通道有效精度18<b class='flag-5'>位</b>的?Δ ADC的8<b class='flag-5'>位</b><b class='flag-5'>MCU</b>