新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 支持 OTA 更新的MCU很多 為何 ESP32這么受歡迎?

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

作者: 時間:2023-11-06 來源:DigiKey 收藏

物聯(lián)網(wǎng) (IoT) 產(chǎn)品的設(shè)計者需要不斷地評估平臺和組件的選擇,以降低成本和功率,同時提高性能和加快連接應(yīng)用的設(shè)計。目前有相當(dāng)多的解決方案可供選擇,但設(shè)計者面臨的挑戰(zhàn)是,一旦部署,如何進(jìn)行無線空中下載 (OTA) 更新以保持設(shè)備固件的更新。

本文引用地址:http://butianyuan.cn/article/202311/452481.htm

關(guān)鍵是要看一下現(xiàn)有的平臺,看看它們有哪些額外的工具和支持來支持 OTA 更新。這樣的支持可以大大簡化過程,但前期可能需要一些關(guān)注。

本文討論了 OTA 基本原理,以及為什么它是幾乎每個物聯(lián)網(wǎng)系統(tǒng)都需要支持的關(guān)鍵功能,盡管開發(fā)者面臨著諸多挑戰(zhàn)。然后以 Espressif Systems 的 支持藍(lán)牙和 Wi-Fi 的微控制器以及相關(guān)模塊、套件和 ESP 物聯(lián)網(wǎng)開發(fā)框架 (ESP-IDF) 為例,展示如何打造一個 OTA 分區(qū),并利用 otatool.py 腳本在應(yīng)用仍在運行時執(zhí)行固件更新。

OTA 更新介紹

大多數(shù)開發(fā)團(tuán)隊的核心重點是實現(xiàn)其產(chǎn)品的特定功能,也就是產(chǎn)品差異化業(yè)務(wù)邏輯。然而,每個物聯(lián)網(wǎng)產(chǎn)品都有一個基本功能集,需要在設(shè)備的整個生命周期內(nèi)進(jìn)行部署、配置和維護(hù)。安全更新是一個很好的例子。鑒于需要執(zhí)行這些更新,在評估一個合適的開發(fā)平臺時,一個重要但容易被忽視的功能是引導(dǎo)程序或固件 OTA (FOTA) 更新(有時只稱為 OTA)能力。

OTA 為工程師提供了根據(jù)技術(shù)和業(yè)務(wù)要求遠(yuǎn)程維護(hù)和升級其產(chǎn)品的能力,而不需要派維護(hù)人員到設(shè)備上或讓終端客戶主動對設(shè)備做一些更新。相反,所有這些成本都可以通過讓設(shè)備在后臺默默地或在半夜操作之類“停工”時間內(nèi)升級其固件方式來消除。

OTA 架構(gòu)可以有許多不同的形式和配置,從定制的解決方案一直到云提供商提供的標(biāo)準(zhǔn)實現(xiàn)方案。圖 1 中可以看到一個典型的架構(gòu)實例。

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

圖 1:OTA 架構(gòu)概覽展示在現(xiàn)場向所部署設(shè)備更新應(yīng)用固件的示例過程。(圖片來源:Beningo Embedded Group)

在這個例子中,一個OEM 使用亞馬遜網(wǎng)絡(luò)服務(wù) (AWS) 物聯(lián)網(wǎng)內(nèi)核上傳新的固件版本,然后使用內(nèi)置的作業(yè)功能將更新部署到現(xiàn)場的設(shè)備。這只是眾多例子中的一個,幾乎每個云供應(yīng)商都有類似的解決方案。

今天有許多支持OTA 的微控制器可供選擇。一個廣受低成本系統(tǒng)和制造商歡迎的微控制器是。 之所以如此受歡迎,有以下幾個原因:

  • 它有一個集成的微控制器,有 Wi-Fi/藍(lán)牙認(rèn)證模塊可用

  • 低成本

  • 開源開發(fā)環(huán)境和軟件框架,如 ESP-IDF 和 ESP 音頻開發(fā)框架 (ESP-ADF)

  • 許多現(xiàn)有的應(yīng)用實例可在網(wǎng)上免費獲得

選擇一個ESP32 模塊進(jìn)行 OTA 測試

