哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

無線更新引導(dǎo)加載程序OTA的注意事項

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:Drew Moseley ? 2022-11-24 15:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文將討論在連接的設(shè)備中更新引導(dǎo)加載程序的問題。所討論的原則適用于任何軟件系統(tǒng),我們將專門討論運行 Linux 的系統(tǒng)。

現(xiàn)代電子設(shè)備越來越復(fù)雜,并且互聯(lián)網(wǎng)連接。作為一般規(guī)則,復(fù)雜性與安全性背道而馳,不安全的互聯(lián)網(wǎng)連接設(shè)備已經(jīng)成熟,罪魁禍?zhǔn)讜粸E用。在設(shè)計這些系統(tǒng)時,我們必須假設(shè)所有軟件都會有錯誤,其中一些錯誤將是可利用的漏洞。解決這些問題的第一步是確保軟件更新可以交付到您的系統(tǒng),最好是自動和無線 (OTA)。歐盟“消費者物聯(lián)網(wǎng)網(wǎng)絡(luò)安全:基線要求(ETSI EN 303 645)”標(biāo)準(zhǔn)草案特別將及時自動更新作為其要求之一。它確實為不可變的第一階段引導(dǎo)加載程序提供了一個例外,以最大程度地降低將設(shè)備留在現(xiàn)場處于非引導(dǎo)狀態(tài)的風(fēng)險(也稱為“磚塊”“板)。

本文將討論在連接的設(shè)備中更新引導(dǎo)加載程序的問題。請注意,雖然這里討論的原則適用于任何軟件系統(tǒng),但我們將專門討論運行 Linux 的系統(tǒng)。使用更小、更自定義設(shè)計的系統(tǒng)可能會提供更多這些系統(tǒng)獨有的選項。

系統(tǒng)設(shè)計

圖 1 顯示了一個通用的 Linux 系統(tǒng),其中包含可能更新的主要組件。存儲介質(zhì)將是某種塊設(shè)備,例如 eMMC 或 SATA 硬盤驅(qū)動器。在該設(shè)備中,將有引導(dǎo)加載程序、內(nèi)核、設(shè)備樹(取決于正在使用的 CPU)和一個根文件系統(tǒng),其中包含構(gòu)建系統(tǒng)所需的所有文件。在某些情況下會使用更復(fù)雜的架構(gòu),但出于本討論的目的,我們將它限制在最簡單的情況下。

pYYBAGN_H7aAPE8xAADd6HzvA3g527.png

系統(tǒng)更新實用程序,如Mender[2],軟件更新[3],其他人能夠開箱即用地更新內(nèi)核、設(shè)備樹和根文件系統(tǒng),在許多情況下,這種級別的可更新性就足夠了。

引導(dǎo)加載程序是系統(tǒng)的組件,負(fù)責(zé)在開機(jī)時初始化系統(tǒng),從 CPU 重置指令開始。它負(fù)責(zé)以下任務(wù):

?初始化和清理內(nèi)存

?設(shè)置電源軌和時鐘

?將所有外圍設(shè)備設(shè)置為已知和靜止?fàn)顟B(tài),以避免意外中斷。

?加載并啟動 Linux 內(nèi)核

如前所述,所有軟件都有錯誤,因此我們可以假設(shè)也會有引導(dǎo)加載程序錯誤。我們可以通過最小化引導(dǎo)加載程序的功能來減少攻擊面,但是我們可以完全消除錯誤的風(fēng)險。為什么更新引導(dǎo)加載程序比更新系統(tǒng)的其他組件更復(fù)雜?如果我們嘗試,會有什么風(fēng)險?如果我們不嘗試,會有什么風(fēng)險?

支持無線的系統(tǒng)

poYBAGN_H72ANBRmAAGOD-MsoQM772.png

此框圖顯示了能夠進(jìn)行可靠的無線 (OTA) 更新的系統(tǒng)的基本系統(tǒng)設(shè)計。[4]引導(dǎo)加載程序負(fù)責(zé)系統(tǒng)初始化并與 OTA 客戶端交互,以選擇要使用的內(nèi)核、設(shè)備樹和根文件系統(tǒng)。通過對正在運行的 Linux 映像所需的組件進(jìn)行完全冗余來提供健壯性。這可確保在 OTA 更新?lián)p壞的情況下始終有已知良好的映像要回滾。此外,這可確保完全原子更新,因為更新客戶端是系統(tǒng)中唯一知道更新正在進(jìn)行中的組件,直到更新完成并準(zhǔn)備好運行。

