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

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

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

空中下載技術(shù)OTA升級(jí)的實(shí)現(xiàn)原理及過(guò)程

智能汽車(chē)電子與軟件 ? 來(lái)源:糖果Autosar ? 2023-01-04 09:15 ? 次閱讀

一、簡(jiǎn)介

1.1 概念

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

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

只要是通過(guò)無(wú)線(xiàn)通信方式實(shí)現(xiàn)升級(jí)的,都可以叫OTA升級(jí),比如網(wǎng)絡(luò)/藍(lán)牙。

通過(guò)有線(xiàn)方式進(jìn)行升級(jí),叫本地升級(jí),比如通過(guò)UART,USB或者SPI通信接口來(lái)升級(jí)設(shè)備固件。

1.2 優(yōu)點(diǎn)

1.通過(guò)OTA方式,可以對(duì)分布在各地的設(shè)備進(jìn)行軟件升級(jí),而不必讓運(yùn)維人員各地奔波。

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

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

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

1.3 實(shí)現(xiàn)原理

核心流程:

1.制作升級(jí)包

2.下載升級(jí)包

3.驗(yàn)簽升級(jí)包

4.更新程序

e6e70ee8-8ba1-11ed-bfe3-dac502259ad0.png

下載方式:

不管采用OTA方式還是有線(xiàn)通信方式升級(jí),下載升級(jí)包的方式包括后臺(tái)式下載和非后臺(tái)式下載兩種模式。

后臺(tái)式下載:

在升級(jí)的時(shí)候,新固件在后臺(tái)悄悄下載,即新固件下載屬于應(yīng)用程序功能的一部分,在新固件下載過(guò)程中,應(yīng)用可以正常使用,也就是說(shuō)整個(gè)下載過(guò)程對(duì)用戶(hù)來(lái)說(shuō)是無(wú)感的,下載完成后,系統(tǒng)再跳到BootLoader程序,由BootLoader完成新固件覆蓋老固件的操作。比如智能手機(jī)升級(jí)Android或者iOS系統(tǒng)都是采用后臺(tái)式方式,新系統(tǒng)下載過(guò)程中,手機(jī)可以正常使用。

e6f44824-8ba1-11ed-bfe3-dac502259ad0.png

非后臺(tái)式下載:

在升級(jí)的時(shí)候,系統(tǒng)需要先從應(yīng)用程序跳入到BootLoader程序,由BootLoader進(jìn)行新固件下載工作,下載完成后BootLoader繼續(xù)完成新固件覆蓋老固件的操作,至此升級(jí)結(jié)束。早先的功能機(jī)就是采用非后臺(tái)來(lái)升級(jí)操作系統(tǒng)的,即用戶(hù)需要先長(zhǎng)按某些按鍵進(jìn)入bootloader模式,然后再進(jìn)行升級(jí),整個(gè)升級(jí)過(guò)程中手機(jī)正常功能都無(wú)法使用。

e700c57c-8ba1-11ed-bfe3-dac502259ad0.png

新舊固件覆蓋模式:

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

雙區(qū)模式:

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

后臺(tái)式下載必須采用雙區(qū)模式進(jìn)行升級(jí)。

優(yōu)點(diǎn):

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

缺點(diǎn):

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

e70ee31e-8ba1-11ed-bfe3-dac502259ad0.png

單區(qū)模式:

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

優(yōu)點(diǎn):

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

缺點(diǎn):

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

相比較,雙區(qū)模式雖然犧牲了很多存儲(chǔ)空間,但是換來(lái)了更好的升級(jí)體驗(yàn)。

e71f3dd6-8ba1-11ed-bfe3-dac502259ad0.png

二、MCU OTA升級(jí)

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

e72d3a76-8ba1-11ed-bfe3-dac502259ad0.png

數(shù)字簽名

簽名:

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

驗(yàn)簽:

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

摘要進(jìn)行比較,如果相同則說(shuō)明消息是A發(fā)送給B的,同時(shí),A也無(wú)法否認(rèn)自己發(fā)送消息給B的事實(shí)。

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

e753f30a-8ba1-11ed-bfe3-dac502259ad0.png

密碼學(xué)基礎(chǔ)概念:

1.什么是消息摘要?

2.什么是非對(duì)稱(chēng)加解密?私鑰與公鑰?

3.什么是數(shù)字簽名?

數(shù)字簽名的作用:

保證數(shù)據(jù)完整性,機(jī)密性和發(fā)送方角色的不可抵賴(lài)性。

