[摘 要] 鑒于智能終端的系統(tǒng)軟件遠(yuǎn)程升級(jí)和維護(hù)困難的問題,提出了一種基于LPC2114和GPRS的遠(yuǎn)程系統(tǒng)軟件升級(jí)的設(shè)計(jì)方案。介紹了LPC2114的主要性能和特點(diǎn),片上Flash的構(gòu)成及IAP編程原理,GPRS數(shù)據(jù)傳輸?shù)耐ㄐ艆f(xié)議,并系統(tǒng)地闡述了IAP技術(shù)在遠(yuǎn)程配變監(jiān)控終端上的應(yīng)用與實(shí)現(xiàn)。實(shí)踐證明該方案較好地解決了終端軟件遠(yuǎn)程升級(jí)和維護(hù)困難的問題,縮短了終端軟件系統(tǒng)的開發(fā)周期。最后對(duì)遠(yuǎn)程IAP升級(jí)方案的可靠性進(jìn)行了探討。
關(guān)鍵詞 LPC2114 遠(yuǎn)程IAP GPRS 配變監(jiān)控終端
1 引言
配變監(jiān)控終端是安裝在配電變壓器一次側(cè),用于全方位監(jiān)控用電狀況的智能化設(shè)備,在目前全國(guó)電力缺乏的情況下,起到了削峰填谷,提高電網(wǎng)運(yùn)行效率的作用,尤其適合于對(duì)用電大戶的用電監(jiān)控。
市場(chǎng)的需求和應(yīng)用技術(shù)的成熟是相輔相成的,客戶總希望盡快用到技術(shù)先進(jìn)和功能完善的產(chǎn)品,而從新技術(shù)到成熟產(chǎn)品有一段過(guò)程,過(guò)程的周期很大程度上決定了產(chǎn)品的市場(chǎng)前景,通常是一邊開拓市場(chǎng)一邊完善技術(shù)。要做出好的產(chǎn)品則必須與客戶形成互動(dòng)的關(guān)系,利用客戶的反饋信息對(duì)產(chǎn)品不斷完善,另外產(chǎn)品長(zhǎng)時(shí)間使用后,終端程序設(shè)計(jì)上的缺陷也就逐漸顯現(xiàn),這就要求對(duì)終端系統(tǒng)程序進(jìn)行升級(jí)。如果對(duì)于幾百個(gè)終端進(jìn)行現(xiàn)場(chǎng)ISP升級(jí),既費(fèi)時(shí)費(fèi)力,又延誤了開拓市場(chǎng)的機(jī)遇,降低了客戶對(duì)產(chǎn)品的信譽(yù)度。
在Internet飛速發(fā)展的今天,將終端接入到Internet解決上述問題是可靠的、現(xiàn)實(shí)的方案。本設(shè)計(jì)方案應(yīng)用于遠(yuǎn)程配電監(jiān)控終端,采用高性能Philips ARM I,PC2114,結(jié)合IAP編程技術(shù)和GPRS技術(shù)實(shí)現(xiàn)終端系統(tǒng)程序的遠(yuǎn)程升級(jí)。
2 LPC2114芯片簡(jiǎn)介
2.1 功能簡(jiǎn)介
LPC2114基于一個(gè)支持實(shí)時(shí)仿真和跟蹤的16/32位ARM7TDMI—S CPU,并帶有128KB嵌入的高速Flash存儲(chǔ)器和16KBRAM。對(duì)于內(nèi)嵌Flash存儲(chǔ)器支持JTAG、ISP、IAP等多種編程方式。
2114具有非常小的64腳封裝、極低的功耗、多個(gè)32位定時(shí)器、4路10位ADC、PWM輸出、46個(gè)GPIO以及多達(dá)9個(gè)外部中斷以及內(nèi)置了寬范圍的串行通信接口,使它們特別適用于工業(yè)控制。因?yàn)橛秒姳O(jiān)控終端對(duì)硬件資源要求高,軟件功能復(fù)雜,實(shí)時(shí)性強(qiáng),所以采用LPC2114來(lái)設(shè)計(jì)可以提高產(chǎn)品的性價(jià)比。
2.2 存儲(chǔ)系統(tǒng)
LPC2114存儲(chǔ)系統(tǒng)包含F(xiàn)lash存儲(chǔ)器和RAM存儲(chǔ)器,F(xiàn)lash存儲(chǔ)器主要用來(lái)存放程序代碼,RAM則主要于程序運(yùn)行期間的堆棧安排和變量空間,LPC2114存儲(chǔ)系統(tǒng)的地址分配如表1所示。
Boot Block占用第15扇區(qū)即Boot扇區(qū),它位于Flash存儲(chǔ)器的頂部,該扇區(qū)的存儲(chǔ)空間專用來(lái)存放Boot裝載程序,控制復(fù)位后的初始化操作,并提供Flash的編程方法(代碼)。Boot裝載器可啟動(dòng)對(duì)空白片的編程、已編程器件的擦除和再編程以及在運(yùn)行的系統(tǒng)中由應(yīng)用程序?qū)lash存儲(chǔ)器進(jìn)行編程[2]。
2.3 Flash存儲(chǔ)系統(tǒng)的編程
LPC21l 4支持多種方式對(duì)Flash進(jìn)行編程,用來(lái)寫入用戶代碼或數(shù)據(jù)。第一種是通過(guò)內(nèi)置的串行JTAG接口;第二種是通過(guò)UARTO進(jìn)行在系統(tǒng)編程(ISP);第三種是通過(guò)在應(yīng)用編程(IAP)實(shí)現(xiàn)。下面簡(jiǎn)單介紹IAP的編程原理。