任何更新 OTA 的組件都可能導(dǎo)致設(shè)備無法正常工作,因此系統(tǒng)的穩(wěn)健性與引導(dǎo)加載程序處理回滾到先前已知良好的配置的能力直接相關(guān)。這意味著系統(tǒng)中必須有一個組件,該組件是不可變的,可以正確處理錯誤的更新。

引導(dǎo)加載程序更新

在大多數(shù)情況下,處理回滾的不可變組件_是_引導(dǎo)加載程序。在典型的嵌入式Linux應(yīng)用程序中是Das U-Boot[5]。如果我們嘗試更新引導(dǎo)加載程序,由于沒有冗余,我們就有使主板變磚的風(fēng)險。如果開發(fā)板在我們開始寫入新的引導(dǎo)加載程序映像之后,但在寫入完成之前重新啟動,則我們的映像包含舊版本的一部分和新版本的一部分。在這種情況下,行為是未定義的,唯一的緩解措施是能夠物理訪問設(shè)備,以便編寫正確的引導(dǎo)加載程序,通常使用 USB 或其他硬連線連接。

但是我們?yōu)槭裁匆乱龑?dǎo)加載程序呢?至少,引導(dǎo)加載程序只是用作初始化硬件的一種手段,然后將控制權(quán)傳遞給 Linux 內(nèi)核。由于功能有限,引導(dǎo)加載程序出現(xiàn)問題的風(fēng)險被降至最低。

對于許多設(shè)計來說,這種風(fēng)險水平是可以接受的,架構(gòu)師可以決定不在其部署的設(shè)備中提供OTA引導(dǎo)加載程序更新。使用硬連線機(jī)制仍然是最后的手段。

然而,對于許多設(shè)計,這種風(fēng)險水平被認(rèn)為是不可接受的,必須為引導(dǎo)加載程序的OTA更新提供一些機(jī)制。此外,許多設(shè)計在引導(dǎo)加載程序中添加了更多功能;諸如系統(tǒng)診斷或其他特定于應(yīng)用程序的要求之類的內(nèi)容可能會在引導(dǎo)加載程序中實現(xiàn),從而導(dǎo)致需要更新的可能性更大。那么我們?nèi)绾翁幚砟兀?/p>

用于提供引導(dǎo)加載程序更新的選項

有許多選項允許更新引導(dǎo)加載程序。本討論并非旨在提供完整的解決方案,而是對可能適用于您的設(shè)計的方法進(jìn)行高級描述。每個都有其權(quán)衡。

選項 1:無冗余

如果磚砌板的風(fēng)險對于特定應(yīng)用程序來說是可以接受的,那么您可以簡單地嘗試部署引導(dǎo)加載程序更新 OTA,并在發(fā)生時處理后果。如果您的隊列規(guī)模較小,并且物理訪問設(shè)備的成本較低,那么這可能效果很好。如果需要引導(dǎo)加載程序更新,并且 OTA 嘗試失敗,那么您的嘗試也不會更糟。OTA 引導(dǎo)加載程序更新失敗的情況與沒有 OTA 引導(dǎo)加載程序更新功能的情況相同。即,您必須獲得對設(shè)備的物理訪問權(quán)限,并使用制造商提供的機(jī)制來重新刷新引導(dǎo)加載程序。

選項 2:多階段引導(dǎo)加載程序

此體系結(jié)構(gòu)將引導(dǎo)加載程序功能分為兩個階段(或更多階段,具體取決于設(shè)計的復(fù)雜性)。最終,這仍然需要在階段 1 中提供一段不可變的代碼。您在更新階段 2 時確實具有冗余和健壯性,因此如果您仔細(xì)選擇實現(xiàn)功能的位置,則可以提供引導(dǎo)加載程序功能的 OTA 更新。這是一個不錯的選擇,因為不可變階段 1 二進(jìn)制文件中的代碼量減少了,從而降低了總體風(fēng)險。

poYBAGN_H5mANFZrAAB1bUy9BR8529.png

