一本精品热在线视频,久久免费视频分类,精品婷婷乱码久久久久久蜜桃,在线可以免费观看的Av

<mark id="vd61v"><dl id="vd61v"></dl></mark>
    <sub id="vd61v"><ol id="vd61v"></ol></sub>

  • <sub id="vd61v"><ol id="vd61v"></ol></sub>

    新聞中心

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

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

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

    一、系統(tǒng)簡(jiǎn)介

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

    本文引用地址:http://www.ekcard.cn/article/202506/471234.htm

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

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

    • Boot 與 APP 分離,減少耦合

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


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

    1. 基礎(chǔ)功能

    功能

    描述

    固件接收

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

    存儲(chǔ)管理

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

    固件校驗(yàn)

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

    啟動(dòng)控制

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

    狀態(tài)指示

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

    固件跳轉(zhuǎn)

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

    2. 高級(jí)功能(可選)

    功能

    描述

    固件加密

    支持對(duì) 包 AES 加密與解密

    固件簽名

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

    雙分區(qū)

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

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

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

    出廠恢復(fù)

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

    版本回退

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


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

    1. 組成模塊

     ┌─────────────────────────────┐
    │       上位機(jī) (YModem)                                                                                       │ ← 固件發(fā)送工具/Firmware_Packager
    └────────────┬────────────────┘
                 │
         串口傳輸(YModem協(xié)議)
                 ↓
    ┌─────────────────────────────┐
    │         Bootloader                                                                                                 │
    │ ┌─────────────────────────┐       │
    │ │ OTA標(biāo)志檢測(cè)                                                                                     │      │
    │ │ YModem接收與CRC校驗(yàn)                                                              │       │
    │ │ Flash寫(xiě)入管理                                                                                  │       │
    │ │ 固件信息提取與驗(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ū)

    末頁(yè)

    4KB

    保存版本、CRC、長(zhǎng)度等信息


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

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

    1. Boot 與 APP 分離

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

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

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

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

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

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

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

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

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

    • 斷電保護(hù)機(jī)制:每頁(yè)寫(xiě)入成功標(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、各類(lèi) IC 等,是所有軟件組件的硬件基礎(chǔ),是軟件邏輯的最終底層實(shí)現(xiàn)。

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

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

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

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

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

    6. 文件架構(gòu)

    ├─ document                 設(shè)計(jì)和原理性文檔
    ├─ example                  示例工程
    ├─ image                    圖片資源
    ├─ source                   mOTA 組件的源碼
    │  ├─ bootloader            mOTA 組件的 bootloader 部分
    │  │  ├─ Component          第三方庫(kù)
    │  │  ├─ Config             bootloader 配置文件
    │  │  ├─ Core               核心源碼
    │  │  │  ├─ Module          代碼模塊(可移植部分)
    │  ├─ BSP                   BSP(板級(jí)支持包)
    ├─ tools                    mOTA 組件的工具部分
    │  ├─ firmware_packager     固件打包工具
    │  ├─ YModem_Sender         基于 YModem-1K 協(xié)議的發(fā)送工具
    ├─ README.md                說(shuō)明文件
    ├─ LICENSE                  Apache-2.0 開(kāi)源許可




    關(guān)鍵詞: STM32 OTA

    評(píng)論


    相關(guān)推薦

    技術(shù)專(zhuān)區(qū)

    關(guān)閉