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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

分享一些嵌入式實現(xiàn)OTA升級的常見技術

麥克泰技術 ? 來源:CSDN ? 2023-02-17 11:30 ? 次閱讀

OTA的應用比較廣泛,今天給大家分享一些嵌入式實現(xiàn)OTA升級的常見技術。

一、簡介

1.1 概念

OTA:Over-the-Air Technology,即空中下載技術。

OTA升級:通過OTA方式實現(xiàn)固件或軟件的升級。

只要是通過無線通信方式實現(xiàn)升級的,都可以叫OTA升級,比如網絡/藍牙

通過有線方式進行升級,叫本地升級,比如通過UART,USB或者SPI通信接口來升級設備固件。

1.2 優(yōu)點

1.通過OTA方式,可以對分布在各地的設備進行軟件升級,而不必讓運維人員各地奔波。

2.物聯(lián)網平臺支持通過OTA方式進行設備固件升級,是智能設備修復系統(tǒng)漏洞、實現(xiàn)系統(tǒng)升級的手段。

3.在迅速變化和發(fā)展的物聯(lián)網市場,新的產品需求不斷涌現(xiàn),因此對于智能硬件設備的更新需求就

變得空前高漲,設備不再像傳統(tǒng)設備一樣一經出售就不再變更。通過固件升級用戶提供更好的服務。

1.3 實現(xiàn)原理

核心流程:

1.制作升級包

2.下載升級包

3.驗簽升級包

4.更新程序

e2f5ce36-ae70-11ed-bfe3-dac502259ad0.png

下載方式:

不管采用OTA方式還是有線通信方式升級,下載升級包的方式包括后臺式下載和非后臺式下載兩種模式。

后臺式下載:

在升級的時候,新固件在后臺悄悄下載,即新固件下載屬于應用程序功能的一部分,在新固件下載過程中,應用可以正常使用,也就是說整個下載過程對用戶來說是無感的,下載完成后,系統(tǒng)再跳到BootLoader程序,由BootLoader完成新固件覆蓋老固件的操作。

比如智能手機升級Android或者iOS系統(tǒng)都是采用后臺式方式,新系統(tǒng)下載過程中,手機可以正常使用。

e301396a-ae70-11ed-bfe3-dac502259ad0.png

非后臺式下載:

在升級的時候,系統(tǒng)需要先從應用程序跳入到BootLoader程序,由BootLoader進行新固件下載工作,下載完成后BootLoader繼續(xù)完成新固件覆蓋老固件的操作,至此升級結束。

早先的功能機就是采用非后臺來升級操作系統(tǒng)的,即用戶需要先長按某些按鍵進入bootloader模式,然后再進行升級,整個升級過程中手機正常功能都無法使用。

e30f0392-ae70-11ed-bfe3-dac502259ad0.png

新舊固件覆蓋模式:

新固件替換老固件覆蓋的兩種方式:雙區(qū)模式和單區(qū)模式。

雙區(qū)模式:

雙區(qū)模式中老固件和新固件在flash中各占一塊bank(存儲區(qū))。假設老固件放在bank0(運行區(qū))中,新固件放在bank1(下載區(qū))中,升級的時候,應用程序先把新固件下載到bank1中,只有當新固件下載完成并校驗成功后,系統(tǒng)才會跳入BootLoader程序,然后擦除老固件所在的bank0區(qū),并把bank1的新固件拷貝到bank0中。

后臺式下載必須采用雙區(qū)模式進行升級。

優(yōu)點:

升級過程中出現(xiàn)問題或者新固件有問題,它還可以選擇之前的老固件老系統(tǒng)繼續(xù)執(zhí)行而不受其影響。

缺點:

多占用flash空間的一個存儲區(qū),在系統(tǒng)資源比較緊張的時候較為困難。

e31ea9a0-ae70-11ed-bfe3-dac502259ad0.png

單區(qū)模式:

單區(qū)模式的非后臺式下載只有一個bank0(運行區(qū)),老固件和新固件共享這一個bank0。升級的時候,進入bootloader程序后先擦除老固件,然后直接把新固件下載到同一個bank中,下載完成后校驗新固件的有效性,新固件有效升級完成,否則要求重來。

優(yōu)點:

跟雙區(qū)模式相比,單區(qū)模式節(jié)省了Flash空間的一個bank,在系統(tǒng)資源比較緊張的時候,單區(qū)模式是一個不錯的選擇。

缺點:

如果升級過程中出現(xiàn)問題或者新固件有問題,單區(qū)模式碰到這種情況就只能一直待在bootloader中,然后等待再次升級嘗試,此時設備的正常功能已無法使用,從用戶使用這個角度來說,可以說此時設備已經“變磚”了。

相比較,雙區(qū)模式雖然犧牲了很多存儲空間,但是換來了更好的升級體驗。

e32a98c8-ae70-11ed-bfe3-dac502259ad0.png

二、MCU OTA升級

以MCU(微控制器)固件升級為例,講解嵌入式裸機程序的OTA升級。由于裸機固件是固化在設備的存儲器(如flash)中,即存儲器中保存的是機器碼,對MCU進行OTA固件升級,也就是要實現(xiàn)通過OTA方式將存儲器中舊固件的機器碼替換為新固件的機器碼。

e33abd48-ae70-11ed-bfe3-dac502259ad0.png

數字簽名

簽名:

A給B發(fā)送消息,A先計算出消息的消息摘要,然后使用自己的私鑰加密消息摘要,被加密的消息摘要就是簽名。

驗簽:

B收到消息后,也會使用和A相同的方法計算消息摘要,然后用A的公鑰解密簽名,并與自己計算出來的消息

摘要進行比較,如果相同則說明消息是A發(fā)送給B的,同時,A也無法否認自己發(fā)送消息給B的事實。

(B使用A的公鑰解密簽名文件的過程,叫做"驗簽")

e3486a56-ae70-11ed-bfe3-dac502259ad0.png

密碼學基礎概念:

1.什么是消息摘要?

2.什么是非對稱加解密?私鑰與公鑰?

3.什么是數字簽名?

數字簽名的作用:

保證數據完整性,機密性和發(fā)送方角色的不可抵賴性。

消息摘要函數:

MD4、MD5、SHA-1、SHA-256、SHA-384、SHA-512

數字簽名算法:

RSA、Rabin方式、ElGamal方式、DSA

2.1 制作升級包

通過簽名工具使用簽名算法對固件進行數字簽名,簽名后的文件即為升級包。

升級包的內容一般包括firmware、header和signature value。

Firmware:固件

Header:頭部信息。存放配置信息,如版本號、產品類型等。

Signature value:簽名值。對firmware和header簽名后的值。

e35c64ac-ae70-11ed-bfe3-dac502259ad0.png

簽名工具:

上位機軟件,能計算固件的簽名值,并將固件打包為升級包的格式。

固件簽名:

上位機軟件先計算整個固件的消息摘要,使用非對稱密碼的私鑰對摘要進行加密,

被加密后的消息摘要數據就是簽名值。

固件簽名的意義:

計算hash值可以識別固件是否被篡改和偽裝,確保固件的完整性。

使用非對稱秘鑰簽名方便后續(xù)驗證升級包身份的合法性。

2.2 下載升級包

根據上位機軟件和MCU設備約定的通信協(xié)議,上位機軟件將升級包通過OTA方式發(fā)送給MCU設備,

MCU設備收到數據后,根據通信協(xié)議解析出升級包的數據,并將升級包的數據保存到存儲器中。

通信協(xié)議的作用:

通訊雙方約定俗成地用于數據交流的格式。

下載的方式:

1.在應用程序中下載:后臺式

2.在BootLoader中下載:非后臺式

2.3 驗簽升級包

MCU設備接收完所有的升級包后,先計算升級包中固件的摘要,然后使用非對稱秘鑰的

公鑰解密升級包的簽名值,如果解密出來的固件摘要與自己計算的摘要相同,則驗簽成功。

2.4 更新固件

驗簽成功保證了固件的完整性和合法性后,MCU設備從應用程序進入BootLoader程序,

在BootLoader程序中將flash中的新固件數據搬運到舊固件的存儲區(qū),將其覆蓋。

然后BootLoader程序啟動固件運行,此時固件為新固件。

flash固件數據更新:

擦除flash,寫flash。

三、Linux OTA升級