U-Boot 使用 SPL(輔助程序加載器)和 TPL(第三程序加載器)實現(xiàn)多階段引導(dǎo)。引入此機(jī)制是為了允許支持具有單獨引導(dǎo) ROM 的系統(tǒng),這些引導(dǎo) ROM 太小而無法存儲完整的 U-Boot 映像。在這種情況下,U-Boot SPL 映像將包含足夠的初始化代碼來加載和啟動完整的 U-Boot 映像,通常是從大型塊設(shè)備(如 MMC)啟動。SPL 需要能夠初始化足夠的 RAM 和包含完整 U-Boot 映像的設(shè)備。

即使對于沒有小引導(dǎo)ROM限制的設(shè)備,我們也可以利用這種架構(gòu)在第2階段實現(xiàn)我們的可更新功能,同時在第1階段保留最低限度,包括正確處理冗余塊。

第 1 階段存在問題的風(fēng)險,需要物理訪問才能解決。鑒于第 1 階段的功能減少,在許多情況下,這種風(fēng)險水平是可以接受的。

選項 3:并行引導(dǎo)加載程序

poYBAGN_H5uASqrCAAB6NmetT-4582.png

許多主板提供從多個設(shè)備啟動的功能。例如,許多主板可以從板載 eMMC 或可移動 SD/MMC 卡啟動?;蛘?,他們可以為引導(dǎo)加載程序使用專用的 NOR 閃存設(shè)備,但仍能夠在 eMMC 塊介質(zhì)之外運行引導(dǎo)加載程序。

這些類型的主板可以配置為將不可變引導(dǎo)加載程序存儲在其中一個受支持的設(shè)備中,然后將 OTA 可更新引導(dǎo)加載程序存儲在另一個設(shè)備中。通常,可更新的引導(dǎo)加載程序?qū)⑴c根文件系統(tǒng)位于同一介質(zhì)(即eMMC)中,因此很容易更新。由于“備用”媒體中的引導(dǎo)加載程序是不可變的,因此可以依靠它從“標(biāo)準(zhǔn)”位置引導(dǎo)加載程序的損壞 OTA 更新中恢復(fù)。

這種方法的問題在于,引導(dǎo)設(shè)備的選擇通常需要物理訪問電路板才能移動跳線或更改開關(guān)設(shè)置。如果您的設(shè)備位于最終用戶可以訪問它們的位置,這可能是一個可行的選項,因為最終用戶可以在發(fā)生故障時選擇恢復(fù)媒體。這可以通過文檔或支持人員的指示完成。

某些系統(tǒng)使用外部硬件來選擇引導(dǎo)加載程序。運行RTOS的小型MCU可以監(jiān)控正確的系統(tǒng)活動,并在Linux系統(tǒng)未運行時選擇備用引導(dǎo)加載程序。使用外部源正確檢測可能很棘手,但切換 GPIO 引腳或?qū)懭牍蚕韮?nèi)存的看門狗計時器可能就足夠了。這也是一個更復(fù)雜的設(shè)計,需要根據(jù)您的系統(tǒng)要求進(jìn)行考慮。請注意,您可能需要考慮對MCU固件映像進(jìn)行OTA更新,這是另一個復(fù)雜程度。

選項 4:eMMC 啟動分區(qū)

eMMC 的 4.3 版[6]規(guī)范需要 2 個單獨的硬件引導(dǎo)分區(qū)。這些分區(qū)通常每個為 4MB,用于存儲引導(dǎo)加載程序。這些分區(qū)可以從 Linux 用戶空間讀取和寫入,但默認(rèn)情況下它們是只讀的;讀寫功能是通過寫入 /sys 偽文件系統(tǒng)中的文件來啟用的:

poYBAGN_H5yAO4pHAAAoxid-9y8908.png

然后可以使用dd實用程序?qū)⒁龑?dǎo)加載程序?qū)懭脒@些分區(qū)

pYYBAGN_H56AQlh2AAAmIP97Zi4461.png

eMMC 設(shè)備用作啟動塊的分區(qū)由設(shè)備本身內(nèi)設(shè)置的參數(shù)確定。這可以從 U-Boot 提示符下完成:

poYBAGN_H5-AOxp1AAAqYd0LPrY732.png

或者從 Linux 用戶空間:

pYYBAGN_H6GAT7K1AAArJrmfg4A617.png

曼德的方法