消息摘要函數(shù):

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

數(shù)字簽名算法:

RSA、Rabin方式、ElGamal方式、DSA

2.1 制作升級(jí)包

通過(guò)簽名工具使用簽名算法對(duì)固件進(jìn)行數(shù)字簽名,簽名后的文件即為升級(jí)包。

升級(jí)包的內(nèi)容一般包括firmware、header和signature value。

Firmware:固件

Header:頭部信息。存放配置信息,如版本號(hào)、產(chǎn)品類(lèi)型等。

Signature value:簽名值。對(duì)firmware和header簽名后的值。

e78616c8-8ba1-11ed-bfe3-dac502259ad0.png

簽名工具:

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

固件簽名:

上位機(jī)軟件先計(jì)算整個(gè)固件的消息摘要,使用非對(duì)稱(chēng)密碼的私鑰對(duì)摘要進(jìn)行加密,

被加密后的消息摘要數(shù)據(jù)就是簽名值。

固件簽名的意義:

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

使用非對(duì)稱(chēng)秘鑰簽名方便后續(xù)驗(yàn)證升級(jí)包身份的合法性。

2.2 下載升級(jí)包

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

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

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

通訊雙方約定俗成地用于數(shù)據(jù)交流的格式。

下載的方式:

1.在應(yīng)用程序中下載:后臺(tái)式

2.在BootLoader中下載:非后臺(tái)式

2.3 驗(yàn)簽升級(jí)包

MCU設(shè)備接收完所有的升級(jí)包后,先計(jì)算升級(jí)包中固件的摘要,然后使用非對(duì)稱(chēng)秘鑰的

公鑰解密升級(jí)包的簽名值,如果解密出來(lái)的固件摘要與自己計(jì)算的摘要相同,則驗(yàn)簽成功。

2.4 更新固件

驗(yàn)簽成功保證了固件的完整性和合法性后,MCU設(shè)備從應(yīng)用程序進(jìn)入BootLoader程序,

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

然后BootLoader程序啟動(dòng)固件運(yùn)行,此時(shí)固件為新固件。

flash固件數(shù)據(jù)更新:

擦除flash,寫(xiě)flash。

三、Linux OTA升級(jí)

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

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

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

應(yīng)用程序存放于rootfs。

e7904dfa-8ba1-11ed-bfe3-dac502259ad0.png

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

e79c24fe-8ba1-11ed-bfe3-dac502259ad0.png

3.1 系統(tǒng)升級(jí)

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

由于ubootkernel ootfs在flash分區(qū)中是以二進(jìn)制數(shù)據(jù)存儲(chǔ)的,與MCU固件在flash中存的是二進(jìn)制數(shù)據(jù)一樣,包括ubootkernel ootfs的升級(jí)文件也是以二進(jìn)制數(shù)方式直接寫(xiě)入到對(duì)應(yīng)的Flash分區(qū)。其升級(jí)方式與MCU固件的升級(jí)原理基本是一致的。

一般可在uboot中下載升級(jí)包來(lái)升級(jí)ubootkernel ootfs ,與MCU在BootLoader程序中完成升級(jí)類(lèi)似。

e7a78236-8ba1-11ed-bfe3-dac502259ad0.png

3.2 應(yīng)用程序升級(jí)

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

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

應(yīng)用程序升級(jí)流程:

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

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

制作升級(jí)包:將應(yīng)用程序相關(guān)的文件(可執(zhí)行程序、庫(kù)文件、配置文件等)打包為壓縮包

作為一個(gè)整體再進(jìn)行簽名。

e7b39706-8ba1-11ed-bfe3-dac502259ad0.png

升級(jí)包下載和驗(yàn)簽通過(guò)后,將壓縮包解壓,可以得到應(yīng)用程序的相關(guān)文件。

應(yīng)用程序的更新,可以通過(guò)啟動(dòng)應(yīng)用程序的程序來(lái)更新,如啟動(dòng)腳本、啟動(dòng)程序,類(lèi)似MCU升級(jí)的BootLoader程序作用。

更新方式:

1.直接覆蓋舊程序;

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

直接覆蓋舊程序:

e7be8f76-8ba1-11ed-bfe3-dac502259ad0.png

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

pingpong操作

e7dd7378-8ba1-11ed-bfe3-dac502259ad0.png

四、總結(jié)

OTA升級(jí)的核心:

e7ead1b2-8ba1-11ed-bfe3-dac502259ad0.png

