基于MSP43F149系列單片機(jī)的IAP功能設(shè)計(jì)
圖4中必須注意:
?、俦仨毾裙潭ㄔ摮绦虻娜肟诘刂罚@樣引導(dǎo)程序才能將之拷貝到RAM中,大小要控制在2 KB之內(nèi)。該程序比較小,一般不超過(guò)2 KB 。
?、诒仨殞lash狀態(tài)鎖住,這樣在寫(xiě)的時(shí)候不容易出錯(cuò)。
?、墼谧x取60 KB數(shù)據(jù)后,打開(kāi)看門(mén)狗。IAP升級(jí)系統(tǒng)是根據(jù)看門(mén)狗不喂狗來(lái)自動(dòng)復(fù)位重啟系統(tǒng)的。
用戶只要根據(jù)上面的流程進(jìn)行編程,就很容易實(shí)現(xiàn)IAP升級(jí)(這里是重點(diǎn),也是一個(gè)難點(diǎn))。引導(dǎo)程序流程如圖5所示。
圖5說(shuō)明:聲明一個(gè)入口函數(shù),便于外部程序升級(jí)時(shí)調(diào)用。這個(gè)引導(dǎo)程序比較簡(jiǎn)單。由于在片內(nèi)執(zhí)行,所以使用匯編語(yǔ)言(mov指令)很容易就可以把螞蟻搬家程序?qū)氲絉AM中。
由于IAR編譯出來(lái)的最終文件為*.a(chǎn)43文件,建議使用類(lèi)似(HexToBin.exe)軟件將*.a(chǎn)43文件轉(zhuǎn)化成二進(jìn)制文件,就可直接下載了。
4 注意事項(xiàng)
這段代碼必須在RAM里運(yùn)行,所以暫時(shí)不使用SP來(lái)“RET”。也就是說(shuō),不可以使用CALL指令,也不可以使用壓棧處理(如PUSH或者POP等指令),所以這里將不可以開(kāi)設(shè)堆棧區(qū)。通過(guò)某種無(wú)線手段執(zhí)行代碼(BIN文件),然后根據(jù)自定義無(wú)線協(xié)議,將該可執(zhí)行代碼下載并保存到片外的Flash相應(yīng)地址空間,最后啟動(dòng)升級(jí)程序。最后通過(guò)啟動(dòng)看門(mén)狗并復(fù)位來(lái)啟動(dòng)系統(tǒng)。
結(jié) 語(yǔ)
通過(guò)長(zhǎng)期的實(shí)踐證明,本方案具有非常高的可靠性。這里雖然只介紹了MSP430系列產(chǎn)品的IAP升級(jí)方法,但對(duì)于其他沒(méi)有自帶IAP功能單片機(jī)的升級(jí),其設(shè)計(jì)思路卻都一樣。這里提醒廣大的開(kāi)發(fā)愛(ài)好者,對(duì)于一串串的二進(jìn)制文件數(shù)據(jù),我們不要害怕;只要獨(dú)立思考,抓住單片機(jī)的特性,靈活應(yīng)用,只有想不到,沒(méi)有做不到。祝大家共同進(jìn)步!
評(píng)論