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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 利用Flash實現(xiàn)單片機系統(tǒng)的在線維護

          利用Flash實現(xiàn)單片機系統(tǒng)的在線維護

          作者: 時間:2012-02-02 來源:網(wǎng)絡(luò) 收藏

          由于SST29EE010是以128字節(jié)的頁方式寫入,所以實現(xiàn)加載指令時,對SST29EE010的寫操作以128字節(jié)為分組,不足128字節(jié)的分組填充至128字節(jié)再處理。在加載程序時,主機將加載程序.BIN文件以128字節(jié)為單位分組,并為每個分組加上升級指令代碼和位置參數(shù)后通過串口發(fā)送給MCU,MCU接收數(shù)據(jù)后進行判斷,若是加載指令則將接收的數(shù)據(jù)寫入到參數(shù)指定的FLASH區(qū),并返回操作代碼;處理流程如圖4所示。

          圖4 程序加載的處理流程圖

          5 注意事項

          在系統(tǒng)設(shè)計與程序設(shè)計過程中需要注意以下幾點:

          (1)對FLASH芯片進行讀/寫操作時,將其當(dāng)作擴展的外部存儲器(用MOVX @DPTR,A指令);執(zhí)行程序時,將其作為擴展的程序存儲器。

          (2)在寫數(shù)據(jù)之前要打開SST29EE010的保護鎖,寫操作完成后要將SST29EE010的保護鎖關(guān)閉,關(guān)鎖之前要有一定的延時(通過需要10ms)。

          (3)為了保證整個系統(tǒng)的可用行,需要對加載程序進行可用行檢測機制,最簡單的方法就是為所要加載的.BIN文件增加3字節(jié)的內(nèi)容,在文件前面增加2字節(jié)的.BIN文件長度指示,并在加載程序之后增加1字節(jié)的程序校驗值(如異或值),寫入FLASH中的內(nèi)容如圖5所示。

          圖5加載程序的格式與內(nèi)容

          (4)為了進一步提高系統(tǒng)的安全性,需要進行相關(guān)的身份認證獲取加載的權(quán)限如口令驗證,否則不予開放加載功能。

          (5)還應(yīng)該添加一些版本控制和校驗功能,進行版本控制,只有在與待加載的程序具有相同的版本時才能進行程序加載。

          (6)因為加載的程序起始地址從8000H開始,又有2字節(jié)的長度指示,所以在加載程序之前增加“ORG 8002H”偽指令。

          6 結(jié)束語

          以單片機為基礎(chǔ)的需求越來越多,也就帶來了更多的維護問題。通過上層應(yīng)用程序維護通常比直接進行單片機底層程序的維護要方便得多!本文基于實現(xiàn)的思想,介紹了一種通過PC機串行接口維護的方法,從而為版本管理、程序的動態(tài)維護以及程序存儲器的擴展都提供了十分便利的手段。

          參考資料

          [1] 張友德,趙志英,涂時亮.單片微型機原理、應(yīng)用與實驗.上海:復(fù)旦大學(xué)出版社,2000

          [2] 李朝青.PC機及單片機數(shù)據(jù)通信技術(shù),北京:北京航空航天大學(xué)出版社,2001

          [3] 余永權(quán).ATMEL89系列單片機應(yīng)用技術(shù),北京:北京航空航天大學(xué)出版社,2002


          上一頁 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); })();