基于Bootloader的可靠嵌入式軟件遠(yuǎn)程更新機(jī)制
在一個(gè)實(shí)際運(yùn)行的無線遠(yuǎn)程監(jiān)控系統(tǒng)中應(yīng)用本更新機(jī)制,以驗(yàn)證和測試其性能。首先對(duì)更新進(jìn)程的運(yùn)行效果進(jìn)行測試。結(jié)果表明,每次測試更新進(jìn)程均能正確的啟動(dòng)與控制模塊之間的數(shù)據(jù)傳輸,通過在應(yīng)用層引入確認(rèn)和重傳機(jī)制,新程序的鏡像文件均能通過Internet和無線網(wǎng)絡(luò)準(zhǔn)確的傳輸至前端運(yùn)行模塊。測試的重點(diǎn)是系統(tǒng)軟件更新完畢后新程序啟動(dòng)的可靠性。對(duì)軟件更新過程中遇到的干擾和數(shù)據(jù)錯(cuò)誤采取模擬的方式,以此測試bootloader能否正確的啟動(dòng)備份程序。測試中模擬了3類情況:一類是FLASH上的程序鏡像文件隨機(jī)的在某些地址處出現(xiàn)數(shù)據(jù)錯(cuò)誤,另一類是FLASH上的程序鏡像文件隨機(jī)的出現(xiàn)某些數(shù)據(jù)的地址錯(cuò)位,第三類是啟動(dòng)點(diǎn)的數(shù)值發(fā)生錯(cuò)誤。將這3類情況分為6種具體方案進(jìn)行測試,每個(gè)方案測試20次,查看系統(tǒng)能否按照期望的結(jié)果啟動(dòng)程序鏡像。測試方案及結(jié)果如表1所示。
從測試結(jié)果中可以看出,本更新機(jī)制對(duì)FLASH中的數(shù)據(jù)錯(cuò)誤識(shí)別效果最好,每次啟動(dòng)時(shí)均能正確地進(jìn)入異常并啟動(dòng)備份程序;對(duì)FLASH中的數(shù)據(jù)地址錯(cuò)位的識(shí)別率也達(dá)到了80%以上。當(dāng)程序的數(shù)據(jù)正確但存放地址錯(cuò)位時(shí),存在一定的概率會(huì)使得ARM處理器取出的指令是可以識(shí)別和執(zhí)行的,從而使程序運(yùn)行到未知狀態(tài)而導(dǎo)致系統(tǒng)無法啟動(dòng)。此外,更新機(jī)制對(duì)配置區(qū)具有較強(qiáng)的修復(fù)能力,防止了因?yàn)榕渲脜^(qū)數(shù)據(jù)出現(xiàn)錯(cuò)誤而導(dǎo)致無法啟動(dòng)的情況的發(fā)生。實(shí)驗(yàn)平臺(tái)的測試結(jié)果表明本更新機(jī)制能有效地提高嵌入式軟件更新后重新啟動(dòng)的穩(wěn)定性和可靠性,具有較強(qiáng)的自我恢復(fù)能力。
5 結(jié)語
本文以提高可靠性為設(shè)計(jì)目標(biāo),提出了一種基于bootloader的嵌入式軟件遠(yuǎn)程自動(dòng)更新機(jī)制。本更新機(jī)制由于同時(shí)保存了三個(gè)鏡像文件,因此需要更多的FLASH存儲(chǔ)空間,略微增加了嵌入式系統(tǒng)的硬件成本。但相對(duì)于更新機(jī)制的遠(yuǎn)程化、自動(dòng)化和可靠性所帶來的維護(hù)成本的巨大降低,這個(gè)代價(jià)是值得的。
本文主要?jiǎng)?chuàng)新點(diǎn):通過設(shè)置兩個(gè)備份程序存儲(chǔ)區(qū),利用嵌入式處理器的異常機(jī)制,使嵌入式系統(tǒng)的更新具有了較強(qiáng)的自我恢復(fù)能力,較大的提升嵌入式軟件更新過程的可靠性,尤其能夠有效地防止嵌入式系統(tǒng)更新后出現(xiàn)的系統(tǒng)啟動(dòng)失敗的情況,具有較高的實(shí)用價(jià)值。另外,通過CDMA系統(tǒng)實(shí)現(xiàn)遠(yuǎn)程自動(dòng)更新,可以擺脫地域限制,不受布線的束縛,提高了嵌入式系統(tǒng)遠(yuǎn)程更新的便捷性。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論