Linux系統(tǒng)的組成:

主要由三大部分組成,包括uboot(引導啟動程序)、kernel(內核)和rootfs(根文件系統(tǒng))。

三者在flash中的分區(qū)如下:

應用程序存放于rootfs。

e368e056-ae70-11ed-bfe3-dac502259ad0.png

Linux系統(tǒng)的啟動流程:

e378338a-ae70-11ed-bfe3-dac502259ad0.png

3.1 系統(tǒng)升級

Linux系統(tǒng)由ubootkernel ootfs三大部分組成,對Linux系統(tǒng)進行升級,也就是對flash中這三個分區(qū)的數據進行更新替換。

由于ubootkernel ootfs在flash分區(qū)中是以二進制數據存儲的,與MCU固件在flash中存的是二進制數據一樣,包括ubootkernel ootfs的升級文件也是以二進制數方式直接寫入到對應的Flash分區(qū)。其升級方式與MCU固件的升級原理基本是一致的。

一般可在uboot中下載升級包來升級ubootkernel ootfs ,與MCU在BootLoader程序中完成升級類似。

e382dcf4-ae70-11ed-bfe3-dac502259ad0.png

3.2 應用程序升級

在Linux系統(tǒng)中,應用程序是存放在文件系統(tǒng)中,并以可執(zhí)行程序文件的方式存在,其在系統(tǒng)中就是文件,這與MCU固件存放在flash分區(qū)的方式不同。

應用程序的升級流程與MCU固件、Linux系統(tǒng)升級基本一致。應用程序的升級除了可以升級可執(zhí)行文件外,還可以升級配置文件等。

應用程序升級流程:

制作升級包(打包簽名工具)、下載升級包(下載工具)、升級包驗簽、程序更新

與MCU OTA升級區(qū)別:

制作升級包:將應用程序相關的文件(可執(zhí)行程序、庫文件、配置文件等)打包為壓縮包

作為一個整體再進行簽名。

e394a15a-ae70-11ed-bfe3-dac502259ad0.png

升級包下載和驗簽通過后,將壓縮包解壓,可以得到應用程序的相關文件。

應用程序的更新,可以通過啟動應用程序的程序來更新,如啟動腳本、啟動程序,類似MCU升級的BootLoader程序作用。

更新方式:

1.直接覆蓋舊程序;

2.保留舊程序,執(zhí)行新程序;

直接覆蓋舊程序:

e3a8d58a-ae70-11ed-bfe3-dac502259ad0.png

保留舊程序,執(zhí)行新程序:

pingpong操作

e3be1576-ae70-11ed-bfe3-dac502259ad0.png

四、總結

OTA升級的核心:

e3d25fea-ae70-11ed-bfe3-dac502259ad0.png






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5060

    文章

    18975

    瀏覽量

    302122
  • USB接口
    +關注

    關注

    9

    文章

    699

    瀏覽量

    55538
  • 無線通信
    +關注

    關注

    58

    文章

    4497

    瀏覽量

    143353
  • Linux系統(tǒng)

    關注

    4

    文章

    590

    瀏覽量

    27318
  • OTA
    OTA
    +關注

    關注

    7

    文章

    566

    瀏覽量

    35106

原文標題:好文分享| MCU、Linux實現(xiàn)OTA固件升級要點

