日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 嵌入式IoT

物聯(lián)網(wǎng)中常用的ota升級方案

說明

在進行物聯(lián)網(wǎng)開發(fā)的過程中,免不了進行ota升級,那么如何做好ota升級又是非常值得思考的問題。

下面從實際應用案例中,剖析一下ota升級的方案。

方案1

最簡單的OTA升級,flash布局如下:


其升級的方案是,每個APP的尾部都會記錄如下的相關信息,可以作為跳轉的標志。


所以可以這樣理解,APP0作為運行分區(qū),APP1作為升級分區(qū),當升級分區(qū)的標志置位時,將升級分區(qū)的代碼放到運行分區(qū)中執(zhí)行。

每次都只會跳轉到APP0去執(zhí)行代碼。

優(yōu)點:

該方案設計比較簡單,資源占用小。

缺點:

如果升級的過程中出現(xiàn)錯誤,而校驗又沒有檢測到,則會導致程序起不來。需要加強校驗機制,也需要確保下載代碼完全的準確性。

也可能在升級之后,出現(xiàn)聯(lián)網(wǎng)模塊不能使用,導致需要去現(xiàn)場解決,這種問題發(fā)生后非常嚴重。

方案2

方案1會存在可能起不來的風險,這時需要去現(xiàn)場進行程序燒錄,成本很大。所以第二種是差分升級。

當APP0運行時,將升級的程序放到APP1中,下次BOOT跳轉從APP1地址去運行程序。

當APP1運行時,將升級的程序放到APP0中,下次BOOT跳轉從APP0地址去運行程序。

這樣可以解決一個問題,當模塊升級后連接不了網(wǎng)絡的問題。如果連接網(wǎng)絡失敗,可以將失敗的原因放到備份SRAM中,多次連接不上,BOOT檢測到這個現(xiàn)象,可以跳轉到另外一個可以運行的程序進行降級運行。因為兩個可以運行的程序沒有被破壞。

但是這個問題解決不了由于程序傳輸錯誤導致的程序啟動不了的問題。

方案3

我曾經也在實際項目中用到過另外OTA方案,如下設計:


該設計的核心在于BOOT中集成聯(lián)網(wǎng)模塊功能,當BOOT下載時,首先會置位相關的標志位。

其設計上采用BOOT主要用于下載功能,當程序運行APP時,需要升級時,會首先將config的標志位置位,然后跳轉到BOOT中進行升級,將代碼永遠放到APP_BAK中,升級完成后,可以校驗通過后,將APP_BAK的代碼拷貝到APP中,然后再運行APP區(qū)代碼。

最后一切功能沒問題后,再將config設置成正常狀態(tài),否則每次boot啟動后都會進行OTA請求。

優(yōu)點:

程序功能可靠有保障,減少可能起不來的風險

缺點:

由于BOOT中集成了比較多的功能,比較復雜,當替換聯(lián)網(wǎng)模塊時,BOOT和APP的代碼需要同步修改。

方案4

rt-thread官網(wǎng)上有一種OTA的方案,具體實現(xiàn)如下:

分區(qū)名 起始地址 分區(qū)大小 分區(qū)位置 介紹
app 自定義 自定義 片內 Flash 存儲 app 固件
download 自定義 自定義 片內 Flash 或者片外 SPI Flash 存儲待升級固件
factory 自定義 自定義 片內 Flash 或者片外 SPI Flash 存儲出廠固件
boot -- -- -- boot固件

流程圖如下:


解釋一下factory分區(qū)的實際應用場景。

由于差分升級或者普通的BOOT升級方案都會存在系統(tǒng)啟動不了的可能性,所以增加了一個一定可以啟動的固件。具體的使用是需要boot中檢測一個硬件IO,當該IO被長時間按下后,會進入出廠程序設置。這樣減少了設備出問題后,技術人員需要現(xiàn)場升級的煩惱,即使不懂技術的人也能夠按下按鍵進行復位。

優(yōu)點:

消除設備啟動不了的問題,減少程序下載失敗的風險

缺點:

資源消耗太大,三個固件起碼需要外掛SPI flash才能設計的比較好,完全利用內部flash,資源有點緊張。


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
關閉