利用Flash實(shí)現單片機系統的在線(xiàn)維護
由于SST29EE010是以128字節的頁(yè)方式寫(xiě)入,所以實(shí)現加載指令時(shí),對SST29EE010的寫(xiě)操作以128字節為分組,不足128字節的分組填充至128字節再處理。在加載程序時(shí),主機將加載程序.BIN文件以128字節為單位分組,并為每個(gè)分組加上升級指令代碼和位置參數后通過(guò)串口發(fā)送給MCU,MCU接收數據后進(jìn)行判斷,若是加載指令則將接收的數據寫(xiě)入到參數指定的FLASH區,并返回操作代碼;處理流程如圖4所示。
圖4 程序加載的處理流程圖
5 注意事項
在系統設計與程序設計過(guò)程中需要注意以下幾點(diǎn):
(1)對FLASH芯片進(jìn)行讀/寫(xiě)操作時(shí),將其當作擴展的外部存儲器(用MOVX @DPTR,A指令);執行程序時(shí),將其作為擴展的程序存儲器。
(2)在寫(xiě)數據之前要打開(kāi)SST29EE010的保護鎖,寫(xiě)操作完成后要將SST29EE010的保護鎖關(guān)閉,關(guān)鎖之前要有一定的延時(shí)(通過(guò)需要10ms)。
(3)為了保證整個(gè)系統的可用行,需要對加載程序進(jìn)行可用行檢測機制,最簡(jiǎn)單的方法就是為所要加載的.BIN文件增加3字節的內容,在文件前面增加2字節的.BIN文件長(cháng)度指示,并在加載程序之后增加1字節的程序校驗值(如異或值),寫(xiě)入FLASH中的內容如圖5所示。
圖5加載程序的格式與內容
(4)為了進(jìn)一步提高系統的安全性,需要進(jìn)行相關(guān)的身份認證獲取加載的權限如口令驗證,否則不予開(kāi)放加載功能。
(5)還應該添加一些版本控制和校驗功能,進(jìn)行版本控制,只有在AT89C52與待加載的程序具有相同的版本時(shí)才能進(jìn)行程序加載。
(6)因為加載的程序起始地址從8000H開(kāi)始,又有2字節的長(cháng)度指示,所以在加載程序之前增加“ORG 8002H”偽指令。
6 結束語(yǔ)
以單片機為基礎的需求越來(lái)越多,也就帶來(lái)了更多的維護問(wèn)題。通過(guò)上層應用程序維護通常比直接進(jìn)行單片機底層程序的維護要方便得多!本文基于實(shí)現單片機系統在線(xiàn)維護的思想,介紹了一種通過(guò)PC機串行接口維護單片機系統的方法,從而為版本管理、程序的動(dòng)態(tài)維護以及程序存儲器的擴展都提供了十分便利的手段。
參考資料
[1] 張友德,趙志英,涂時(shí)亮.單片微型機原理、應用與實(shí)驗.上海:復旦大學(xué)出版社,2000
[2] 李朝青.PC機及單片機數據通信技術(shù),北京:北京航空航天大學(xué)出版社,2001
[3] 余永權.ATMEL89系列單片機應用技術(shù),北京:北京航空航天大學(xué)出版社,2002
評論