單片機(jī)系統(tǒng)在線維護(hù)系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)
在系統(tǒng)設(shè)計(jì)與程序設(shè)計(jì)過(guò)程中需要注意以下幾點(diǎn):
(1)對(duì)FLASH芯片進(jìn)行讀/寫(xiě)操作時(shí),將其當(dāng)作擴(kuò)展的外部存儲(chǔ)器(用MOVX @DPTR,A指令);執(zhí)行程序時(shí),將其作為擴(kuò)展的程序存儲(chǔ)器。
(2)在寫(xiě)數(shù)據(jù)之前要打開(kāi)SST29EE010的保護(hù)鎖,寫(xiě)操作完成后要將SST29EE010的保護(hù)鎖關(guān)閉,關(guān)鎖之前要有一定的延時(shí)(通過(guò)需要10ms)。
(3)為了保證整個(gè)系統(tǒng)的可用行,需要對(duì)加載程序進(jìn)行可用行檢測(cè)機(jī)制,最簡(jiǎn)單的方法就是為所要加載的.BIN文件增加3字節(jié)的內(nèi)容,在文件前面增加2字節(jié)的.BIN文件長(zhǎng)度指示,并在加載程序之后增加1字節(jié)的程序校驗(yàn)值(如異或值),寫(xiě)入FLASH中的內(nèi)容如圖5所示。
圖5加載程序的格式與內(nèi)容
(4)為了進(jìn)一步提高系統(tǒng)的安全性,需要進(jìn)行相關(guān)的身份認(rèn)證獲取加載的權(quán)限如口令驗(yàn)證,否則不予開(kāi)放加載功能。
(5)還應(yīng)該添加一些版本控制和校驗(yàn)功能,進(jìn)行版本控制,只有在AT89C52與待加載的程序具有相同的版本時(shí)才能進(jìn)行程序加載。
(6)因?yàn)榧虞d的程序起始地址從8000H開(kāi)始,又有2字節(jié)的長(zhǎng)度指示,所以在加載程序之前增加“ORG 8002H”偽指令。
6 結(jié)束語(yǔ)
以單片機(jī)為基礎(chǔ)的需求越來(lái)越多,也就帶來(lái)了更多的維護(hù)問(wèn)題。通過(guò)上層應(yīng)用程序維護(hù)通常比直接進(jìn)行單片機(jī)底層程序的維護(hù)要方便得多!本文基于實(shí)現(xiàn)單片機(jī)系統(tǒng)在線維護(hù)的思想,介紹了一種通過(guò)PC機(jī)串行接口維護(hù)單片機(jī)系統(tǒng)的方法,從而為版本管理、程序的動(dòng)態(tài)維護(hù)以及程序存儲(chǔ)器的擴(kuò)展都提供了十分便利的手段。
評(píng)論