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