日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 揭秘STM32 OTA升級:輕松實(shí)現(xiàn)固件遠(yuǎn)程無縫更新(一)

          揭秘STM32 OTA升級:輕松實(shí)現(xiàn)固件遠(yuǎn)程無縫更新(一)

          作者:嵌入式芯視野 時(shí)間:2025-06-11 來源:今日頭條 收藏

          一、系統(tǒng)簡介

          (Over-The-Air)升級系統(tǒng)基于 系列 MCU,結(jié)合開源組件 m 實(shí)現(xiàn)遠(yuǎn)程或本地固件升級。系統(tǒng)由 Bootloader、固件打包器、固件傳輸器三部分組成,采用標(biāo)準(zhǔn)的 YModem-1K 協(xié)議進(jìn)行數(shù)據(jù)傳輸,并支持外部 Flash 存儲(chǔ)、固件完整性校驗(yàn)、斷電保護(hù)、加密與版本管理等功能。

          本文引用地址:http://yuyingmama.com.cn/article/202506/471234.htm

          系統(tǒng)目標(biāo)是實(shí)現(xiàn):

          • 可靠、安全、低侵入式的升級機(jī)制

          • Boot 與 APP 分離,減少耦合

          • 最小化對原有應(yīng)用程序的改動(dòng)


          二、實(shí)現(xiàn)功能

          1. 基礎(chǔ)功能

          功能

          描述

          固件接收

          通過串口使用 YModem 協(xié)議接收 .ota 固件

          存儲(chǔ)管理

          支持寫入內(nèi)置 Flash 或外部 SPI/QSPI Flash

          固件校驗(yàn)

          支持 CRC32 校驗(yàn)、魔術(shù)字校驗(yàn)、固件長度比對

          啟動(dòng)控制

          Bootloader 決定啟動(dòng) APP 或進(jìn)入升級模式

          狀態(tài)指示

          LED 狀態(tài)閃爍/串口輸出提示當(dāng)前進(jìn)度

          固件跳轉(zhuǎn)

          校驗(yàn)通過后跳轉(zhuǎn)執(zhí)行新 APP

          2. 高級功能(可選)

          功能

          描述

          固件加密

          支持對 包 AES 加密與解密

          固件簽名

          固件支持附加 RSA 簽名與驗(yàn)證

          雙分區(qū)

          實(shí)現(xiàn) APP A/B 區(qū)交替升級

          斷點(diǎn)續(xù)傳

          支持升級中斷后恢復(fù)上次進(jìn)度

          出廠恢復(fù)

          支持按鍵長按恢復(fù)出廠固件

          版本回退

          若 APP 啟動(dòng)失敗,自動(dòng)回退舊版本


          ? 三、系統(tǒng)架構(gòu)

          1. 組成模塊

           ┌─────────────────────────────┐
          │       上位機(jī) (YModem)                                                                                       │ ← 固件發(fā)送工具/Firmware_Packager
          └────────────┬────────────────┘
                       │
               串口傳輸(YModem協(xié)議)
                       ↓
          ┌─────────────────────────────┐
          │         Bootloader                                                                                                 │
          │ ┌─────────────────────────┐       │
          │ │ OTA標(biāo)志檢測                                                                                     │      │
          │ │ YModem接收與CRC校驗(yàn)                                                              │       │
          │ │ Flash寫入管理                                                                                  │       │
          │ │ 固件信息提取與驗(yàn)證                                                                       │       │
          │ │ App跳轉(zhuǎn) & 啟動(dòng)判斷                                                                       │       │
          │ └─────────────────────────┘        │
          └────────────┬────────────────┘
                       ↓
          ┌─────────────────────────────┐
          │             APP                                                                                                            │
          │ ┌─────────────────────────┐        │
          │ │ 功能運(yùn)行(采集/通訊等)                                                            │        │
          │ │ OTA觸發(fā) & 重啟設(shè)置標(biāo)志                                                              │        │
          │ └─────────────────────────┘        │
          └─────────────────────────────┘


          2. 分區(qū)示意(以 F4 為例)

          區(qū)域

          起始地址

          大小

          用途

          Bootloader

          0x08000000

          16KB

          固定啟動(dòng)區(qū)

          APP 主區(qū)

          0x08004000

          480KB

          正常應(yīng)用區(qū)

          OTA 緩存區(qū)(外部 Flash)

          0x90000000

          1MB+

          新固件臨時(shí)存儲(chǔ)

          固件信息區(qū)

          末頁

          4KB

          保存版本、CRC、長度等信息


          四、設(shè)計(jì)思路

          設(shè)計(jì)思路

          1. Boot 與 APP 分離

          • Bootloader 是獨(dú)立的小程序,負(fù)責(zé)固件升級與跳轉(zhuǎn),不與主程序交叉編譯

          • APP 層可最小侵入,僅在需要升級時(shí)設(shè)置跳轉(zhuǎn)標(biāo)志,重啟進(jìn)入 Bootloader

          2. 狀態(tài)機(jī)驅(qū)動(dòng)升級流程

          Bootloader 內(nèi)部采用狀態(tài)機(jī)結(jié)構(gòu)組織升級流程,提升清晰度和可維護(hù)性:

          BOOT_WAIT_TRIGGER → BOOT_OTA_MODE → BOOT_RECEIVE
             ↓                    ↓
          BOOT_FAIL         →  BOOT_VERIFY  → BOOT_SUCCESS → BOOT_JUMP_APP

          3. 安全性 & 容錯(cuò)設(shè)計(jì)

          • 加密:防止固件被截獲、篡改

          • 簽名:校驗(yàn)固件來源是否合法

          • 魔術(shù)字 + CRC32 校驗(yàn):確保接收完整

          • 斷電保護(hù)機(jī)制:每頁寫入成功標(biāo)志,重啟后按標(biāo)志恢復(fù)

          4. 固件包打包規(guī)范

          由 Firmware_Packager 工具打包,包含以下結(jié)構(gòu):

          Header(64B) | 固件內(nèi)容 | 固件尾標(biāo)志(Watermark) | 可選簽名
          • 支持自定義版本號(hào)、加密方式、簽名機(jī)制

          • 工具命令行參數(shù)靈活,可擴(kuò)展

          5. 軟件架構(gòu)

          軟件架構(gòu)

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

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

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

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

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

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

          6. 文件架構(gòu)

          ├─ document                 設(shè)計(jì)和原理性文檔
          ├─ 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 開源許可




          關(guān)鍵詞: STM32 OTA

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