文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    對于嵌入式一些認識

    本來學嵌入式就不簡單,所以大家都會去找一些學習嵌入式的方法或步驟什么的,如果是你去學嵌入式的話,肯定也不會例外,下面可以起來了解下
    發(fā)表于 05-25 17:40

    梳理嵌入式Linux的一些知識

    前言這篇文章簡單我們來起梳理嵌入式Linux的一些知識,方便于一些想跟我樣想要由單片機進階到嵌入式
    發(fā)表于 11-04 07:33

    分享一些嵌入式方面的基礎知識

    同時更關鍵的是為了補齊一些嵌入式方面的基礎知識,做如下筆記,持續(xù)記錄:1.嵌入式系統(tǒng)基礎知識(1) 嵌入式系統(tǒng)組成嵌入式系統(tǒng)是:以應用為中心
    發(fā)表于 11-08 07:41

    嵌入式OTA升級實現(xiàn)原理是什么

    應用程序升級四、總結、簡介1.1 概念OTA:Over-the-Air Technology,即空中下載技術OTA
    發(fā)表于 12-14 07:24

    介紹嵌入式系統(tǒng)的一些基礎知識

    本文主要介紹嵌入式系統(tǒng)的一些基礎知識,希望對各位有幫助。嵌入式系統(tǒng)基礎1、嵌入式系統(tǒng)的定義(1)定義:以應用為中心,以計算機技術為基礎,軟硬
    發(fā)表于 12-21 07:32

    嵌入式一些日常小技巧分享

    雜記–算法學習日志+關于實驗室部門架構的思考+嵌入式一些日常小技巧分享算法學習日志因為從初中到現(xiàn)在直是學習嵌入式程序的開發(fā)和研究,并沒有在面向對象的程序上有很大的研究和進展,在近期發(fā)
    發(fā)表于 12-21 08:07

    OTA升級方法

    ,再決定升級方式,是單備份升級還是雙備份升級。本文主要講解嵌入式設備的OTA升級流程架構,雖然會
    發(fā)表于 01-25 08:12

    分享項可在線OTA升級嵌入式系統(tǒng)設計

    什么。小結OTA升級并不是什么很難理解的技術,簡單任務是項軟件或系統(tǒng)采用無線升級技術即可,類
    發(fā)表于 03-21 14:00

    嵌入式系統(tǒng)的一些基礎知識

    本文主要介紹嵌入式系統(tǒng)的一些基礎知識,希望對各位有幫助。
    的頭像 發(fā)表于 02-18 10:44 ?2251次閱讀

    嵌入式中的一些概念

    嵌入式中的一些概念嵌入式系統(tǒng)的概念什么是MCU、CPU、MPU、DSPMCUMPUDSP幾大MCU公司瑞薩電子(Renesas)恩智浦(NXP)+飛思卡爾(Freescale)(后者被前者收購)微芯
    發(fā)表于 10-19 18:33 ?8次下載
    <b class='flag-5'>嵌入式</b>中的<b class='flag-5'>一些</b>概念

    有關嵌入式系統(tǒng)的一些思考

    有關嵌入式系統(tǒng)的一些思考何為嵌入式?為何要嵌入式?難點在哪里?發(fā)展趨勢是什么?何為嵌入式?根據英國電氣工程師協(xié)會( U.K. Institu
    發(fā)表于 10-19 18:33 ?2次下載
    有關<b class='flag-5'>嵌入式</b>系統(tǒng)的<b class='flag-5'>一些</b>思考

    嵌入式OTA升級 淺談

    ,再決定升級方式,是單備份升級還是雙備份升級。本文主要講解嵌入式設備的OTA升級流程架構,雖然會
    發(fā)表于 11-30 16:51 ?14次下載
    <b class='flag-5'>嵌入式</b>的<b class='flag-5'>OTA</b><b class='flag-5'>升級</b> 淺談

    盤點嵌入式常見一些GUI

    圖形用戶界面(Graphical User Interface,簡稱 GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計算機操作用戶界面。GUI般需要MCU有定的硬件資源和處理能力,現(xiàn)在MCU資源越來越多,同時市場需求也增多了,GUI功能也越來越豐富了。下面來盤點
    的頭像 發(fā)表于 07-04 14:45 ?1959次閱讀

    嵌入式實現(xiàn)OTA升級常見技術

    1.通過OTA方式,可以對分布在各地的設備進行軟件升級,而不必讓運維人員各地奔波。 2.物聯(lián)網平臺支持通過OTA方式進行設備固件升級,是智能設備修復系統(tǒng)漏洞、
    發(fā)表于 03-03 11:51 ?1207次閱讀

    分享種可在線OTA升級嵌入式系統(tǒng)設計

    OTA升級并不是什么很難理解的技術,簡單任務是項軟件或系統(tǒng)采用無線升級技術即可,類似于我們很
    的頭像 發(fā)表于 03-20 08:51 ?857次閱讀
    分享<b class='flag-5'>一</b>種可在線<b class='flag-5'>OTA</b><b class='flag-5'>升級</b>的<b class='flag-5'>嵌入式</b>系統(tǒng)設計