有幾種不同的ESP32 模塊和開發(fā)板可供用戶購買,以便了解 OTA 實例。以 Adafruit 3405 ESP32 Huzzah Feather 板為例(圖 2)。這是一塊低成本的開發(fā)板,包括對 ESP32 進(jìn)行編程的所有電路,并通過一個 USB 連接器為其供電。

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

圖2 3405 的核心是一個 ESP32-WROOM-32D 模塊,它配備了 4 Mb 閃存、Wi-Fi、藍(lán)牙和一套完整的外設(shè),幾乎適用于任何應(yīng)用。

另一塊可以使用的開發(fā)板是 Espressif Systems 的 ESP32-LYRATD-SYNA 音頻板(圖 3)。該開發(fā)板包括 ESP32-WROVER-B 模塊。

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

圖3 ESP32-LYRATD-SYNA模塊也有 4 Mb 閃存,以及用于音頻應(yīng)用的所有電路。該板包括一個音頻編解碼器、一個音頻放大器以及耳機(jī)和揚聲器插孔,以全面測試音頻應(yīng)用。

最后一塊可用于OTA 測試的開發(fā)板是 Espressif 的 ESP32-S2-SAOLA-1RI 開發(fā)板(圖 4)。說到開發(fā)板,這款最不昂貴的。該板包含一個 ESP32 Wrover 模塊,以及對該芯片進(jìn)行編程的電路。除了它所包含的引腳可以很容易地放到試驗板上進(jìn)行測試外,沒有任何其他的裝飾。

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

圖4 為測試而選擇的具體板子并不太重要,因為每個 ESP32 模塊都利用了 ESP-IDF。這個框架旨在通過包括驅(qū)動程序、中間件、RTOS 以及對本文而言很重要的引導(dǎo)程序和 OTA 庫,從而為開發(fā)者簡化了軟件開發(fā)活動。

引導(dǎo)程序允許開發(fā)者利用 OTA 更新,并在主要應(yīng)用仍在運行時對內(nèi)存進(jìn)行分區(qū)以更新固件,這有助于最大限度地減少停機(jī)時間。引導(dǎo)程序的設(shè)置一開始可能看起來很復(fù)雜,但如果指導(dǎo)得當(dāng),是很簡單的。

OTA 開發(fā)工作流

ESP32 的 OTA 開發(fā)工作流將根據(jù)業(yè)務(wù)需求和產(chǎn)品組件選擇而略有不同。例如,一個利用 AWS 的團(tuán)隊可能會使用 AWS 的入門指南和例子來啟動其 ESP32 OTA 解決方案。另一方面,一個正在定制自己解決方案的公司也可能會利用ESP32 的說明文檔。在這篇文章中,我們要看的是 ESP32 層面內(nèi)容,而不是在云端。原因是這些內(nèi)容是通用的,適用于 ESP32 的 OTA,無論使用哪個云提供商或解決方案。

一般來說,在ESP32 上設(shè)置 OTA 更新的過程包括以下步驟:

  • 配置 ESP32 分區(qū)表

  • 下載支持 OTA 的固件

  • 開發(fā)一個工具,充當(dāng)服務(wù)器,推送新的固件

  • 將最新的固件下載到ESP32 上

很明顯,這是簡化的方法。開發(fā)人員應(yīng)再次查看圖 1 以了解整個固件更新過程。這個過程可能相當(dāng)復(fù)雜,所以建議利用位于 GitHub 上的現(xiàn)有 ESP32 OTA 實例。這些例子提供了幾個關(guān)鍵實例,如:

  • HTTPS OTA

  • 本地 OTA

  • 簡單 OTA

  • OTA 工具(python 腳本示例)

  • 調(diào)換到新應(yīng)用

圖 5 顯示了部署和更新過程的步驟。開發(fā)者需要先執(zhí)行紅色的步驟,將 OTA 解決方案部署到 ESP32 模塊上。橙色的步驟是下一步,執(zhí)行這些步驟是為了推進(jìn) OTA 更新。

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

圖5 為 OTA 配置一個 ESP32 應(yīng)用程序

ESP32 包含一個分區(qū)表,描述了什么類型的數(shù)據(jù)位于微控制器上以及它的位置。例如,一個標(biāo)準(zhǔn)的 ESP32 分區(qū)表看起來像表 1。

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