IAP(In-Application Programming)是應(yīng)用在Flash程序存儲(chǔ)器的一種編程模式。即在應(yīng)用程序控制下,對(duì)程序某段存儲(chǔ)空間進(jìn)行讀取、擦除、寫入操作。與ISP操作非常相似,具有在線編程功能。且克服了ISP不足之處,它可以在應(yīng)用程序正常運(yùn)行的情況下對(duì)另外一段程序Flash進(jìn)行讀寫操作,甚至可以控制對(duì)某段、某頁(yè)、甚至某個(gè)字節(jié)的讀寫操作。這為數(shù)據(jù)存儲(chǔ)和固件的現(xiàn)場(chǎng)升級(jí)帶來(lái)了極大的靈活性。
3 IAP功能的硬件設(shè)計(jì)
由以上分析可知,使用IAP對(duì)Flash存儲(chǔ)器進(jìn)行編程是合適的方案。下面介紹一種基于GPRS的遠(yuǎn)程IAP系統(tǒng)方案,系統(tǒng)框圖如圖1所示。
AT45DB041B為4MB串行Flash存儲(chǔ)器,兼有ROM的掉電數(shù)據(jù)保存和RAM的讀寫速度,最快支持20MHz的時(shí)鐘頻率,擦寫次數(shù)達(dá)10000次,內(nèi)配置了兩個(gè)264BSRAM緩沖器,使得對(duì)主存儲(chǔ)體的編程可以連續(xù)進(jìn)行,省去編程等待時(shí)間;AT45DB041B采用CASON-8封裝,支持2.5~3.6V低電壓,操作功耗低,支持模式0和3的SPI總線接口,與MCU接口簡(jiǎn)單,穩(wěn)定可靠。非常適用于數(shù)字語(yǔ)音、圖像、程序代碼和數(shù)據(jù)的存儲(chǔ)應(yīng)用中。
GPRS模塊使用Siemens公司生產(chǎn)的MC35i,雙頻GPRS/GSM模塊(EGSM900/1800MHz或EGSM900/1900MHz),內(nèi)置TCP/IP,與標(biāo)準(zhǔn)AT指令完全兼容;其設(shè)計(jì)開發(fā)符合ETSI GSM Phase2+標(biāo)準(zhǔn)。
4 IAP功能的軟件設(shè)計(jì)
4.1 IAP編程接口
LPC2114的IAP程序位于Boot扇區(qū),復(fù)位后整個(gè)Boot扇區(qū)被映射到存儲(chǔ)地址0x7FFFE000~0x7FFFFFFF處,而IAP的入口地址為0x7FFFFFF0,程序?yàn)門humb代碼。IAP編程命令使用RAM的最高端32B,所以應(yīng)用程序應(yīng)保留這部分RAM。在使用IAP擦除/編程操作過(guò)程中,片內(nèi)Flash存儲(chǔ)器不可訪問。當(dāng)用戶應(yīng)用程序運(yùn)行時(shí),用戶Flash區(qū)域的中斷向量有效,所以在調(diào)用Flash擦除/寫IAP之前,用戶應(yīng)當(dāng)禁止中斷或確保用戶中斷向量在RAM中有效和中斷處理程序位于RAM中。IAP代碼不使用或禁止中斷。
4.2 IAP編程C語(yǔ)言實(shí)現(xiàn)
對(duì)于在應(yīng)用編程,LPC2114是通過(guò)寄存器RO中的字指針指向RAM存儲(chǔ)單元包含的命令代碼和參數(shù)來(lái)調(diào)用IAP程序。IAP命令的結(jié)果返回到寄存器R1所指向的RAM空間。
LPC2114的IAP調(diào)用可使用如下C語(yǔ)言代碼調(diào)用:
(1)定義IAP程序入口地址。
# define IAP_ LOCATION 0x7FFFFFF1
(2)定義數(shù)據(jù)結(jié)構(gòu)來(lái)傳遞IAP命令表和結(jié)果給IAP程序。
unsigned long Command[5];//輸入?yún)?shù)最多為5個(gè)
unsigned long Result[2];//輸出參數(shù)最多為2個(gè)
(3)定義函數(shù)類型指針,函數(shù)包括兩個(gè)參數(shù),無(wú)返回值。
typedef void (*IAP) (unsigned int[ ],unsigned int[ ]);
IAP iap_entry;//定義函數(shù)指針
(4)設(shè)置函數(shù)指針。
iap_entry = (IAP)IAp_ LOCATION;
(5)使用下面的語(yǔ)句來(lái)調(diào)用IAP。
iap_entry (command, result);
本系統(tǒng)是基于LPC2114工程模板上進(jìn)行移植,在ASD1.2嵌入式軟件開發(fā)平臺(tái)上用C語(yǔ)言直接調(diào)用IAP程序代碼實(shí)現(xiàn)IAP編程,IAP的命令碼、狀態(tài)碼和命令詳解以及IAP功能的詳細(xì)應(yīng)用見文獻(xiàn)[2]。
5 LPC2114的IAP遠(yuǎn)程升級(jí)在用電現(xiàn)場(chǎng)監(jiān)控終端的應(yīng)用
終端軟件系統(tǒng)的設(shè)計(jì)包括用戶引導(dǎo)程序設(shè)計(jì)(與Boot裝載程序有區(qū)別,前者由用戶設(shè)計(jì),后者由芯片生產(chǎn)商設(shè)計(jì)并固化)和應(yīng)用程序的設(shè)計(jì)。它們?cè)贚PC2114中的入口地址不同,終端正常復(fù)位后,則首先執(zhí)行用戶引導(dǎo)程序,由用戶引導(dǎo)程序決定是否啟動(dòng)IAP升級(jí)程序;應(yīng)用程序完成終端的各種功能,包括新版本應(yīng)用程序升級(jí)包的下載。
5.1 終端用戶引導(dǎo)程序設(shè)計(jì)
終端用戶引導(dǎo)程序是基于文件系統(tǒng)的思想來(lái)設(shè)計(jì)的,用戶引導(dǎo)程序設(shè)計(jì)成單獨(dú)的程序,裝載于LPC2114的Flash扇區(qū)起始位置處,終端重新啟動(dòng)時(shí),LPC2114總是從0地址開始讀取指令并執(zhí)行,將IAP升級(jí)代碼安排到用戶引導(dǎo)部分,實(shí)驗(yàn)證明這種安排是合理的。如果采用應(yīng)用程序調(diào)用的方式執(zhí)行IAP命令編程Flash,當(dāng)Flash編程遇到失敗時(shí),整個(gè)系統(tǒng)就完全崩潰,應(yīng)用程序代碼被破壞,再無(wú)能力遠(yuǎn)程更新。采用本文的升級(jí)方式可完全避免這種情況的出現(xiàn),用戶引導(dǎo)程序出廠后固化,而外圍存儲(chǔ)器AT45DB041B中始終保存一份最新的應(yīng)用程序代碼備份,引導(dǎo)程序有能力多次編程Flash扇區(qū),確保應(yīng)用程序代碼的完整性,增加了升級(jí)的可靠性。
終端用戶引導(dǎo)程序運(yùn)行執(zhí)行后,首先檢查應(yīng)用程序升級(jí)標(biāo)志和版本號(hào),當(dāng)升級(jí)標(biāo)志被置位且出現(xiàn)新版本號(hào)時(shí),MCU通過(guò)SPI接口從AT45DB041B中讀取應(yīng)用程序升級(jí)代碼,然后調(diào)用IAP命令執(zhí)行Flash編程,實(shí)現(xiàn)對(duì)應(yīng)用程序的升級(jí),當(dāng)升級(jí)任務(wù)完成后,清除升級(jí)標(biāo)志和更新應(yīng)用程序版本,最后轉(zhuǎn)移到應(yīng)用程序入口并執(zhí)行應(yīng)用程序代碼,引導(dǎo)過(guò)程流程圖如圖2所示。
5.2 終端應(yīng)用程序設(shè)計(jì)
終端應(yīng)用程序負(fù)責(zé)完成終端的各項(xiàng)功能,其中包括接收前置機(jī)的遠(yuǎn)程升級(jí)命令。終端接收到前置機(jī)的遠(yuǎn)程升級(jí)命令后,應(yīng)用程序?qū)⑸?jí)包按照幀的方式通過(guò)GPRS Modem從前置機(jī)下載到終端,并保存到終端的AT45DB041B存儲(chǔ)器,下載成功后置位升級(jí)標(biāo)志和記錄升級(jí)包版本號(hào)以備用戶引導(dǎo)程序升級(jí)。

