ISP技術(shù)與Internet結(jié)合的應(yīng)用研究
1 LPC213x Flash Bootloader介紹
LPC213x Bootloader(啟動裝載程序)控制復位后的初始化操作,并提供Flash ISP編程接口。它駐留在Flash的上8KB,只能讀不能寫。由于Philips公司并沒有提供Boot ROM內(nèi)部是如何實現(xiàn)ISP功能的,因此必須根據(jù)Philips公司提供的流程和協(xié)議來編寫上位機程序。
1.1 通信協(xié)議
所有的ISP命令都由上位機通過串口以單個ASCII字符串的形式發(fā)送。字符串應(yīng)當以回車(CR)和/或換行(LF)控制字符作為結(jié)束,多余的將被忽略。所有ISP的響應(yīng)都以“CR>LF>”結(jié)束的字符串形式發(fā)送。數(shù)據(jù)以UU編碼(將3字節(jié)的二進制數(shù)據(jù)轉(zhuǎn)換成4字節(jié)可打印的ASCII字符集)的格式發(fā)送和接收。發(fā)送器發(fā)送20個UU編碼行之后發(fā)進校驗和,任何UU編碼行的長度都不應(yīng)超過61字節(jié)。接收器將該校驗和與接收數(shù)據(jù)的校驗和相比較,若匹配,則接收器響應(yīng)“0KCR>LF>”,并等待下一次發(fā)送;若不匹配,則接收器響應(yīng)“RESENDCR>LF>”,發(fā)送器應(yīng)當將字節(jié)重新發(fā)送。
1.2 ISP命令
ISP命令處理程序所接受的常用命令如表1所列。
每個命令有具體的狀態(tài)代碼,只有當接收到的命令執(zhí)行完畢后,處理程序才通過串口發(fā)送CMD_SUCCESS;這時上位機才能發(fā)送新的ISP命令,但“設(shè)置波特率”、“寫RAM”、“讀存儲器”和“運行”命令除外。上位機就是通過串口發(fā)送這些相關(guān)的ISP命令以及程序的UU編碼,完成程序的下載。
2 上位機軟件實現(xiàn)
2.1 應(yīng)用程序的網(wǎng)上下載
要實現(xiàn)軟件自動升級,首先必須將MCU應(yīng)用程序從網(wǎng)上下載到PC機,然后再利用ISP通過串口把程序下載到MCU中。程序的下載可以采用HTTP方式,也可以采用FTP方式。在此是利用:MFC提供的FTP應(yīng)用程序接口實現(xiàn)程序下載,并把程序保存在指定位置。為避免每次升級程序時,都要從網(wǎng)上下載,引入了計數(shù)器計算下載次數(shù);只在第~次升級時,才從網(wǎng)上下載保存。
2.2 ISP的實現(xiàn)
LPC213x要調(diào)用Boot ROM中的ISP應(yīng)用程序接口,必須進入ISP模式。這要求在系統(tǒng)復位時,PO.14引腳為低電平。實際應(yīng)用中可以采用兩種方法使系統(tǒng)進入ISP模式:一是通過開關(guān)控制P0.14引腳為低電平;二是通過串口的控制引腳控制晶體管的導通和截止,從而設(shè)置PO.14為低電平。第二種方法具有通用性,有些MCU進入ISP模式要求的可能是引腳的不同脈沖序列,即必須滿足一定的脈沖時序要求(如MSP430系列的MCU)。在此采用的是第二種方法:把串口的DTR引腳連接到P0.14,串口的RTS引腳連接到LPC213x的復位引腳;通過在系統(tǒng)運行時控制RTS引腳發(fā)出復位脈沖,DTR的引腳設(shè)置為低電平,控制晶體管的導通和截止,使系統(tǒng)強制進入ISP模式;進入ISP模式后,根據(jù)上位機傳來的ISP命令,調(diào)用Boot ROM固件中相應(yīng)的子程序自動完成必要的操作。圖l描述了LPC2132從復位進入ISP模式的流程。
具體上位機要實現(xiàn)該程序下載,須完成如下工作:
①將從網(wǎng)上下載的Intel HEX格式的應(yīng)用程序打開,從文件中解析出要下載的程序文件,并把它轉(zhuǎn)換為二進制格式。
②向下位機發(fā)送同步驗證字符“?”(0x3F),供自動確定波特率,并等待響應(yīng)。自動波特率程序根據(jù)自身頻率測量接收到的同步字符的位時間,并對串口波特率發(fā)生器進行編程;它還向下位機發(fā)送一個ASCII字符串(Synchro-nizedCR>LF>)。作為響應(yīng),下位機應(yīng)發(fā)送接收到的ASCII字符串(SynchrtmizedCR>LF>);上位機通過觀察接收到的字符來驗證是否同步。如果同步驗證沒有通過,則上位機重新發(fā)送同步驗證字符“?”,再一次進行同步驗證。通過驗證后,向下位機發(fā)送“OKCR>LF>”;下位機通過發(fā)送正在運行部分的晶振頻率(單位為kHz)作為響應(yīng);在接收到晶振頻率后再向下位機發(fā)送“OKCR>LF>”,最終完成同步驗證。
③向下位機發(fā)送讀器件ID命令“JCR>LF>”,接收響應(yīng)信息,并提取出芯片的ID編號;根據(jù)芯片的ID,設(shè)置相關(guān)數(shù)據(jù)(Flash和RAM大小)。
④向下位機發(fā)送擦除命令將Flash ROM分段擦除。
⑤向下位機發(fā)送寫命令“W起始地址>字節(jié)數(shù)>CR>LF>”。
⑥對轉(zhuǎn)換后的二進制程序進行UU編碼,并計算校驗和,每發(fā)送20行發(fā)送一次校驗和;然后向下位機發(fā)送準備寫操作扇區(qū)的命令“P起始扇區(qū)>結(jié)束扇區(qū)>CR>LF>”和“CFlash地址>RAM地址>CR>LF>”命令,下位機接收到命令后進行程序的寫入。
⑦關(guān)閉串口,釋放系統(tǒng)資源,以便進行下一次系統(tǒng)升級。
結(jié)語
通過本設(shè)計構(gòu)成的阿絡(luò)在線下載系統(tǒng),已在人民幣防偽鑒別儀的生產(chǎn)和售后維護中得到了實際應(yīng)用。只需一臺能夠上網(wǎng)的電腦和一條下載線,就能對目標板里單片機的程序進行修改,大大方便了工程技術(shù)人員,提高了工作效率,降低了成本。
評論