表1 有一個工廠應(yīng)用,然后是 NVS 庫和物理層 (PHY) 初始化(init) 數(shù)據(jù)部分。為了使用 OTA 功能,該表需要更新,以便除了主要(工廠)應(yīng)用外,還要為 OTA 更新固件指定存儲器位置。對于 OTA,通常有兩個分區(qū)被分配用于更新。一個是正在更新的固件,一個是正在下載的固件,它將成為最新版本。這使得工廠應(yīng)用能夠保持不變。更新后的 OTA 分區(qū)表將看起來像表 2。

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

表2:典型的 ESP32 更新 OTA 分區(qū)表。(表格來源:Beningo Embedded)

如表所示,現(xiàn)在有一個ota_0 和 一個ota_1 應(yīng)用部分,其大小為 1Mb,此外還有一個數(shù)據(jù)部分 (otadata),是為更新過程分配的 RAM。這個表可以由開發(fā)者修改和更新,以適應(yīng)應(yīng)用。

為了運行 OTA 例子,有一套簡單的說明,列在 GitHub 的“如何使用實例”部分。該部分描述了如何構(gòu)建應(yīng)用并對其進(jìn)行編程。

還有 otatool,可以用來更新固件。這個腳本通常用于:

  • 讀取、寫入和擦除OTA 分區(qū)

  • 切換引導(dǎo)分區(qū)

  • 切換到工廠分區(qū)

該示例腳本可以通過使用命令在終端運行該示例來執(zhí)行。

./otatool_example.sh

或者使用Python。

python otatool_example.py

當(dāng)談到為 OTA 配置 ESP32 時,確保分區(qū)的設(shè)置是一個關(guān)鍵步驟。

使用的技巧和訣竅

EPS32 OTA 解決方案可以加速和簡化開發(fā)者的固件更新方案。為了防止解決方案成為開發(fā)負(fù)擔(dān),有幾個“技巧和訣竅”應(yīng)該牢記在心。

如果可能的話,利用該公司的云供應(yīng)商所包含的現(xiàn)有 OTA 框架。這可以極大地簡化開發(fā)和集成。

使用低成本的開發(fā)板來測試 OTA 功能和引導(dǎo)程序。ESP32 有幾個選項,可能需要一些實驗來確定哪一個是最適合手頭的應(yīng)用。

對于定制解決方案,可利用 GitHub 上的 ESP32 OTA 實例。

對于產(chǎn)品作為Wi-Fi 路由器或集線器的應(yīng)用,考慮將固件鏡像下載到外部存儲器,并從大容量存儲設(shè)備執(zhí)行更新。

花一些時間查看關(guān)于分區(qū)表的 ESP32 說明文檔。這與典型的微控制器實現(xiàn)有點不同。

出于安全考慮,最好禁用應(yīng)用回滾。如果應(yīng)用可以回滾到以前的版本,潛在的攻擊者就有可能推送一個帶有已知漏洞的版本,并破壞系統(tǒng)。

遵循這些“技巧和決竅”的開發(fā)者會發(fā)現(xiàn),當(dāng)他們試圖利用 ESP32 或任何其他 OTA 解決方案時,他們可以節(jié)省大量的時間并免受煎熬。

結(jié)語

OTA 更新是越來越多的物聯(lián)網(wǎng)和嵌入式系統(tǒng)的一個重要功能。開發(fā)人員需要很好地掌握這種功能的有效實現(xiàn)方法,以便在設(shè)計和開發(fā)過程中以及在產(chǎn)品出廠后節(jié)省前期時間。

ESP32 無線微控制器已經(jīng)廣泛用于各種類型的設(shè)備,如上所述,它有一個現(xiàn)成的OTA 解決方案。通過利用 ESP-IDF 和相關(guān)的模塊和平臺,并使用一些基于經(jīng)驗的技巧和決竅,開發(fā)者可以大大減輕他們的設(shè)計時間,并完成他們的 OTA 解決方案并使之可靠地運行。

(作者: Jacob Beningo,來源:得捷電子微信公眾號)



關(guān)鍵詞: DigiKey ESP32

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