www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 嵌入式IoT

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

說(shuō)明

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

下面從實(shí)際應(yīng)用案例中,剖析一下ota升級(jí)的方案。

方案1

最簡(jiǎn)單的OTA升級(jí),flash布局如下:


其升級(jí)的方案是,每個(gè)APP的尾部都會(huì)記錄如下的相關(guān)信息,可以作為跳轉(zhuǎn)的標(biāo)志。


所以可以這樣理解,APP0作為運(yùn)行分區(qū),APP1作為升級(jí)分區(qū),當(dāng)升級(jí)分區(qū)的標(biāo)志置位時(shí),將升級(jí)分區(qū)的代碼放到運(yùn)行分區(qū)中執(zhí)行。

每次都只會(huì)跳轉(zhuǎn)到APP0去執(zhí)行代碼。

優(yōu)點(diǎn):

該方案設(shè)計(jì)比較簡(jiǎn)單,資源占用小。

缺點(diǎn):

如果升級(jí)的過(guò)程中出現(xiàn)錯(cuò)誤,而校驗(yàn)又沒(méi)有檢測(cè)到,則會(huì)導(dǎo)致程序起不來(lái)。需要加強(qiáng)校驗(yàn)機(jī)制,也需要確保下載代碼完全的準(zhǔn)確性。

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

方案2

方案1會(huì)存在可能起不來(lái)的風(fēng)險(xiǎn),這時(shí)需要去現(xiàn)場(chǎng)進(jìn)行程序燒錄,成本很大。所以第二種是差分升級(jí)。

當(dāng)APP0運(yùn)行時(shí),將升級(jí)的程序放到APP1中,下次BOOT跳轉(zhuǎn)從APP1地址去運(yùn)行程序。

當(dāng)APP1運(yùn)行時(shí),將升級(jí)的程序放到APP0中,下次BOOT跳轉(zhuǎn)從APP0地址去運(yùn)行程序。

這樣可以解決一個(gè)問(wèn)題,當(dāng)模塊升級(jí)后連接不了網(wǎng)絡(luò)的問(wèn)題。如果連接網(wǎng)絡(luò)失敗,可以將失敗的原因放到備份SRAM中,多次連接不上,BOOT檢測(cè)到這個(gè)現(xiàn)象,可以跳轉(zhuǎn)到另外一個(gè)可以運(yùn)行的程序進(jìn)行降級(jí)運(yùn)行。因?yàn)閮蓚€(gè)可以運(yùn)行的程序沒(méi)有被破壞。

但是這個(gè)問(wèn)題解決不了由于程序傳輸錯(cuò)誤導(dǎo)致的程序啟動(dòng)不了的問(wèn)題。

方案3

我曾經(jīng)也在實(shí)際項(xiàng)目中用到過(guò)另外OTA方案,如下設(shè)計(jì):


該設(shè)計(jì)的核心在于BOOT中集成聯(lián)網(wǎng)模塊功能,當(dāng)BOOT下載時(shí),首先會(huì)置位相關(guān)的標(biāo)志位。

其設(shè)計(jì)上采用BOOT主要用于下載功能,當(dāng)程序運(yùn)行APP時(shí),需要升級(jí)時(shí),會(huì)首先將config的標(biāo)志位置位,然后跳轉(zhuǎn)到BOOT中進(jìn)行升級(jí),將代碼永遠(yuǎn)放到APP_BAK中,升級(jí)完成后,可以校驗(yàn)通過(guò)后,將APP_BAK的代碼拷貝到APP中,然后再運(yùn)行APP區(qū)代碼。

最后一切功能沒(méi)問(wèn)題后,再將config設(shè)置成正常狀態(tài),否則每次boot啟動(dòng)后都會(huì)進(jìn)行OTA請(qǐng)求。

優(yōu)點(diǎn):

程序功能可靠有保障,減少可能起不來(lái)的風(fēng)險(xiǎn)

缺點(diǎn):

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

方案4

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

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

流程圖如下:


解釋一下factory分區(qū)的實(shí)際應(yīng)用場(chǎng)景。

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

優(yōu)點(diǎn):

消除設(shè)備啟動(dòng)不了的問(wèn)題,減少程序下載失敗的風(fēng)險(xiǎn)

缺點(diǎn):

資源消耗太大,三個(gè)固件起碼需要外掛SPI flash才能設(shè)計(jì)的比較好,完全利用內(nèi)部flash,資源有點(diǎn)緊張。


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