在升級(jí)包的下載過(guò)程中可看成是數(shù)據(jù)傳輸過(guò)程,應(yīng)用程序可同步完成終端的其他各種功能,不影響終端的正常運(yùn)行。應(yīng)用程序升級(jí)包下載成功后,終端進(jìn)行必要的現(xiàn)場(chǎng)保存并主動(dòng)復(fù)位,從而執(zhí)行用戶引導(dǎo)程序升級(jí)的最后一步——Flash編程。另外也可以在終端里配置升級(jí)時(shí)間,避開終端任務(wù)重負(fù)荷階段,使得升級(jí)過(guò)程對(duì)終端正常工作影響降低到最低程度。應(yīng)用程序升級(jí)包的下載流程如圖3所示。

5.3 通信協(xié)議的設(shè)計(jì)
GPRS與Internet連接建立后,進(jìn)人數(shù)據(jù)透明傳輸階段。本系統(tǒng)在完善的TCP/IP機(jī)制基礎(chǔ)上設(shè)計(jì)用戶應(yīng)用層協(xié)議。為實(shí)現(xiàn)對(duì)系統(tǒng)某個(gè)終端的系統(tǒng)軟件升級(jí),前置機(jī)將要升級(jí)的程序代碼轉(zhuǎn)化為寫終端升級(jí)代碼幀,接入Internet到GPRS網(wǎng)絡(luò),透明傳輸下載到目標(biāo)終端[8]。參照通信規(guī)約,自定義了前置機(jī)升級(jí)請(qǐng)求幀、升級(jí)代碼數(shù)據(jù)幀和終端回應(yīng)幀,幀格式如表2所示。
在通信協(xié)議的幀格式中,三種數(shù)據(jù)幀的前五項(xiàng)相同,起始字符表示幀的開始,固定用68H表示;終端邏輯地址在通信時(shí)用來(lái)唯一識(shí)別一個(gè)通信的最終發(fā)起端和接收端,它包括地市區(qū)碼和終端地址碼兩部分;主站地址在通信時(shí)用來(lái)唯一識(shí)別通信的主站端對(duì)象;控制碼表示要求執(zhí)行的操作,8AH表示升級(jí)代碼下載操作;數(shù)據(jù)長(zhǎng)度則表示此項(xiàng)直到校驗(yàn)符的前項(xiàng)的所有數(shù)據(jù)字節(jié)數(shù);廠商編號(hào)是與本終端匹配前置機(jī)的唯一編號(hào);權(quán)限等級(jí)和密碼應(yīng)用于前置機(jī)升級(jí)請(qǐng)求幀和升級(jí)代碼數(shù)據(jù)幀中,權(quán)限和密碼保護(hù)機(jī)制保證升級(jí)幀的可靠性;在升級(jí)請(qǐng)求幀中還包括升級(jí)軟件版本號(hào),總長(zhǎng)度和總校驗(yàn)和,是升級(jí)文件的相關(guān)信息;在升級(jí)代碼數(shù)據(jù)幀中還包括當(dāng)前的幀序號(hào)和本幀的數(shù)據(jù)內(nèi)容,數(shù)據(jù)長(zhǎng)度固定為792B,不足補(bǔ)OOH;在終端回應(yīng)幀中給出錯(cuò)誤信息和下一幀序號(hào),以便前置機(jī)的后續(xù)傳輸處理;檢驗(yàn)碼CS和幀尾是三種共同的部分,校驗(yàn)碼是幀頭與校驗(yàn)碼之間字節(jié)累加和,幀尾固定用16H表示。
6 遠(yuǎn)程IAP應(yīng)用的可靠性探討
終端應(yīng)用程序的升級(jí)過(guò)程不免要受到環(huán)境的干擾,如終端掉電、異常的終端復(fù)位、網(wǎng)絡(luò)通信阻塞等故障,都會(huì)導(dǎo)致終端遠(yuǎn)程升級(jí)包下載或者IAP編程的失敗,因此必須提供一套可靠的軟硬件機(jī)制來(lái)保證終端IAP過(guò)程的正常工作。本系統(tǒng)中采取的措施[7]如下。
(1)終端掉電及異常復(fù)位處理 由于終端的停電及電網(wǎng)波動(dòng)等干擾引起的終端復(fù)位都將中止終端的升級(jí)過(guò)程,導(dǎo)致升級(jí)失敗。本系統(tǒng)采用下載和IAP過(guò)程完全分離的升級(jí)方式,IAP部分位于用戶引導(dǎo)程序部分,不被擦除,AT45DB041B中總是備份最新版本終端應(yīng)用程序,所以任何階段操作失敗都能保證終端的正常工作。另外,在終端配備蓄電池和充電電路,在終端主電源來(lái)電時(shí)對(duì)蓄電池充電,使得終端掉電時(shí)也可正常運(yùn)行,遠(yuǎn)程IAP過(guò)程更為可靠。
(2)遠(yuǎn)程通信的誤碼處理數(shù)據(jù)傳輸過(guò)程產(chǎn)生的誤碼。通用的、有效的解決辦法就是用CRC循環(huán)冗余效驗(yàn)和重傳機(jī)制。數(shù)據(jù)校驗(yàn)碼校驗(yàn)正確后存入AT45DB041B,錯(cuò)誤時(shí)返回錯(cuò)誤編碼發(fā)和幀序號(hào)請(qǐng)求重發(fā),直到檢測(cè)到結(jié)束幀。結(jié)束幀數(shù)據(jù)長(zhǎng)度不夠,用00填充,不影響校驗(yàn)碼。
(3)網(wǎng)絡(luò)阻塞、故障處理 由于地形和環(huán)境因素的影響,GPRS網(wǎng)絡(luò)在遠(yuǎn)程IAP的通信過(guò)程中可能出現(xiàn)阻塞或斷開的情況,這時(shí)終端和前置機(jī)對(duì)無(wú)回應(yīng)幀采用延時(shí)重發(fā)的機(jī)制,連續(xù)五次不成功則斷開GPRS網(wǎng)并重新連接,終端保存升級(jí)的下載斷點(diǎn)信息,以待網(wǎng)絡(luò)恢復(fù)后繼傳數(shù)據(jù)。
7 結(jié)束語(yǔ)
該設(shè)計(jì)方案基本解決了本系統(tǒng)的遠(yuǎn)程代碼升級(jí)的困難,提高了系統(tǒng)軟件維護(hù)的方便性,加快了新產(chǎn)品的上市時(shí)間,也為用戶提供了更安全、快捷的服務(wù),提高了產(chǎn)品搶占市場(chǎng)的競(jìng)爭(zhēng)力。用GPRS網(wǎng)絡(luò)為傳輸通道,對(duì)接入Internet困難的邊遠(yuǎn)地區(qū)的現(xiàn)場(chǎng)用電監(jiān)控終端的遠(yuǎn)程維護(hù)提出了一種全新的、可靠的設(shè)計(jì)方案。
來(lái)源:電氣應(yīng)用