OTA 升級過程中斷了,怎么辦?
在最近的兩篇文章中,我們從概念和流程上梳理了: 一個終端設備如何把一個固件,安全無誤的從服務器上,下載到本地。
這篇文章就繼續往下深入,以一個實際的 ESP32 項目,來完整的梳理一下 OTA 升級的全過程。

主要包括下面 3 部分內容:
AWS 平臺上,部署一個 OTA 升級任務時,需要完成哪些步驟;
ESP32 模組中,關于 Flash 分區和 OTA 升級控制過程和代碼說明;
如何通過 ESP32,給與之相連的 MCU 進行 OTA 升級;
PS: 在下面的內容中,終端設備指的就是 ESP32 模組。
ESP32 Flash 分區
其實 ESP32 的官方文檔的過程描述,已經是非常的詳細了。
不僅把每一個操作的步驟都寫的很清楚,而且把一些可能遇到的錯誤,都會做一些善意的提醒。
下面這部分內容,基本上是來源于官方的文檔。
我們這里只是把一些與本文相關的、比較重要的內容摘錄在這里。
首先要了解的,肯定是 Flash 的分區信息了。
所有的固件、數據,都要存儲在 Flash 中,它是一個系統的記憶部件,離開了它,再怎么聰明的 CPU 都無用武之地。
關于分區表,ESP32 中預定義了 2 份分區表,分別對應:是否存在 OTA 功能這兩種情況,截圖如下:
沒有 OTA 的分區表:

有 OTA 功能的分區表:

既然我們是在描述 OTA 過程,那肯定就是以帶有 OTA 功能的這個分區表為準了。

在這張分區表中,一共定義了 3 個應用程序分區:
factory 分區;
ota_0 分區;
ota_1 分區;
這三個分區的類型都是 app,但具體 app 的類型不相同。
其中,位于 0x10000 偏移地址處的為出廠應用程序(factory),其余兩個為 OTA 應用程序(ota_0,ota_1)。
名為 otadata 的數據分區,用于保存 OTA 升級時需要的數據。
啟動加載器會查詢該分區(otadata)的數據,以判斷:應該從哪個 OTA 應用程序分區來加載程序。
如果 otadata 分區為空(說明這臺設備還沒有進行過 OTA 升級),則會執行出廠程序,也就是執行 factory 分區中的固件程序。
如果 otadata 分區非空,則啟動加載器將加載這個分區中的數據,進而判斷: 啟動哪個 OTA 鏡像文件。
請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
- 1 AI狂歡遇上油價破百,全球股市還能漲多久? | 產聯看全球
- 2 OpenAI深夜王炸!ChatGPT Images 2.0實測:中文穩、細節炸,設計師慌了
- 3 6000億美元估值錨定:字節跳動的“去單一化”突圍與估值重構
- 4 Tesla AI5芯片最新進展總結
- 5 連夜測了一波DeepSeek-V4,我發現它可能只剩“審美”這個短板了
- 6 熱點丨AI“瑜亮之爭”:既生OpenClaw,何生Hermes?
- 7 AI界的殺豬盤:9秒刪庫跑路,全員被封號,還繼續扣錢!
- 8 2026,人形機器人只贏了面子
- 9 DeepSeek降價90%:價格屠夫不是身份,是戰略
- 10 AI Infra產業鏈卡在哪里了?


分享













