訂閱
糾錯(cuò)
加入自媒體

OTA 升級(jí)過(guò)程中斷了,怎么辦?

在最近的兩篇文章中,我們從概念和流程上梳理了: 一個(gè)終端設(shè)備如何把一個(gè)固件,安全無(wú)誤的從服務(wù)器上,下載到本地。

這篇文章就繼續(xù)往下深入,以一個(gè)實(shí)際的 ESP32 項(xiàng)目,來(lái)完整的梳理一下 OTA 升級(jí)的全過(guò)程。

主要包括下面 3 部分內(nèi)容:

AWS 平臺(tái)上,部署一個(gè) OTA 升級(jí)任務(wù)時(shí),需要完成哪些步驟;

ESP32 模組中,關(guān)于 Flash 分區(qū)和 OTA 升級(jí)控制過(guò)程和代碼說(shuō)明;

如何通過(guò) ESP32,給與之相連的 MCU 進(jìn)行 OTA 升級(jí);

PS: 在下面的內(nèi)容中,終端設(shè)備指的就是 ESP32 模組。

ESP32 Flash 分區(qū)

其實(shí) ESP32 的官方文檔的過(guò)程描述,已經(jīng)是非常的詳細(xì)了。

不僅把每一個(gè)操作的步驟都寫的很清楚,而且把一些可能遇到的錯(cuò)誤,都會(huì)做一些善意的提醒。

下面這部分內(nèi)容,基本上是來(lái)源于官方的文檔。

我們這里只是把一些與本文相關(guān)的、比較重要的內(nèi)容摘錄在這里。

首先要了解的,肯定是 Flash 的分區(qū)信息了。

所有的固件、數(shù)據(jù),都要存儲(chǔ)在 Flash 中,它是一個(gè)系統(tǒng)的記憶部件,離開(kāi)了它,再怎么聰明的 CPU 都無(wú)用武之地。

關(guān)于分區(qū)表,ESP32 中預(yù)定義了 2 份分區(qū)表,分別對(duì)應(yīng):是否存在 OTA 功能這兩種情況,截圖如下:

沒(méi)有 OTA 的分區(qū)表:

有 OTA 功能的分區(qū)表:

既然我們是在描述 OTA 過(guò)程,那肯定就是以帶有 OTA 功能的這個(gè)分區(qū)表為準(zhǔn)了。

在這張分區(qū)表中,一共定義了 3 個(gè)應(yīng)用程序分區(qū):

factory 分區(qū);

ota_0 分區(qū);

ota_1 分區(qū);

這三個(gè)分區(qū)的類型都是 app,但具體 app 的類型不相同。

其中,位于 0x10000 偏移地址處的為出廠應(yīng)用程序(factory),其余兩個(gè)為 OTA 應(yīng)用程序(ota_0,ota_1)。

名為 otadata 的數(shù)據(jù)分區(qū),用于保存 OTA 升級(jí)時(shí)需要的數(shù)據(jù)。

啟動(dòng)加載器會(huì)查詢?cè)摲謪^(qū)(otadata)的數(shù)據(jù),以判斷:應(yīng)該從哪個(gè) OTA 應(yīng)用程序分區(qū)來(lái)加載程序。

如果 otadata 分區(qū)為空(說(shuō)明這臺(tái)設(shè)備還沒(méi)有進(jìn)行過(guò) OTA 升級(jí)),則會(huì)執(zhí)行出廠程序,也就是執(zhí)行 factory 分區(qū)中的固件程序。

如果 otadata 分區(qū)非空,則啟動(dòng)加載器將加載這個(gè)分區(qū)中的數(shù)據(jù),進(jìn)而判斷: 啟動(dòng)哪個(gè) OTA 鏡像文件。

1  2  3  下一頁(yè)>  
聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問(wèn)題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過(guò)于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無(wú)評(píng)論

暫無(wú)評(píng)論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號(hào)
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯(cuò)
x
*文字標(biāo)題:
*糾錯(cuò)內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號(hào)