基于MC68332平臺的ISP設(shè)計方案
按照這種方案,BOOT程序和update程序是自編程設(shè)計的核心內(nèi)容,只要保證這部分數(shù)據(jù)的完整性,就能擁有在線編程的能力,要在軟件對這部分數(shù)據(jù)區(qū)進行保護,保證在第一次寫入程序存儲器后就不會再被擦除。這樣即使在自編程時發(fā)生災(zāi)難性故障,BOOT程序和update程序是不會被破壞的,仍然可以繼續(xù)運行,保證下次仍然可以進行自編程。
同樣,程序完成后也必須分別固化到程序存儲器的指定空間,以保證程序的正常運行,程序分布如圖2所示。
2 在MC68332目標平臺上的實現(xiàn)(采用方案2)
目標平臺的基本配置如下:
CPU為MC68332,F(xiàn)lash為512KB(Am29F400B),RAM為1MB,通信口為10Mbps以太網(wǎng)。
在編寫程序之前首先應(yīng)該設(shè)計好程序在Flash和RAM空間的分布,按照方案2的思路考慮平臺的硬件配置,具體設(shè)計如下:
(1)BOOT程序通過MC68332的一個I/O狀態(tài)判定程序的走向;
(2)update程序通過以太網(wǎng)口采用TFTP協(xié)議從主機接收程序并進行CRC校驗;
(3)Flash具體分配如表1所示。
按照方案2,BOOT程序在系統(tǒng)復(fù)位后初始化Flash、RAM片選,把Flash、RAM映射到對應(yīng)的地址空間,并通過MC68332的一個I/O狀態(tài)判斷應(yīng)用進入何種運行模式。如果進入正常模式,BOOT程序通過從normal復(fù)位向量處取得PC值,轉(zhuǎn)入相應(yīng)的地址執(zhí)行;進入升級模式,BOOT程序把update程序從Flash地址0x00400S~0x10000復(fù)制到RAM地址0x700000~0x710000中,然后把控制權(quán)轉(zhuǎn)移給update程序。程序流程如圖2。
update程序主要分為三大部分:(1)從網(wǎng)絡(luò)接口接收主機中的normal程序,為了盡量減小程序的復(fù)雜性,采用TFTP協(xié)議(TFTP Version 2,RFC 1350)從網(wǎng)絡(luò)接收程序(這部分也可以通過其他方式,如串口、MODEM等實現(xiàn));(2)解析出程序數(shù)據(jù)并進行校驗,接收到的程序是Motorola格式的S-Record文件,必須按照S-Record格式進行解析,得到程序數(shù)據(jù)并進行CRC校驗,保證程序的正常性;(3)寫到Flash中地址0x10000~0x80000,驗證工作完成后把數(shù)據(jù)固化到Flash中指定地址,重啟并進入正常模式就可運行升級后的程序。程序流程見圖4。
normal程序按照正常需要進行編寫,必須鏈接到0x10000~0x80000空間運行。
這三個程序完成后,編寫一個工具程序把三個程序合并到一個文件(注意地址空間的分配),然后利用編程工具燒寫到Flash片上,這樣這個具備ISP功能的系統(tǒng)就完成了。
該設(shè)計的實現(xiàn)方法簡單,可以避免生產(chǎn)時不必要的物質(zhì)和時間上的開銷,同時也可以幫助提供更為簡易、靈活、經(jīng)濟的現(xiàn)場服務(wù),值得在嵌入式系統(tǒng)中推廣使用。
評論