物聯網 (IoT) 產品的設計者需要不斷地評估平臺和組件的選擇,以降低成本和功率,同時提高性能和加快連接應用的設計。目前有相當多的解決方案可供選擇,但設計者面臨的挑戰是,一旦部署,如何進行無線空中下載 (OTA) 更新以保持設備固件的更新。
關鍵是要看一下現有的平臺,看看它們有哪些額外的工具和支持來支持 OTA 更新。這樣的支持可以大大簡化過程,但前期可能需要一些關注。
本文討論了 OTA 基本原理,以及為什么它是幾乎每個物聯網系統都需要支持的關鍵功能,盡管開發者面臨著諸多挑戰。然后以EspressifSystems的ESP32支持藍牙和 Wi-Fi 的微控制器以及相關模塊、套件和 ESP 物聯網開發框架 (ESP-IDF) 為例,展示如何打造一個 OTA 分區,并利用 otatool.py 腳本在應用仍在運行時執行固件更新。
OTA 更新介紹
大多數開發團隊的核心重點是實現其產品的特定功能,也就是產品差異化業務邏輯。然而,每個物聯網產品都有一個基本功能集,需要在設備的整個生命周期內進行部署、配置和維護。安全更新是一個很好的例子。鑒于需要執行這些更新,在評估一個合適的開發平臺時,一個重要但容易被忽視的功能是引導程序或固件 OTA (FOTA) 更新(有時只稱為 OTA)能力。
OTA 為工程師提供了根據技術和業務要求遠程維護和升級其產品的能力,而不需要派維護人員到設備上或讓終端客戶主動對設備做一些更新。相反,所有這些成本都可以通過讓設備在后臺默默地或在半夜操作之類“停工”時間內升級其固件方式來消除。
OTA 架構可以有許多不同的形式和配置,從定制的解決方案一直到云提供商提供的標準實現方案。圖 1 中可以看到一個典型的架構實例。
![wKgaomVCRfuAEMFvAAGoF_7OcIQ498.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRfuAEMFvAAGoF_7OcIQ498.png)
在這個例子中,一個OEM 使用亞馬遜網絡服務 (AWS) 物聯網內核上傳新的固件版本,然后使用內置的作業功能將更新部署到現場的設備。這只是眾多例子中的一個,幾乎每個云供應商都有類似的解決方案。
今天有許多支持OTA 的微控制器可供選擇。一個廣受低成本系統和制造商歡迎的微控制器是ESP32。ESP32 之所以如此受歡迎,有以下幾個原因:
選擇一個ESP32 模塊進行 OTA 測試
有幾種不同的ESP32 模塊和開發板可供用戶購買,以便了解 OTA 實例。以Adafruit3405ESP32 Huzzah Feather 板為例(圖 2)。這是一塊低成本的開發板,包括對 ESP32 進行編程的所有電路,并通過一個 USB 連接器為其供電。
![wKgaomVCRfyAVQ5bAAQR0TIhDZU276.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRfyAVQ5bAAQR0TIhDZU276.png)
另一塊可以使用的開發板是 Espressif Systems 的ESP32-LYRATD-SYNA音頻板(圖 3)。該開發板包括ESP32-WROVER-B模塊。?
![wKgaomVCRfyABmY3AAf3r3Oo-FU295.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRfyABmY3AAf3r3Oo-FU295.png)
ESP32-LYRATD-SYNA模塊也有 4 Mb 閃存,以及用于音頻應用的所有電路。該板包括一個音頻編解碼器、一個音頻放大器以及耳機和揚聲器插孔,以全面測試音頻應用。
最后一塊可用于OTA 測試的開發板是 Espressif 的ESP32-S2-SAOLA-1RI開發板(圖 4)。說到開發板,這款最不昂貴的。該板包含一個 ESP32 Wrover 模塊,以及對該芯片進行編程的電路。除了它所包含的引腳可以很容易地放到試驗板上進行測試外,沒有任何其他的裝飾。
![wKgaomVCRfyAaBWiAATAC93f6fY352.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRfyAaBWiAATAC93f6fY352.png)
為測試而選擇的具體板子并不太重要,因為每個 ESP32 模塊都利用了 ESP-IDF。這個框架旨在通過包括驅動程序、中間件、RTOS 以及對本文而言很重要的引導程序和 OTA 庫,從而為開發者簡化了軟件開發活動。
引導程序允許開發者利用 OTA 更新,并在主要應用仍在運行時對內存進行分區以更新固件,這有助于最大限度地減少停機時間。引導程序的設置一開始可能看起來很復雜,但如果指導得當,是很簡單的。
OTA 開發工作流
ESP32 的 OTA 開發工作流將根據業務需求和產品組件選擇而略有不同。例如,一個利用 AWS 的團隊可能會使用 AWS 的入門指南和例子來啟動其 ESP32 OTA 解決方案。另一方面,一個正在定制自己解決方案的公司也可能會利用ESP32 的說明文檔。在這篇文章中,我們要看的是 ESP32 層面內容,而不是在云端。原因是這些內容是通用的,適用于 ESP32 的 OTA,無論使用哪個云提供商或解決方案。
一般來說,在ESP32 上設置 OTA 更新的過程包括以下步驟:
-
配置 ESP32 分區表
-
下載支持 OTA 的固件
-
開發一個工具,充當服務器,推送新的固件
-
將最新的固件下載到ESP32 上
-
調換到新應用
-
HTTPS OTA
-
本地 OTA
-
簡單 OTA
-
OTA 工具(python 腳本示例)
![wKgaomVCRfyAJCvVAASUAjNzucg002.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRfyAJCvVAASUAjNzucg002.png)
為 OTA 配置一個 ESP32 應用程序
ESP32 包含一個分區表,描述了什么類型的數據位于微控制器上以及它的位置。例如,一個標準的 ESP32 分區表看起來像表 1。
![wKgaomVCRf2AJQuJAADXBzm9Cmw109.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRf2AJQuJAADXBzm9Cmw109.png)
![wKgaomVCRf2AGXCSAAFZaW0t8Gs808.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRf2AGXCSAAFZaW0t8Gs808.png)
為了運行 OTA 例子,有一套簡單的說明,列在 GitHub 的“如何使用實例”部分。該部分描述了如何構建應用并對其進行編程。
還有 otatool,可以用來更新固件。這個腳本通常用于:
-
讀取、寫入和擦除OTA 分區
-
切換引導分區
- 切換到工廠分區
./otatool_example.sh
或者使用Python。
pythonotatool_example.py
當談到為 OTA 配置 ESP32 時,確保分區的設置是一個關鍵步驟。
使用的技巧和訣竅
EPS32 OTA 解決方案可以加速和簡化開發者的固件更新方案。為了防止解決方案成為開發負擔,有幾個“技巧和訣竅”應該牢記在心。如果可能的話,利用該公司的云供應商所包含的現有 OTA 框架。這可以極大地簡化開發和集成。
使用低成本的開發板來測試 OTA 功能和引導程序。ESP32 有幾個選項,可能需要一些實驗來確定哪一個是最適合手頭的應用。
對于定制解決方案,可利用 GitHub 上的 ESP32 OTA 實例。
對于產品作為Wi-Fi 路由器或集線器的應用,考慮將固件鏡像下載到外部存儲器,并從大容量存儲設備執行更新。
花一些時間查看關于分區表的 ESP32 說明文檔。這與典型的微控制器實現有點不同。
出于安全考慮,最好禁用應用回滾。如果應用可以回滾到以前的版本,潛在的攻擊者就有可能推送一個帶有已知漏洞的版本,并破壞系統。
遵循這些“技巧和決竅”的開發者會發現,當他們試圖利用 ESP32 或任何其他 OTA 解決方案時,他們可以節省大量的時間并免受煎熬。
結語
OTA 更新是越來越多的物聯網和嵌入式系統的一個重要功能。開發人員需要很好地掌握這種功能的有效實現方法,以便在設計和開發過程中以及在產品出廠后節省前期時間。ESP32 無線微控制器已經廣泛用于各種類型的設備,如上所述,它有一個現成的OTA 解決方案。通過利用 ESP-IDF 和相關的模塊和平臺,并使用一些基于經驗的技巧和決竅,開發者可以大大減輕他們的設計時間,并完成他們的 OTA 解決方案并使之可靠地運行。
秘技知識學不停 專屬福利享不停
就等您加入!
點此登記
賺積分、換好禮
立即到「會員權益」查看您的禮遇! 如有任何問題,歡迎聯系得捷電子DigiKey的客服團隊中國(人民幣)客服
![wKgaomVCRf2AWlNjAAADBaTNctA797.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRf2AWlNjAAADBaTNctA797.png)
![wKgaomVCRf6ABJDUAAADAQryhLs407.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRf6ABJDUAAADAQryhLs407.png)
![wKgaomVCRf6AcXgTAAADNUSMvSY694.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRf6AcXgTAAADNUSMvSY694.png)
![wKgaomVCRf6AboFsAAACyRJDcPk772.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRf6AboFsAAACyRJDcPk772.png)
中國(美金)/ 香港客服
![wKgaomVCRf2AWlNjAAADBaTNctA797.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRf2AWlNjAAADBaTNctA797.png)
400-882-4440
![wKgaomVCRf2AWlNjAAADBaTNctA797.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRf2AWlNjAAADBaTNctA797.png)
![wKgaomVCRf6AcXgTAAADNUSMvSY694.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRf6AcXgTAAADNUSMvSY694.png)
![wKgaomVCRf6ADQsvAACBLhwpIzY806.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRf6ADQsvAACBLhwpIzY806.png)
點擊下方“閱讀原文”查看更多
讓我知道你在看喲![wKgaomVCRf-ADn5bAAAD385SHbk553.png](https://file1.elecfans.com//web2/M00/AB/E9/wKgaomVCRf-ADn5bAAAD385SHbk553.png)
原文標題:支持 OTA 更新的MCU很多 為何 ESP32這么受歡迎?
文章出處:【微信公眾號:得捷電子DigiKey】歡迎添加關注!文章轉載請注明出處。
-
得捷電子
+關注
關注
1文章
255瀏覽量
9061
原文標題:支持 OTA 更新的MCU很多 為何 ESP32這么受歡迎?
文章出處:【微信號:得捷電子DigiKey,微信公眾號:得捷電子DigiKey】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
【AI技術支持】ESP32-S3模組EspBleOTA搜索不到ble_ota例程的藍牙問題處理
![【AI技術<b class='flag-5'>支持</b>】<b class='flag-5'>ESP32</b>-S3模組EspBleOTA搜索不到ble_<b class='flag-5'>ota</b>例程的藍牙問題處理](https://file.elecfans.com/web2/M00/45/DA/poYBAGKPGziABtawAAAYlXODTds073.jpg)
esp8266和esp32區別是什么
esp32用什么軟件編程
esp32c3 OTA鏡像錯誤的原因?
ESP32-WROOM-32E、ESP32-WROOM-32D、ESP32-WROOM-32U 有什么區別?ESP32-WROOM-32 后綴字母代表的意思是?
![<b class='flag-5'>ESP32</b>-WROOM-32E、<b class='flag-5'>ESP32</b>-WROOM-32D、<b class='flag-5'>ESP32</b>-WROOM-32U 有什么區別?<b class='flag-5'>ESP32</b>-WROOM-32 后綴字母代表的意思是?](https://file1.elecfans.com/web2/M00/FC/EE/wKgZomaXJ0yAaZphAAP843IV7L8438.png)
請問怎么使用ardunio工程打開esp32-cam的menuconfig使能OTA?
ESP32-S2-Kaluga-1更新了重新編譯的camera代碼,比出廠時噪點多很多怎么解決?
請問esp32 ota升級如何獲取更新進度?
esp32s3進行https-OTA時,出現wifi:m f null更新失敗怎么解決?
請問ESP32S3的OTA過程是否支持保存燒寫進度,掉電重啟后從掉電前位置開始燒寫?
借助ESP32-S3主控MCU、ChirpLAN?小網關搭建大網絡
ESP32-P4開發板問題揭秘!
![<b class='flag-5'>ESP32</b>-P4開發板問題揭秘!](https://file.elecfans.com/web2/M00/45/DA/poYBAGKPGziABtawAAAYlXODTds073.jpg)
評論