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