利用 eMMC 引導(dǎo)分區(qū),對分區(qū)的更新是原子的,并且獨立于對根文件系統(tǒng)的更新。eMMC 啟動分區(qū)之間沒有自動故障轉(zhuǎn)移,因此這不會減輕由于啟動加載程序更新失敗而導(dǎo)致磚塊設(shè)備的擔(dān)憂。但是,這確實可以輕松向引導(dǎo)加載程序提供更新,而無需為根文件系統(tǒng)提供任何特定的調(diào)整。

由于提供引導(dǎo)加載程序更新時存在磚砌板的風(fēng)險和 OTA 更新過程的魯棒性降低,Mender[7]不提供現(xiàn)成的引導(dǎo)加載程序更新。如前所述,很難以通用方式完成,并且最終可能會非常特定于應(yīng)用程序和硬件。更新模塊框架[8]允許插件架構(gòu)支持自定義更新類型。Mender 可以使用自定義更新模塊支持任意有效負(fù)載類型。此插件架構(gòu)允許提供處理特定有效負(fù)載類型的自定義腳本。允許在特定系統(tǒng)中進(jìn)行引導(dǎo)加載程序更新可以使用更新模塊來實現(xiàn)。根據(jù)應(yīng)用程序的需求以及正在使用的硬件的功能,可以使用上述任何方法。

總結(jié)

在現(xiàn)場部署的設(shè)備中上傳系統(tǒng)引導(dǎo)加載程序存在許多風(fēng)險。在不合時宜的時間斷電可能會使設(shè)備在現(xiàn)場變磚,從而導(dǎo)致潛在的代價高昂的召回過程。但是,不提供引導(dǎo)加載程序更新機(jī)制可能會帶來不可接受的風(fēng)險,具體取決于特定應(yīng)用程序的配置文件。我們介紹了許多允許引導(dǎo)加載程序更新的方法,并討論了每種方法的優(yōu)缺點。作為系統(tǒng)設(shè)計人員,這將有望讓您為系統(tǒng)做出適當(dāng)?shù)倪x擇,并幫助您在適當(dāng)了解設(shè)計風(fēng)險的情況下快速進(jìn)入市場。

