• <noframes id="6fok0"><bdo id="6fok0"><listing id="6fok0"></listing></bdo>
    <ruby id="6fok0"></ruby>

    <progress id="6fok0"></progress>
  • <progress id="6fok0"></progress>
    <ruby id="6fok0"><table id="6fok0"></table></ruby>
  • <progress id="6fok0"><u id="6fok0"><form id="6fok0"></form></u></progress>

    24小時(shí)聯(lián)系電話(huà):18217114652、13661815404

    中文

    您當前的位置:
    首頁(yè)>
    電子資訊>
    行業(yè)資訊>
    如何通過(guò)無(wú)線(xiàn) (OTA) ...

    行業(yè)資訊

    如何通過(guò)無(wú)線(xiàn) (OTA) 更新嵌入式固件


    如何通過(guò)無(wú)線(xiàn) (OTA) 更新嵌入式固件

    物聯(lián)網(wǎng)設備通過(guò)互聯(lián)網(wǎng)傳輸和接收數據,目前大多數物聯(lián)網(wǎng)設備都是無(wú)線(xiàn)連接的。

    在設計您的下一個(gè)物聯(lián)網(wǎng)設備時(shí),必須考慮的一個(gè)非常重要的方面是更新物聯(lián)網(wǎng)設備固件的過(guò)程。

    我們熟悉這樣的想法,即固件只需編寫(xiě)一次即可與硬件接口,并且很少更改。這部分是由于大多數設備并非設計用于連接到互聯(lián)網(wǎng)的想法。

    然而,隨著(zhù)當前物聯(lián)網(wǎng)開(kāi)發(fā)和設備部署的興起,固件的定義將需要重新審視。

    讓我們從探索物聯(lián)網(wǎng)設備固件的不同組件開(kāi)始。在典型設備中,您會(huì )遇到以下固件組件:

    無(wú)線(xiàn)連接 (WiFi/BLE) – 高度依賴(lài)于所使用的無(wú)線(xiàn)連接協(xié)議。大多數無(wú)線(xiàn)微控制器都帶有開(kāi)箱即用的受支持協(xié)議,以及易于使用的 API,例如 ESP32 微控制器。

    外部傳感器驅動(dòng)程序——可能由物聯(lián)網(wǎng)設備的開(kāi)發(fā)人員編寫(xiě),用于與微控制器一起使用的任何外部傳感器。例如,如果您想收集房間內的溫度,則必須使用溫度傳感器并編寫(xiě)驅動(dòng)程序以從傳感器中采樣數據。

    應用程序特定程序- 您非常特定應用程序的主程序。這是固件的所有不同組件將被捆綁在一起以形成良好流程的地方。

    配置——每個(gè)物聯(lián)網(wǎng)設備都帶有默認設置,需要更改為其用戶(hù)特定設置。例如,WiFi 路由器的接入點(diǎn) (AP) 配置,其中 SSID 和密碼傳遞給微控制器以用于連接到互聯(lián)網(wǎng)。

    OTA 固件更新——這是一個(gè)重要的組件,應該包含在您的開(kāi)發(fā)周期中,因為它可以讓您的物聯(lián)網(wǎng)設備通過(guò)互聯(lián)網(wǎng)進(jìn)行更新,而無(wú)需與設備進(jìn)行物理接口。

    云連接——最有可能由云服務(wù)提供商提供用于與云交互的 API SDK。一個(gè)示例是連接到 IoT MQTT 代理、接收命令等。

    Crypto Utilities——由于微控制器必須連接到安全的云,控制器必須能夠通過(guò)簽名和解密來(lái)自云的消息來(lái)驗證自己。大多數支持物聯(lián)網(wǎng)的微控制器都有自己的庫和支持,例如 AES、SHA、RSA、隨機數生成器 (RNG)、內存加密和解密等。

    這些組件是每個(gè)物聯(lián)網(wǎng)設備的基礎,盡管可能或多或少取決于您的特定應用程序。

    在本文中,我將假設您已經(jīng)建立了連接并設置了主要應用程序和傳感器驅動(dòng)程序。接下來(lái),我將重點(diǎn)介紹如何添加一項允許您的設備通過(guò)無(wú)線(xiàn)方式進(jìn)行更新的功能。

    OTA固件升級流程

    對任何微控制器設備進(jìn)行編程都是從主機上的簡(jiǎn)單 C/C++ 程序開(kāi)始,然后使用編譯器構建可執行二進(jìn)制文件 (.bin)。

    然后使用微控制器特定工具鏈通過(guò) USB 將固件二進(jìn)制文件上傳到控制器。

    這種方法對于調試和開(kāi)發(fā)很有用,但是在構建和部署設備之后更新固件二進(jìn)制文件可能會(huì )更加困難。

    對于需要不斷改進(jìn)并且需要用戶(hù)反饋的最小可行產(chǎn)品 (MVP) 尤其如此。這就是為什么 OTA 固件升級是一項重要功能,將極大地有利于迭代開(kāi)發(fā)周期。

    幸運的是,大多數物聯(lián)網(wǎng)設備模塊都提供了有關(guān)如何進(jìn)行 OTA 固件升級的庫和示例代碼。

    通常,固件升級過(guò)程如下所示:

    步驟1:將二進(jìn)制文件上傳到服務(wù)器并獲取指向二進(jìn)制文件的URL。

    2 步:向 IoT 設備發(fā)送一條通知,告知新固件可供下載,并提供固件的 URL。

    3 步:物聯(lián)網(wǎng)設備將使用 HTTP 下載固件文件。固件文件應保存在不同的分區中(稍后會(huì )詳細介紹)。

    4 步:物聯(lián)網(wǎng)設備將檢查二進(jìn)制文件的真實(shí)性,并開(kāi)始加載新下載的固件。

    在第 3 步和第 4 步之后應建立回退機制。如果固件文件在下載過(guò)程中損壞,物聯(lián)網(wǎng)設備不應加載新固件或釋放已使用的資源。

    讓我們看一個(gè)使用 ESP32 演示無(wú)線(xiàn)固件升級的示例。

    請記住,此處討論的任何內容都將普遍適用于大多數物聯(lián)網(wǎng)模塊,并且應該是開(kāi)發(fā)您自己的物聯(lián)網(wǎng)解決方案的良好起點(diǎn)。

    OTA 更新也應該在設備的正常運行條件之外進(jìn)行。

    例如,如果物聯(lián)網(wǎng)設備正在操作一個(gè)重要的執行器來(lái)打開(kāi)和關(guān)閉氣門(mén),那么更新應該在后臺進(jìn)行,同時(shí)主要任務(wù)正在運行而不被中斷。

    這就是建議使用實(shí)時(shí)操作系統 (RTOS) 的原因,其中多線(xiàn)程可用于部署獨立運行的多個(gè)任務(wù)。

    OTA 數據分區

    ESP32 允許我們根據可用空間將設備的閃存分區為多個(gè)分區。

    當您在同一臺 PC 上運行兩個(gè)操作系統時(shí),這與計算機硬盤(pán)驅動(dòng)器分區非常相似。例如,一個(gè)分區可能運行 Windows 操作系統,而另一個(gè)分區可能運行 Linux。

    ESP32 模塊中,我們必須提供一個(gè) CSV 文件,其中包含分區的偏移量及其名稱(chēng)。下面是一個(gè) CSV 文件示例,其中概述了 ESP32 使用 OTA 功能所需的分區表:

    如您所見(jiàn),共有三種應用程序類(lèi)型,每種類(lèi)型包含 1 MB 的數據大小。

    工廠(chǎng)應用程序是永遠不會(huì )更改且無(wú)法更新的主要固件。這是經(jīng)過(guò)驗證的應用程序代碼,如果兩個(gè) OTA 分區中的任何一個(gè)分區出現任何問(wèn)題,設備將回退到該代碼。

    ESP32 上的引導加載程序將讀取“otadata”分區中存儲的數據,以查看三個(gè)分區中的哪一個(gè)最適合應用程序加載。

    如果“otadata”分區是空的,那么它將啟動(dòng)到工廠(chǎng)應用程序分區。這就是為什么有必要確保工廠(chǎng)應用程序包含檢查新固件升級的邏輯。

    安防措施

    物聯(lián)網(wǎng)設備升級過(guò)程中可能會(huì )發(fā)生攻擊,因此應對生產(chǎn)級產(chǎn)品采取廣泛的安全措施。

    在此示例中,我不會(huì )詳細說(shuō)明許多可用的安全功能。但是,我們將討論安全 OTA 流程的關(guān)鍵要素:

    使用安全的云服務(wù)為所有部署的設備啟用新固件升級的可信通知。

    使用 HTTPS (TLS) 連接后,IoT 設備應從云端安全下載固件映像。

    物聯(lián)網(wǎng)設備應該對新固件文件進(jìn)行身份驗證,以確保它是由受信任的來(lái)源制作的。使用代碼簽名技術(shù),一旦編寫(xiě)并上傳代碼,文件就會(huì )被簽名。

    然后,如果所有密鑰都匹配,IoT 設備將下載并確認簽名文件,然后加載新固件。設備的引導加載程序還應該執行額外的步驟,以確保正在加載的映像得到適當的簽名,以防發(fā)生注入攻擊。

    請輸入搜索關(guān)鍵字

    確定
    色鲁99热99re超碰精品_91精品一区二区三区无码吞精_亚洲国产欧洲综合997久久_一级a性色生活片久久无
  • <noframes id="6fok0"><bdo id="6fok0"><listing id="6fok0"></listing></bdo>
    <ruby id="6fok0"></ruby>

    <progress id="6fok0"></progress>
  • <progress id="6fok0"></progress>
    <ruby id="6fok0"><table id="6fok0"></table></ruby>
  • <progress id="6fok0"><u id="6fok0"><form id="6fok0"></form></u></progress>