[摘 要] 鑒于智能終端的系統(tǒng)軟件遠程升級和維護困難的問題,提出了一種基于LPC2114和GPRS的遠程系統(tǒng)軟件升級的設(shè)計方案。介紹了LPC2114的主要性能和特點,片上Flash的構(gòu)成及IAP編程原理,GPRS數(shù)據(jù)傳輸?shù)耐ㄐ艆f(xié)議,并系統(tǒng)地闡述了IAP技術(shù)在遠程配變監(jiān)控終端上的應(yīng)用與實現(xiàn)。實踐證明該方案較好地解決了終端軟件遠程升級和維護困難的問題,縮短了終端軟件系統(tǒng)的開發(fā)周期。最后對遠程IAP升級方案的可靠性進行了探討。
關(guān)鍵詞 LPC2114 遠程IAP GPRS 配變監(jiān)控終端
1 引言
配變監(jiān)控終端是安裝在配電變壓器一次側(cè),用于全方位監(jiān)控用電狀況的智能化設(shè)備,在目前全國電力缺乏的情況下,起到了削峰填谷,提高電網(wǎng)運行效率的作用,尤其適合于對用電大戶的用電監(jiān)控。
市場的需求和應(yīng)用技術(shù)的成熟是相輔相成的,客戶總希望盡快用到技術(shù)先進和功能完善的產(chǎn)品,而從新技術(shù)到成熟產(chǎn)品有一段過程,過程的周期很大程度上決定了產(chǎn)品的市場前景,通常是一邊開拓市場一邊完善技術(shù)。要做出好的產(chǎn)品則必須與客戶形成互動的關(guān)系,利用客戶的反饋信息對產(chǎn)品不斷完善,另外產(chǎn)品長時間使用后,終端程序設(shè)計上的缺陷也就逐漸顯現(xiàn),這就要求對終端系統(tǒng)程序進行升級。如果對于幾百個終端進行現(xiàn)場ISP升級,既費時費力,又延誤了開拓市場的機遇,降低了客戶對產(chǎn)品的信譽度。
在Internet飛速發(fā)展的今天,將終端接入到Internet解決上述問題是可靠的、現(xiàn)實的方案。本設(shè)計方案應(yīng)用于遠程配電監(jiān)控終端,采用高性能Philips ARM I,PC2114,結(jié)合IAP編程技術(shù)和GPRS技術(shù)實現(xiàn)終端系統(tǒng)程序的遠程升級。
2 LPC2114芯片簡介
2.1 功能簡介
LPC2114基于一個支持實時仿真和跟蹤的16/32位ARM7TDMI—S CPU,并帶有128KB嵌入的高速Flash存儲器和16KBRAM。對于內(nèi)嵌Flash存儲器支持JTAG、ISP、IAP等多種編程方式。
2114具有非常小的64腳封裝、極低的功耗、多個32位定時器、4路10位ADC、PWM輸出、46個GPIO以及多達9個外部中斷以及內(nèi)置了寬范圍的串行通信接口,使它們特別適用于工業(yè)控制。因為用電監(jiān)控終端對硬件資源要求高,軟件功能復雜,實時性強,所以采用LPC2114來設(shè)計可以提高產(chǎn)品的性價比。
2.2 存儲系統(tǒng)
LPC2114存儲系統(tǒng)包含F(xiàn)lash存儲器和RAM存儲器,F(xiàn)lash存儲器主要用來存放程序代碼,RAM則主要于程序運行期間的堆棧安排和變量空間,LPC2114存儲系統(tǒng)的地址分配如表1所示。
Boot Block占用第15扇區(qū)即Boot扇區(qū),它位于Flash存儲器的頂部,該扇區(qū)的存儲空間專用來存放Boot裝載程序,控制復位后的初始化操作,并提供Flash的編程方法(代碼)。Boot裝載器可啟動對空白片的編程、已編程器件的擦除和再編程以及在運行的系統(tǒng)中由應(yīng)用程序?qū)lash存儲器進行編程[2]。
2.3 Flash存儲系統(tǒng)的編程
LPC21l 4支持多種方式對Flash進行編程,用來寫入用戶代碼或數(shù)據(jù)。第一種是通過內(nèi)置的串行JTAG接口;第二種是通過UARTO進行在系統(tǒng)編程(ISP);第三種是通過在應(yīng)用編程(IAP)實現(xiàn)。下面簡單介紹IAP的編程原理。
IAP(In-Application Programming)是應(yīng)用在Flash程序存儲器的一種編程模式。即在應(yīng)用程序控制下,對程序某段存儲空間進行讀取、擦除、寫入操作。與ISP操作非常相似,具有在線編程功能。且克服了ISP不足之處,它可以在應(yīng)用程序正常運行的情況下對另外一段程序Flash進行讀寫操作,甚至可以控制對某段、某頁、甚至某個字節(jié)的讀寫操作。這為數(shù)據(jù)存儲和固件的現(xiàn)場升級帶來了極大的靈活性。
3 IAP功能的硬件設(shè)計
由以上分析可知,使用IAP對Flash存儲器進行編程是合適的方案。下面介紹一種基于GPRS的遠程IAP系統(tǒng)方案,系統(tǒng)框圖如圖1所示。
AT45DB041B為4MB串行Flash存儲器,兼有ROM的掉電數(shù)據(jù)保存和RAM的讀寫速度,最快支持20MHz的時鐘頻率,擦寫次數(shù)達10000次,內(nèi)配置了兩個264BSRAM緩沖器,使得對主存儲體的編程可以連續(xù)進行,省去編程等待時間;AT45DB041B采用CASON-8封裝,支持2.5~3.6V低電壓,操作功耗低,支持模式0和3的SPI總線接口,與MCU接口簡單,穩(wěn)定可靠。非常適用于數(shù)字語音、圖像、程序代碼和數(shù)據(jù)的存儲應(yīng)用中。
GPRS模塊使用Siemens公司生產(chǎn)的MC35i,雙頻GPRS/GSM模塊(EGSM900/1800MHz或EGSM900/1900MHz),內(nèi)置TCP/IP,與標準AT指令完全兼容;其設(shè)計開發(fā)符合ETSI GSM Phase2+標準。
4 IAP功能的軟件設(shè)計
4.1 IAP編程接口
LPC2114的IAP程序位于Boot扇區(qū),復位后整個Boot扇區(qū)被映射到存儲地址0x7FFFE000~0x7FFFFFFF處,而IAP的入口地址為0x7FFFFFF0,程序為Thumb代碼。IAP編程命令使用RAM的最高端32B,所以應(yīng)用程序應(yīng)保留這部分RAM。在使用IAP擦除/編程操作過程中,片內(nèi)Flash存儲器不可訪問。當用戶應(yīng)用程序運行時,用戶Flash區(qū)域的中斷向量有效,所以在調(diào)用Flash擦除/寫IAP之前,用戶應(yīng)當禁止中斷或確保用戶中斷向量在RAM中有效和中斷處理程序位于RAM中。IAP代碼不使用或禁止中斷。
4.2 IAP編程C語言實現(xiàn)
對于在應(yīng)用編程,LPC2114是通過寄存器RO中的字指針指向RAM存儲單元包含的命令代碼和參數(shù)來調(diào)用IAP程序。IAP命令的結(jié)果返回到寄存器R1所指向的RAM空間。
LPC2114的IAP調(diào)用可使用如下C語言代碼調(diào)用:
(1)定義IAP程序入口地址。
# define IAP_ LOCATION 0x7FFFFFF1
(2)定義數(shù)據(jù)結(jié)構(gòu)來傳遞IAP命令表和結(jié)果給IAP程序。
unsigned long Command[5];//輸入?yún)?shù)最多為5個
unsigned long Result[2];//輸出參數(shù)最多為2個
(3)定義函數(shù)類型指針,函數(shù)包括兩個參數(shù),無返回值。
typedef void (*IAP) (unsigned int[ ],unsigned int[ ]);
IAP iap_entry;//定義函數(shù)指針
(4)設(shè)置函數(shù)指針。
iap_entry = (IAP)IAp_ LOCATION;
(5)使用下面的語句來調(diào)用IAP。
iap_entry (command, result);
本系統(tǒng)是基于LPC2114工程模板上進行移植,在ASD1.2嵌入式軟件開發(fā)平臺上用C語言直接調(diào)用IAP程序代碼實現(xiàn)IAP編程,IAP的命令碼、狀態(tài)碼和命令詳解以及IAP功能的詳細應(yīng)用見文獻[2]。
5 LPC2114的IAP遠程升級在用電現(xiàn)場監(jiān)控終端的應(yīng)用
終端軟件系統(tǒng)的設(shè)計包括用戶引導程序設(shè)計(與Boot裝載程序有區(qū)別,前者由用戶設(shè)計,后者由芯片生產(chǎn)商設(shè)計并固化)和應(yīng)用程序的設(shè)計。它們在LPC2114中的入口地址不同,終端正常復位后,則首先執(zhí)行用戶引導程序,由用戶引導程序決定是否啟動IAP升級程序;應(yīng)用程序完成終端的各種功能,包括新版本應(yīng)用程序升級包的下載。
5.1 終端用戶引導程序設(shè)計
終端用戶引導程序是基于文件系統(tǒng)的思想來設(shè)計的,用戶引導程序設(shè)計成單獨的程序,裝載于LPC2114的Flash扇區(qū)起始位置處,終端重新啟動時,LPC2114總是從0地址開始讀取指令并執(zhí)行,將IAP升級代碼安排到用戶引導部分,實驗證明這種安排是合理的。如果采用應(yīng)用程序調(diào)用的方式執(zhí)行IAP命令編程Flash,當Flash編程遇到失敗時,整個系統(tǒng)就完全崩潰,應(yīng)用程序代碼被破壞,再無能力遠程更新。采用本文的升級方式可完全避免這種情況的出現(xiàn),用戶引導程序出廠后固化,而外圍存儲器AT45DB041B中始終保存一份最新的應(yīng)用程序代碼備份,引導程序有能力多次編程Flash扇區(qū),確保應(yīng)用程序代碼的完整性,增加了升級的可靠性。
終端用戶引導程序運行執(zhí)行后,首先檢查應(yīng)用程序升級標志和版本號,當升級標志被置位且出現(xiàn)新版本號時,MCU通過SPI接口從AT45DB041B中讀取應(yīng)用程序升級代碼,然后調(diào)用IAP命令執(zhí)行Flash編程,實現(xiàn)對應(yīng)用程序的升級,當升級任務(wù)完成后,清除升級標志和更新應(yīng)用程序版本,最后轉(zhuǎn)移到應(yīng)用程序入口并執(zhí)行應(yīng)用程序代碼,引導過程流程圖如圖2所示。
5.2 終端應(yīng)用程序設(shè)計
終端應(yīng)用程序負責完成終端的各項功能,其中包括接收前置機的遠程升級命令。終端接收到前置機的遠程升級命令后,應(yīng)用程序?qū)⑸壈凑諑姆绞酵ㄟ^GPRS Modem從前置機下載到終端,并保存到終端的AT45DB041B存儲器,下載成功后置位升級標志和記錄升級包版本號以備用戶引導程序升級。
在升級包的下載過程中可看成是數(shù)據(jù)傳輸過程,應(yīng)用程序可同步完成終端的其他各種功能,不影響終端的正常運行。應(yīng)用程序升級包下載成功后,終端進行必要的現(xiàn)場保存并主動復位,從而執(zhí)行用戶引導程序升級的最后一步——Flash編程。另外也可以在終端里配置升級時間,避開終端任務(wù)重負荷階段,使得升級過程對終端正常工作影響降低到最低程度。應(yīng)用程序升級包的下載流程如圖3所示。
5.3 通信協(xié)議的設(shè)計
GPRS與Internet連接建立后,進人數(shù)據(jù)透明傳輸階段。本系統(tǒng)在完善的TCP/IP機制基礎(chǔ)上設(shè)計用戶應(yīng)用層協(xié)議。為實現(xiàn)對系統(tǒng)某個終端的系統(tǒng)軟件升級,前置機將要升級的程序代碼轉(zhuǎn)化為寫終端升級代碼幀,接入Internet到GPRS網(wǎng)絡(luò),透明傳輸下載到目標終端[8]。參照通信規(guī)約,自定義了前置機升級請求幀、升級代碼數(shù)據(jù)幀和終端回應(yīng)幀,幀格式如表2所示。
在通信協(xié)議的幀格式中,三種數(shù)據(jù)幀的前五項相同,起始字符表示幀的開始,固定用68H表示;終端邏輯地址在通信時用來唯一識別一個通信的最終發(fā)起端和接收端,它包括地市區(qū)碼和終端地址碼兩部分;主站地址在通信時用來唯一識別通信的主站端對象;控制碼表示要求執(zhí)行的操作,8AH表示升級代碼下載操作;數(shù)據(jù)長度則表示此項直到校驗符的前項的所有數(shù)據(jù)字節(jié)數(shù);廠商編號是與本終端匹配前置機的唯一編號;權(quán)限等級和密碼應(yīng)用于前置機升級請求幀和升級代碼數(shù)據(jù)幀中,權(quán)限和密碼保護機制保證升級幀的可靠性;在升級請求幀中還包括升級軟件版本號,總長度和總校驗和,是升級文件的相關(guān)信息;在升級代碼數(shù)據(jù)幀中還包括當前的幀序號和本幀的數(shù)據(jù)內(nèi)容,數(shù)據(jù)長度固定為792B,不足補OOH;在終端回應(yīng)幀中給出錯誤信息和下一幀序號,以便前置機的后續(xù)傳輸處理;檢驗碼CS和幀尾是三種共同的部分,校驗碼是幀頭與校驗碼之間字節(jié)累加和,幀尾固定用16H表示。
6 遠程IAP應(yīng)用的可靠性探討
終端應(yīng)用程序的升級過程不免要受到環(huán)境的干擾,如終端掉電、異常的終端復位、網(wǎng)絡(luò)通信阻塞等故障,都會導致終端遠程升級包下載或者IAP編程的失敗,因此必須提供一套可靠的軟硬件機制來保證終端IAP過程的正常工作。本系統(tǒng)中采取的措施[7]如下。
(1)終端掉電及異常復位處理 由于終端的停電及電網(wǎng)波動等干擾引起的終端復位都將中止終端的升級過程,導致升級失敗。本系統(tǒng)采用下載和IAP過程完全分離的升級方式,IAP部分位于用戶引導程序部分,不被擦除,AT45DB041B中總是備份最新版本終端應(yīng)用程序,所以任何階段操作失敗都能保證終端的正常工作。另外,在終端配備蓄電池和充電電路,在終端主電源來電時對蓄電池充電,使得終端掉電時也可正常運行,遠程IAP過程更為可靠。
(2)遠程通信的誤碼處理數(shù)據(jù)傳輸過程產(chǎn)生的誤碼。通用的、有效的解決辦法就是用CRC循環(huán)冗余效驗和重傳機制。數(shù)據(jù)校驗碼校驗正確后存入AT45DB041B,錯誤時返回錯誤編碼發(fā)和幀序號請求重發(fā),直到檢測到結(jié)束幀。結(jié)束幀數(shù)據(jù)長度不夠,用00填充,不影響校驗碼。
(3)網(wǎng)絡(luò)阻塞、故障處理 由于地形和環(huán)境因素的影響,GPRS網(wǎng)絡(luò)在遠程IAP的通信過程中可能出現(xiàn)阻塞或斷開的情況,這時終端和前置機對無回應(yīng)幀采用延時重發(fā)的機制,連續(xù)五次不成功則斷開GPRS網(wǎng)并重新連接,終端保存升級的下載斷點信息,以待網(wǎng)絡(luò)恢復后繼傳數(shù)據(jù)。
7 結(jié)束語
該設(shè)計方案基本解決了本系統(tǒng)的遠程代碼升級的困難,提高了系統(tǒng)軟件維護的方便性,加快了新產(chǎn)品的上市時間,也為用戶提供了更安全、快捷的服務(wù),提高了產(chǎn)品搶占市場的競爭力。用GPRS網(wǎng)絡(luò)為傳輸通道,對接入Internet困難的邊遠地區(qū)的現(xiàn)場用電監(jiān)控終端的遠程維護提出了一種全新的、可靠的設(shè)計方案。
來源:電氣應(yīng)用