<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于Bootloader的可靠嵌入式軟件遠程更新機制

          基于Bootloader的可靠嵌入式軟件遠程更新機制

          作者: 時間:2009-03-04 來源:網(wǎng)絡(luò) 收藏

          在一個實際運行的無線監(jiān)控系統(tǒng)中應(yīng)用本機制,以驗證和測試其性能。首先對進程的運行效果進行測試。結(jié)果表明,每次測試進程均能正確的啟動與控制模塊之間的數(shù)據(jù)傳輸,通過在應(yīng)用層引入確認和重傳機制,新程序的鏡像文件均能通過Internet和無線網(wǎng)絡(luò)準確的傳輸至前端運行模塊。測試的重點是系統(tǒng)更新完畢后新程序啟動的性。對更新過程中遇到的干擾和數(shù)據(jù)錯誤采取模擬的方式,以此測試能否正確的啟動備份程序。測試中模擬了3類情況:一類是FLASH上的程序鏡像文件隨機的在某些地址處出現(xiàn)數(shù)據(jù)錯誤,另一類是FLASH上的程序鏡像文件隨機的出現(xiàn)某些數(shù)據(jù)的地址錯位,第三類是啟動點的數(shù)值發(fā)生錯誤。將這3類情況分為6種具體方案進行測試,每個方案測試20次,查看系統(tǒng)能否按照期望的結(jié)果啟動程序鏡像。測試方案及結(jié)果如表1所示。

          從測試結(jié)果中可以看出,本更制對FLASH中的數(shù)據(jù)錯誤識別效果最好,每次啟動時均能正確地進入異常并啟動備份程序;對FLASH中的數(shù)據(jù)地址錯位的識別率也達到了80%以上。當程序的數(shù)據(jù)正確但存放地址錯位時,存在一定的概率會使得處理器取出的指令是可以識別和執(zhí)行的,從而使程序運行到未知狀態(tài)而導(dǎo)致系統(tǒng)無法啟動。此外,更制對配置區(qū)具有較強的修復(fù)能力,防止了因為配置區(qū)數(shù)據(jù)出現(xiàn)錯誤而導(dǎo)致無法啟動的情況的發(fā)生。實驗平臺的測試結(jié)果表明本更制能有效地提高更新后重新啟動的穩(wěn)定性和性,具有較強的自我恢復(fù)能力。

          5 結(jié)語

          本文以提高性為設(shè)計目標,提出了一種軟件機制。本更新機制由于同時保存了三個鏡像文件,因此需要更多的FLASH存儲空間,略微增加了系統(tǒng)的硬件成本。但相對于更新機制的化、自動化和所帶來的維護成本的巨大降低,這個代價是值得的。

          本文主要創(chuàng)新點:通過設(shè)置兩個備份程序存儲區(qū),利用嵌入式處理器的異常機制,使嵌入式系統(tǒng)的更新具有了較強的自我恢復(fù)能力,較大的提升嵌入式軟件更新過程的,尤其能夠有效地防止嵌入式系統(tǒng)更新后出現(xiàn)的系統(tǒng)啟動失敗的情況,具有較高的實用價值。另外,通過CDMA系統(tǒng)實現(xiàn)遠程,可以擺脫地域限制,不受布線的束縛,提高了嵌入式系統(tǒng)的便捷性。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();