審核編輯:郭婷

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

    關(guān)注

    2950

    文章

    48126

    瀏覽量

    418431
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11817

    瀏覽量

    219549
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    如何在 i.MX RT1050 上實現(xiàn)兩個鏡像(引導(dǎo)加載程序應(yīng)用程序)的雙 HAB 身份驗證?

    、IMG 和 CSF 密鑰/證書. 這些密鑰將用于對第二階段引導(dǎo)加載程序通過 HAB。 The 應(yīng)用圖片存儲在引導(dǎo)加載
    發(fā)表于 04-07 06:14

    STM32WB 系列微控制器 OTA無線固件更新應(yīng)用筆記

    本文檔介紹了通過低功耗藍(lán)牙連接在 STM32WB 設(shè)備上進(jìn)行 OTA 固件更新的過程。它講解如何使用 STM32Cube 固件包中提供的 OTA 應(yīng)用程序,實現(xiàn)用戶應(yīng)用
    發(fā)表于 01-08 14:50 ?0次下載

    請問CW32F030的硬件注意事項有哪些?

    CW32F030的硬件注意事項有哪些
    發(fā)表于 12-25 08:20

    請問IAP功能升級流程中有哪些注意事項?

    IAP 功能升級流程中有哪些注意事項
    發(fā)表于 12-23 07:55

    BNC轉(zhuǎn)接頭接線注意事項

    本文從工程角度總結(jié)BNC轉(zhuǎn)接頭接線過程中的關(guān)鍵注意事項,涵蓋阻抗匹配、接線規(guī)范、工藝選擇及檢測要點,幫助用戶避免常見接線問題。
    的頭像 發(fā)表于 12-19 14:04 ?619次閱讀
    BNC轉(zhuǎn)接頭接線<b class='flag-5'>注意事項</b>

    迅為RK3588開發(fā)板Android系統(tǒng)燒寫及注意事項

    迅為RK3588開發(fā)板Android系統(tǒng)燒寫及注意事項
    的頭像 發(fā)表于 12-03 15:17 ?7394次閱讀
    迅為RK3588開發(fā)板Android系統(tǒng)燒寫及<b class='flag-5'>注意事項</b>

    驅(qū)動板PCB布線的注意事項

    PCB Layout 注意事項 1)布局注意事項: ●● 整體布局遵循功率回路與小信號控制回路分開布局原則,功率部分和控制部分的 GND 分開回流到輸入 GND。 ●● 芯片的放置方向優(yōu)先考慮驅(qū)動
    發(fā)表于 12-02 07:40

    CW32F030在使用中的注意事項有哪些?

    CW32F030在使用中的注意事項有哪些?
    發(fā)表于 11-18 06:20

    emWin AppWizard 開發(fā)注意事項有哪些?

    emWin AppWizard 開發(fā)注意事項
    發(fā)表于 09-04 06:18

    別讓這些細(xì)節(jié)毀了PCBA!焊接注意事項清單

    一站式PCBA加工廠家今天為大家講講PCBA加工中電子元器件焊接注意事項有哪些?PCBA加工中電子元器件焊接注意事項。 電子元器件焊接關(guān)鍵注意事項 在PCBA加工中,焊接工藝直接影響電路板的可靠性
    的頭像 發(fā)表于 07-23 09:26 ?1499次閱讀

    美國Odyssey奧德賽電池充電注意事項全解析

    Odyssey奧德賽電池充電注意事項全解析 奧德賽電池作為高性能的深循環(huán)鉛酸電池,廣泛應(yīng)用于汽車啟動、摩托車、船舶以及備用電源系統(tǒng)中。正確的充電方法不僅能夠延長電池壽命,還能保障其性能穩(wěn)定發(fā)揮
    的頭像 發(fā)表于 05-19 16:31 ?1284次閱讀
    美國Odyssey奧德賽電池充電<b class='flag-5'>注意事項</b>全解析

    IGBT器件的防靜電注意事項

    IGBT作為功率半導(dǎo)體器件,對靜電極為敏感。我將從其靜電敏感性原理入手,詳細(xì)闡述使用過程中防靜電的具體注意事項與防護(hù)措施,確保其安全穩(wěn)定運行。
    的頭像 發(fā)表于 05-15 14:55 ?2165次閱讀

    手機(jī)喇叭氣密性檢測儀的注意事項

    使用手機(jī)喇叭氣密性檢測儀的注意事項包括以下幾點:一、使用前注意事項仔細(xì)閱讀手機(jī)喇叭氣密性檢測儀的使用說明書,了解設(shè)備的操作方法和注意事項。檢查氣密性檢測儀的各部件是否完好,包括壓力表、傳感器、連接
    的頭像 發(fā)表于 05-15 13:38 ?891次閱讀
    手機(jī)喇叭氣密性檢測儀的<b class='flag-5'>注意事項</b>

    如何使用EZUSB-CX3實現(xiàn)雙階段引導(dǎo)加載程序?

    我對如何使用 EZUSB-CX3 實現(xiàn)雙階段引導(dǎo)加載程序有點困惑。我想要的是,當(dāng)有新的 cx3 映像時,我希望能夠從 cx3 固件引導(dǎo)到第二階段引導(dǎo)
    發(fā)表于 05-12 08:26

    設(shè)置射頻網(wǎng)絡(luò)分析儀的測試條件有哪些注意事項

    射頻網(wǎng)絡(luò)分析儀(VNA)的測試條件設(shè)置直接影響測量結(jié)果的準(zhǔn)確性和可靠性。以下從儀器配置、被測器件(DUT)特性、環(huán)境干擾、校準(zhǔn)與驗證四個維度,系統(tǒng)梳理關(guān)鍵注意事項及解決方案。一、儀器配置與參數(shù)設(shè)置
    發(fā)表于 05-06 16:02
    南川市| 邵阳市| 凤山县| 余庆县| 英吉沙县| 宽城| 淳化县| 罗江县| 赫章县| 达州市| 高青县| 灯塔市| 白水县| 长沙市| 榆树市| 喀喇| 内江市| 会昌县| 社会| 旺苍县| 伊春市| 萨嘎县| 定远县| 西吉县| 顺昌县| 岳普湖县| 沙洋县| 万全县| 梁平县| 呼伦贝尔市| 黑龙江省| 黄平县| 奈曼旗| 崇左市| 延庆县| 内黄县| 富宁县| 平定县| 唐河县| 白朗县| 阜平县|