引 言 用電現場(chǎng)監控終端是一種與多功能計量設備同步計量并全方位監控用電狀況的智能化設備,在目前全國電力緊缺的情況下,起到了削峰填谷,提高電網(wǎng)運行效率的作用,尤其適合于對用電大戶(hù)的用電監控。 市場(chǎng)的需求和應用技術(shù)的成熟往往是矛盾的,用戶(hù)總希望盡快用到功能完善、技術(shù)先進(jìn)的產(chǎn)品,但從新技術(shù)到應用總有一個(gè)過(guò)程。這個(gè)過(guò)程的長(cháng)短最大程度上決定了產(chǎn)品的市場(chǎng)前景,如果要好好把握市場(chǎng),常常不得不一邊開(kāi)拓市場(chǎng)一邊完善技術(shù)。實(shí)踐是檢驗真理的唯一標準,要做出好的產(chǎn)品,必須與用戶(hù)形成互動(dòng)的關(guān)系,利用用戶(hù)的反饋信息對產(chǎn)品不斷完善。另外,產(chǎn)品長(cháng)時(shí)間使用后,終端程序設計上的缺陷也就慢慢浮出水面,這就要求對終端系統程序進(jìn)行升級。如果對幾百個(gè)終端進(jìn)行現場(chǎng)ISP升級,那么不但浪費大量的人力、財力,更重要的是浪費了寶貴的時(shí)間,延誤了開(kāi)拓市場(chǎng)的機遇,降低了用戶(hù)對產(chǎn)品的信譽(yù)度。 在Internet飛速發(fā)展的時(shí)代,將終端接入到Internet是解決上述問(wèn)題的可靠、現實(shí)的方案。本設計方案應用于用電現場(chǎng)監控終端,采用高性能Philips ARM MCULPC2124,結合GPRS技術(shù)實(shí)現終端系統程序的遠程升級。 1 LPC2124芯片簡(jiǎn)介 1.1 功能介紹 LPC2124基于一個(gè)支持實(shí)時(shí)仿真和跟蹤的16/32位ARM7TDMI-SCPU,并帶有236 KB嵌入的高速Flash存儲器和16 KB RAM。對于內嵌flash存儲器支持JTAG、ISP、IAP等多種編程方式。 LPC2124具有非常小的64腳封裝、極低的功耗、多個(gè)32位定時(shí)器、4路10位ADC、PWM輸出、46個(gè)GPIO以及多達9個(gè)外部中斷,且內置了寬范圍的串行通信接口,使它們特別適用于工業(yè)控制中。因為用電監控終端對硬件資源要求高,軟件功能復雜,實(shí)時(shí)性強,所以采用LPC2124可以提高產(chǎn)品的性?xún)r(jià)比。 1.2 Flash存儲系統 LPC2124存儲系統包含256 KB的17個(gè)扇區。Flash存儲器從O地址開(kāi)始并向上增加,17個(gè)扇區的大小也不連續分布,17個(gè)扇區總容量為248 KB,剩下的8 KB存儲空間為Boot扇區。Boot扇區位于Flash存儲系統的頂端部分,地址空間是0x0003 EO00~0x0003FFFF。LPC2124存儲系統的地址分配如圖1所示。 Boot Block占用第17扇區,即Boot扇區。該扇區的存儲空間專(zhuān)用來(lái)存放B00t裝載程序,控制復位后的初始化操作,并提供Flash的編程方法(代碼)。B00t裝載器可啟動(dòng)對空白片的編程、已編程器件的擦除和再編程以及在運行的系統中由應用程序對Flash存儲器進(jìn)行編程。 1.3 Flash存儲系統的編程 LPC2124支持多種方式對Flash進(jìn)行編程,用來(lái)寫(xiě)入用戶(hù)代碼或數據。第一種是通過(guò)內置的串行JTAG接口;第二種是通過(guò)UART0進(jìn)行在系統編程(ISP);第三種是通過(guò)在應用編程(IAP)實(shí)現。 1.3.1 JTAG編程 LPC2124的JTAG Flash編程可方便下載程序到片內Flash,但JTAG接口更主要的是提供硬件系統調試功能,諸如實(shí)現軟件的斷點(diǎn)、單步。JTAG Flash編程要中斷應用軟件的正常運行,連線(xiàn)較多,通信距離較短,而且要現場(chǎng)編程,只適應于產(chǎn)品在開(kāi)發(fā)期的調試使用。 1.3.2 在系統編程 ISP(In-Svstam Programming)技術(shù),即在系統可編程技術(shù),是指電路板上的空白器件可以編程寫(xiě)入最終用戶(hù)代碼,而無(wú)需從電路板上取下器件;已編程的器件也可用ISP方式擦除或再編程。LPC2124支持ISP的Flash編程,但要巾止應用軟件的正常運行,且需要提供一定的硬件資源+包括UARTO口、RS232驅動(dòng)和CPU特殊引腳的狀態(tài);編程要求現場(chǎng)操作,非常適用于便攜式智能儀器的升級,但顯然不適用于用電監測終端這類(lèi)安裝環(huán)境特殊的設備。ISP編程原理詳見(jiàn)參考文獻。 1.3.3 在應用編程 在應用編程IAP(In-Application Programming)是應用在F1ash程序存儲器的一種編程模式。簡(jiǎn)單地說(shuō)就是在應用程序控制下,對程序某段存儲空間進(jìn)行讀取、擦除或寫(xiě)入操作。與ISP操作非常相似。具有在線(xiàn)編程功能,且克服了ISP的不足之處。它可以在應用程序正常運行的情況下對另外一段程序Flash進(jìn)行讀/寫(xiě)操作,甚至可以控制對某段、某頁(yè)甚至某個(gè)字節的讀/寫(xiě)操作。這為數據存儲和固件的現場(chǎng)升級帶來(lái)了極大的靈活性。 2 IAP功能的硬件設計 基于LPC2124的以上3種編程方法的分析,IAP實(shí)現對終端程序升級自然是最佳選擇方案。下面介紹一種基于GPRS的遠程IAP系統方案,系統框圖如圖2所示。 AT45DB08081B,8Mb串行flash存儲器,兼有ROM的掉電數據保存和RAM的讀/寫(xiě)速度,最快支持20MHz的時(shí)鐘頻率,擦寫(xiě)次數達10000次,內置2個(gè)264字節SRAM緩沖器,使得對主存儲體的編程可以連續進(jìn)行,省去編程等待時(shí)間。AT45DB081B采用CASON-8封裝,支持2.5~3.6 V低電壓,操作功耗低,支持模式O和3的SPI總線(xiàn)接口,與MCU接口簡(jiǎn)單,穩定可靠,非常適用于數字語(yǔ)音、圖像、程序代碼和數據的存儲應用中。在本設計中采用模式0與LPC2124通信,速度可達MCU主頻的1/8。 GPRS模塊使用Wavecom公司生產(chǎn)的Q2406B,雙頻GPRS/GSM模塊(EGSM900/1800 MHz或EGSM900/l900 MHz),內置TCP/IP,與標準AT指令完全兼容;其設計開(kāi)發(fā)符合ETSI GSM Phase 2+標準。 3 IAP功能的軟件設計 3.1 IAP編程接口 LPC2124的IAP程序位于Boot扇區,復位后整個(gè)Bool扇區被映射到存儲地址Ox7FFFFE000~Ox7FFFFFFF處;而IAP的入口地址為0x7FFFFFFFo,程序為T(mén)humb代碼。IAP編程命令使用RAM的最高端32字節,所以應用程序應保留這部分RAM。在使用IAP擦除/編程操作過(guò)程中,片內Flash存儲器不可訪(fǎng)問(wèn)。當用戶(hù)應用程序運行時(shí),用戶(hù)F1ash區域的中斷向量有效,所以在調用Flash擦除/寫(xiě)IAP之前,用戶(hù)應當禁止中斷或確保用戶(hù)中斷向量在:RAM中有效和中斷處理程序位于RAM中。IAP代碼不使用或禁止中斷。 3.2 IAP編程C語(yǔ)言實(shí)現 對于在應用編程,LPC2124是通過(guò)寄存器R0中的字指針指向存儲器(RAM)包含的命令代碼和參數來(lái)調用IAP程序。IAP命令的結果返回到寄存器R1所指向的存儲器(RAM)。 調用LPC2124的IAP可使用如下C語(yǔ)言代碼: ◆定義IAP程序入口地址 #definc lAP_LOCATl0N Ox7FFFFFFFl ◆定義數據結構來(lái)傳遞IAP命令表和結果給IAP程序 unslgned long Command[5]; unsigncd long Result[2]; ◆定義函數類(lèi)型指針,函數包括兩個(gè)參數,無(wú)返回值 typcdef void(*IAP)(unsigned int[],unsigncdim int[]); IAP iap_entry; //定義函數指針 ◆設置函數指針 iap_entry=(IAP)IAP_LOCATION; ◆使用下面的語(yǔ)句來(lái)調用IAP iap_entry(command,result); 本系統是基于LPC2124工程模板進(jìn)行移植的,在A(yíng)DSl.2嵌入式軟件開(kāi)發(fā)平臺上,用C語(yǔ)言直接調用IAP程序代碼實(shí)現IAP編程。IAP的命令碼、狀態(tài)碼和命令詳解以及IAP功能的詳細應用見(jiàn)參考文獻。 4 遠程升級在用電現場(chǎng)監控終端的應用 終端軟件系統的設計包括用戶(hù)引導程序設計(與Boot裝載程序有區別,前者由用戶(hù)設計,后者由芯片生產(chǎn)商設計并固化)和應用程序的設計。它們在LPC2124中的入口地址不同,終端復位后,如果未進(jìn)入ISP編程狀態(tài),則首先執行用戶(hù)引導程序,由用戶(hù)引導程序決定執行IAP升級還是正常運行;應用程序實(shí)現終端的各種功能,包括新版本應用程序升級包的下載。 4.1 終端用戶(hù)引導程序設計 終端用戶(hù)引導程序是基于文件系統的思想來(lái)設計的。終端的應用程序代碼存放在LPC2124的Flash存儲器中,終端正常運行時(shí),MCU不停地從Flash中讀取指令。如果對應用程序升級,即對應用程序占用的Flash存儲器扇區進(jìn)行擦除和再編程,顯然執行Flash編程的代碼占用的Flash扇區不能被擦除,那么升級程序的代碼只能用單獨的扇區存放,升級程序的執行可由應用程序調用,也可作為單獨的程序執行。由于LPC2124的IAP代碼采用16位Thumb指令集,執行IAP的過(guò)程中應禁止或者關(guān)閉中斷。如果將升級程序采用應用程序調用的方式來(lái)設計,會(huì )增加應用程序設計的復雜性,升級的可靠性較差。LPC2124復位后,由于Boot程序總是從Flash的0地址讀取指令,所以升級程序代碼放在起始扇區內,設計為用戶(hù)引導程序的一部分,而用戶(hù)引導程序總是不被修改的。如果升級過(guò)程失敗,MCU復位后應用程序可以重新升級,增強了升級的可靠性。 終端用戶(hù)引導程序在系統上電后執行。首先它檢查應用程序升級標志和版本號。當檢查到升級標志置位且出現新版本號時(shí),從AT45DB081B中讀取應用程序升級包,然后執行LPC2124的Flash編程動(dòng)作,實(shí)現對應用程序的升級。升級任務(wù)完成后,清除升級標志和更新應用程序版本,最后轉移到應用程序入口并執行應用程序代碼。引導過(guò)程流程如圖3所示。 4.2 終端應用程序設計 終端應用程序負責完成終端的數據采集、更新、掃描,并上報告警事件,控制現場(chǎng)執行機構,執行前置機的遠程命令及保存各種歷史數據等。前置機的遠程命令包括讀/寫(xiě)終端命令、中繼命令和遠程升級命令。當終端接收到前置機的遠程升級命令后,終端分析升級命令幀,讀取升級包信息,包括包總長(cháng)度、包校驗碼、幀序號和幀校驗碼,然后應答前置機并請求發(fā)送后繼數據幀,終端對后繼數據幀進(jìn)行校驗,校驗正確則應答成功和接收下一幀數據,否則應答失敗并要求終端重發(fā)。連續5次重發(fā)失敗,則認為網(wǎng)絡(luò )通信質(zhì)量差而取消當前升級操作,保存成功接收到的幀號和數據校驗和以備續傳。應用程序升級包按幀的方式通過(guò)GPRS Modem,由前置機下載到終端,并保存到終端的AT45DB081B Flash存儲器。下載成功后,置位升級標志和記錄升級包版本號,以備用戶(hù)引導程序升級。 升級包的下載過(guò)程可看成是數據的傳輸過(guò)程,應用程序可同步實(shí)現終端的其他各種功能,不影響終端的正常運行。應用程序升級包下載成功后,終端進(jìn)行必要的現場(chǎng)保存并主動(dòng)復位,從而執行用戶(hù)引導程序升級的最后一步——Flash編程。另外,也可在終端里配置升級時(shí)間,避開(kāi)終端任務(wù)重負荷階段,使得升級過(guò)程對終端正常工作的影響降低到最小。 應用程序升級包的下載流程如圖4所示。 4.3 通信協(xié)議的設計 GPRS與Internet連接建立后,進(jìn)入數據透明傳輸階段。本系統在完善的TCP/IP機制基礎上設計用戶(hù)應用層協(xié)議。為實(shí)現系統某個(gè)終端的系統軟件升級,前置機將要升級的程序代碼轉化為寫(xiě)終端升級代碼幀,接入Internet到GPRS網(wǎng)絡(luò ),透明傳輸下載到目標終端。根據江西省用電現場(chǎng)服務(wù)與管理系統通信規約,將寫(xiě)終端升級代碼幀分為3種:前置機升級請求幀、升級代碼數據幀和終端回應幀。幀格式在參考文獻中有詳細說(shuō)明。 5 遠程IAP應用的可靠性探討 終端應用程序的升級過(guò)程不免要受到環(huán)境的干擾,如終端掉電、異常的終端復位和網(wǎng)絡(luò )通信阻塞等故障,都會(huì )導致終端遠程IAP的失敗,因此必須提供一套可靠的軟硬件機制來(lái)保證終端IAP過(guò)程的正常工作。以下是本系統中采取的措施: ◆終端掉電及異常復位處理。由于終端的停電及電網(wǎng)波動(dòng)等干擾引起的終端復位,都將中止終端的升級過(guò)程,導致升級失敗。本系統采用下載和IAP過(guò)程完全分離的升級方式。IAP位于用戶(hù)引導程序部分,不被擦除。AT45DB08lB中總是備份最新版本終端應用程序,所以任何階段操作失敗都能保證終端的正常工作。另外,在終端配備蓄電池和充電電路,在終端主電源來(lái)電時(shí)對蓄電池充電,使得終端掉電時(shí)也可正常運行,遠程IAP過(guò)程更為可靠。 ◆遠程通信的誤碼處理。對數據傳輸過(guò)程產(chǎn)生的誤碼,通用的、有效的解決辦法,就是用CRC循環(huán)冗余校驗和重傳機制。數據校驗碼校驗正確后存入AT45DB081B,錯誤時(shí)返回錯誤編碼發(fā)和幀序號請求重發(fā),直到檢測到結束幀。結束幀數據長(cháng)度不夠,用00填充。 ◆網(wǎng)絡(luò )阻塞、故障處理。由于地形和環(huán)境因素的影響,GPRS網(wǎng)絡(luò )在遠程IAP的通信過(guò)程中可能出現阻塞或斷開(kāi)的情況。這時(shí)終端和前置機對無(wú)回應幀采用延時(shí)重發(fā)的機制,連續5次不成功則斷開(kāi)GPRS網(wǎng)并重新連接,終端保存升級的下載斷點(diǎn)信息,以待網(wǎng)絡(luò )恢復后繼續傳數據。 結語(yǔ) 該設計方案基本解決了本系統的遠程代碼升級的問(wèn)題,增強了系統軟件維護的方便性,縮短了新產(chǎn)品的上市時(shí)間,也為用戶(hù)提供了更安全、快捷的服務(wù)。用GPRS網(wǎng)絡(luò )作為傳輸通道,為接入Internet困難的偏遠地區的現場(chǎng)用電監控終端的遠程維護,提出了一種全新的、可靠的設計方案。 |