審核編輯:郭婷

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

    關(guān)注

    60

    文章

    7851

    瀏覽量

    263340
  • 無(wú)線(xiàn)通信
    +關(guān)注

    關(guān)注

    58

    文章

    4458

    瀏覽量

    143283
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1684

    瀏覽量

    91066

原文標(biāo)題:OTA升級(jí)的實(shí)現(xiàn)原理

文章出處:【微信號(hào):智能汽車(chē)電子與軟件,微信公眾號(hào):智能汽車(chē)電子與軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用碼云實(shí)現(xiàn)CC3220空中升級(jí)

    電子發(fā)燒友網(wǎng)站提供《使用碼云實(shí)現(xiàn)CC3220空中升級(jí).pdf》資料免費(fèi)下載
    發(fā)表于 09-29 10:21 ?0次下載
    使用碼云<b class='flag-5'>實(shí)現(xiàn)</b>CC3220<b class='flag-5'>空中</b><b class='flag-5'>升級(jí)</b>

    物聯(lián)網(wǎng)中的Fota是什么,如何使用HTTP來(lái)給設(shè)備升級(jí)

    一 概述 FOTA(Firmware Over-The-Air)移動(dòng)終端的空中下載軟件升級(jí),指通過(guò)云端升級(jí)技術(shù),為具有連網(wǎng)功能的設(shè)備提供固件升級(jí)
    的頭像 發(fā)表于 09-25 14:35 ?168次閱讀
    物聯(lián)網(wǎng)中的Fota是什么,如何使用HTTP來(lái)給設(shè)備<b class='flag-5'>升級(jí)</b>

    構(gòu)建智能安全出行體驗(yàn),存儲(chǔ)在OTA中扮演什么角色?

    提升著用戶(hù)的出行體驗(yàn)。在這背后,OTA(Over-The-Air,空中下載技術(shù))正以其獨(dú)特的魅力,推動(dòng)著汽車(chē)智能升級(jí)的浪潮。 ? “上岸”車(chē)用領(lǐng)域,引領(lǐng)智能
    發(fā)表于 09-23 13:52 ?157次閱讀

    ESP8266 OTA升級(jí)失敗的原因?

    我正在使用自定義服務(wù)器來(lái)升級(jí) esp8266。我可以從服務(wù)器下載圖像,但總是升級(jí)失敗。 我將以下.bin文件下載到閃存中(下載前,我擦除整
    發(fā)表于 07-11 07:45

    esp32s3 ota升級(jí)過(guò)程中,RGBLCD+LVGL顯示異常,屏幕畫(huà)面閃爍跳動(dòng)是什么原因?qū)е碌模?/a>

    esp32s3 ota升級(jí)過(guò)程中,RGBLCD+LVGL顯示異常,屏幕畫(huà)面閃爍跳動(dòng),不進(jìn)行ota升級(jí)時(shí),LCD顯示正常,這有可能是什么原因?qū)?/div>
    發(fā)表于 06-27 08:10

    ESP-IDF4.4 OTA升級(jí)失敗的原因?

    ESP-IDF4.4 OTA 功能,在啟動(dòng)OTA功能后下載固件過(guò)程中出現(xiàn)wifi無(wú)Internet訪(fǎng)問(wèn),然后很快網(wǎng)絡(luò)恢復(fù),需要等待很久后OTA
    發(fā)表于 06-06 08:19

    應(yīng)用筆記|米爾NXP iMX 93開(kāi)發(fā)板OTA功能搭建

    1.概述空中下載技術(shù)(Over-the-AirTechnology,OTA)是通過(guò)移動(dòng)通信的空中接口實(shí)現(xiàn)對(duì)移動(dòng)終端設(shè)備及SIM卡數(shù)據(jù)進(jìn)行遠(yuǎn)程
    的頭像 發(fā)表于 05-23 08:01 ?717次閱讀
    應(yīng)用筆記|米爾NXP iMX 93開(kāi)發(fā)板<b class='flag-5'>OTA</b>功能搭建

    技術(shù)帖 | RK3568開(kāi)發(fā)板的OTA升級(jí)教程

    說(shuō)起OTA我們應(yīng)該都不陌生,它是一種可以為設(shè)備無(wú)損失升級(jí)系統(tǒng)的方式,能將新功能遠(yuǎn)程部署到產(chǎn)品上。我們不僅可以通過(guò)網(wǎng)絡(luò)下載OTA升級(jí)包,也可以
    的頭像 發(fā)表于 04-20 08:01 ?1464次閱讀
    <b class='flag-5'>技術(shù)</b>帖 | RK3568開(kāi)發(fā)板的<b class='flag-5'>OTA</b><b class='flag-5'>升級(jí)</b>教程

    汽車(chē)ota升級(jí)有什么用 汽車(chē)ota功能有必要嗎

    以通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò),將最新的軟件版本直接傳輸?shù)杰?chē)輛中,實(shí)現(xiàn)快速、簡(jiǎn)便的升級(jí)。那么汽車(chē)OTA升級(jí)有什么用呢? 汽車(chē)OTA
    的頭像 發(fā)表于 02-18 14:39 ?1075次閱讀

    ota升級(jí)是什么意思 ota升級(jí)有什么用

    OTA(Over-the-Air)升級(jí)是指通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò),將軟件、固件或系統(tǒng)的新版本傳輸?shù)街С值脑O(shè)備上進(jìn)行更新和安裝的過(guò)程。這一技術(shù)廣泛應(yīng)用于手機(jī)、智能電視、汽車(chē)等各類(lèi)智能設(shè)備中。本文將
    的頭像 發(fā)表于 02-02 10:25 ?4993次閱讀

    深入了解物聯(lián)網(wǎng)設(shè)備的OTA升級(jí)機(jī)制

    OTA(Over-The-Air,空中下載技術(shù))是一種無(wú)線(xiàn)傳輸技術(shù),用于在物聯(lián)網(wǎng)設(shè)備之間進(jìn)行遠(yuǎn)程更新和配置。OTA指的是通過(guò)無(wú)線(xiàn)通信網(wǎng)絡(luò)來(lái)遠(yuǎn)
    發(fā)表于 01-21 10:03 ?1569次閱讀
    深入了解物聯(lián)網(wǎng)設(shè)備的<b class='flag-5'>OTA</b><b class='flag-5'>升級(jí)</b>機(jī)制

    如何通過(guò)雅特力AT32WB415的藍(lán)牙模塊來(lái)進(jìn)行OTA升級(jí)

    概述OTA(Over-The-AirTechnology)即空中下載技術(shù),利用OTA技術(shù)可以在不接觸(接線(xiàn))的情況下對(duì)芯片程序進(jìn)行
    的頭像 發(fā)表于 12-20 08:15 ?735次閱讀
    如何通過(guò)雅特力AT32WB415的藍(lán)牙模塊來(lái)進(jìn)行<b class='flag-5'>OTA</b><b class='flag-5'>升級(jí)</b>

    支持 OTA 更新的MCU很多 為何 ESP32這么受歡迎?

    物聯(lián)網(wǎng) (IoT) 產(chǎn)品的設(shè)計(jì)者需要不斷地評(píng)估平臺(tái)和組件的選擇,以降低成本和功率,同時(shí)提高性能和加快連接應(yīng)用的設(shè)計(jì)。目前有相當(dāng)多的解決方案可供選擇,但設(shè)計(jì)者面臨的挑戰(zhàn)是,一旦部署,如何進(jìn)行無(wú)線(xiàn)空中下載
    的頭像 發(fā)表于 11-01 20:30 ?2557次閱讀
    支持 <b class='flag-5'>OTA</b> 更新的MCU很多 為何 ESP32這么受歡迎?

    RX系列幫您實(shí)現(xiàn)二級(jí)MCU OTA升級(jí):FreeRTOS篇

    RX系列幫您實(shí)現(xiàn)二級(jí)MCU OTA升級(jí):FreeRTOS篇
    的頭像 發(fā)表于 10-26 18:04 ?839次閱讀
    RX系列幫您<b class='flag-5'>實(shí)現(xiàn)</b>二級(jí)MCU <b class='flag-5'>OTA</b><b class='flag-5'>升級(jí)</b>:FreeRTOS篇

    AT32 MCU如何使用OTA通過(guò)USART實(shí)現(xiàn)對(duì)固件的在線(xiàn)升級(jí)更新

    AT32 MCU如何使用OTA通過(guò)USART實(shí)現(xiàn)對(duì)固件的在線(xiàn)升級(jí)更新
    的頭像 發(fā)表于 10-26 17:09 ?2309次閱讀
    AT32 MCU如何使用<b class='flag-5'>OTA</b>通過(guò)USART<b class='flag-5'>實(shí)現(xiàn)</b>對(duì)固件的在線(xiàn)<b class='flag-5'>升級(jí)</b>更新