李富民,周風余,姜志飛
(山東大學 控制科學與工程學院,濟南 250061)
?
基于GPRS與IAP技術的監控系統遠程升級軟件設計
李富民,周風余,姜志飛
(山東大學 控制科學與工程學院,濟南 250061)
基于GPRS無線網絡通信技術和IAP(In Application Programming)技術,針對STM32L系列低功耗MCU,設計并實現了一種適用于遠程監控系統的無線遠程程序升級軟件。大量實驗及應用表明,該軟件能夠根據上位機的要求,對終端設備進行快速準確的程序更新,同時最大限度地保證了終端設備不間斷運行,避免了傳統終端設備需要人到現場進行升級程序的麻煩,有效降低了人工成本。
STM32L;IAP;無線網絡;遠程升級
由于人工監測存在成本高、效率低、數據的實時性和準確性較差等缺陷,基于無線網絡的遠程監控系統越來越廣泛地被應用到城市燃氣輸配管線泄露監測、遠程電網質量監控等過程中[1]。并且行業對遠程監控終端系統的功能、性能及規模不斷提出更高的要求,需要系統能夠進行及時的維護和升級。但是管線監控終端系統分布范圍廣,并且大部分都安裝在地下管道中,惡劣的環境及條件給監控終端系統維護和程序升級帶來極大的不便。針對上述問題,本文對基于STM32L151VCT6微控制器的嵌入式監控終端遠程在線升級軟件進行了設計,大大提高了設備性能,降低了維護成本。
本文設計的遠程監控終端硬件系統整體結構如圖1所示。系統控制核心選用的是ST公司的一款工業級微控制器STM32L151VCT6,它是基于Cortex-M3內核的超低功耗32位MCU,擁有豐富的外設和增強的I/O功能,運行頻率為32 MHz;具有256 KB FLASH和32 KB SRAM,內部支持自編程,具有多種boot方式。另外,STM32L151VCT6能夠通過運行在FLASH中的程序來對自身的FLASH進行更新。這個功能使其能夠通過CAN、UART、USB、無線通信等接口將程序下載到自身的FLASH中[1]。
無線通信模塊采用了希姆通公司生產的一款GPRS和GPS二合一低功耗模塊SIM908,它與STM32L151VCT6通過串口進行通信,其外圍電路包括SIM卡、GPRS天線、GPS天線。此外還包括電源模塊、以LCD12864為顯示器配以紅外遙控的人機交互模塊、用于存儲大量傳感器數據的外部存儲單元以及各種傳感器模塊。外部FLASH采用的是Winbond公司的W25Q64BVSIG芯片,此芯片可重復擦寫10萬次,數據保持超過20年。外部的EEPROM芯片采用I2C總線讀寫,這個芯片具有很高的可靠性和耐久力,可重復擦寫10萬次,數據可保留40年。在整個系統中,根據I2C總線、SPI總線及芯片的特點,經常需要擦除的且小數量的數據存儲在外部EEPROM中,一些較大的數據則存儲外部FLASH中。

圖1 系統結構示意圖
STM32L系列微控制器是2010年3月份推出的,需要注意的是早前的一些IAR版本不支持STM32L系列的芯片[3],因此本系統的開發環境必須采用IAR Embedded Workbench 6.4及以后的版本。
2.1程序地址分配

圖2 IAP程序、應用程序及應用程序備份區域地址分配圖
IAP程序、應用程序以及備份應用程序在FLASH中的地址分配如圖2所示。STM32L151VCT6的FLASH共有256 KB,其起始地址為0x 8000 000。IAP升級程序約10 KB,將IAP升級程序從0x 8000 000開始存儲,存儲位置空間設為0x 8000 000~0x 8004 FFF,共20 KB。應用程序從0x 8005 000開始存儲,存儲位置為0x 8005 000~0X 8022 7FF,共118 KB。應用程序備份區域從0x 8022 800開始存儲,存儲位置為0x 8022 800~0x 803F FFF,共118 KB。然后將MCU的BOOT引腳接地,使程序從FLASH開始啟動。
此時應用程序需要重新定位中斷向量表的位置,因為現在的應用程序已經與沒有IAP升級程序時的存儲位置不同,具體重定位方法有如下兩種。
方法一,在程序的開始位置調用重定位函數,將應用程序定位到指定的位置NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x5000)。
方法二,在IAR環境下,對程序空間按如下步驟進行重定向操作:打開“Options”→“Linker”→“Config”,點擊“Edit”,在彈出的窗口中設置如圖3所示的地址空間[3]。
2.2IAP程序升級流程及主要函數
圖4為IAP遠程程序升級流程圖。程序首先初始化時鐘與串口,然后判斷上位機是否有程序升級的要求,如果沒有,則程序會跳轉去執行應用程序的任務。如果有,則運行升級程序。升級程序首先將舊應用程序進行備份,避免后續出現因升級程序錯誤導致的系統癱瘓;然后從與GPRS連接的串口讀取數據并校驗,由于內部SDRAM有限,因此升級程序是邊接收數據邊寫入相應的FLASH區域。在升級過程中,如果出現某一包數據接收錯誤,終端會請求上位機重發。當某一包數據連續出現錯誤次數達到5次或者升級程序數據大于FLASH容量時,程序會認為升級失敗,直接讀取備份區域的原有應用程序進行執行,避免了終端因為升級失敗而癱瘓。
IAP升級程序涉及的主要函數及相應的功能說明如下[4]:
① main函數:用于初始化UART串口、時鐘等。若此時有升級程序的請求,利用IAP引導升級程序;若沒有升級程序的請求,則跳轉到應用程序部分運行應用程序。
② voidFLASH_Unlock(void):解除FLASH擦寫鎖定碼,為后續FLASH擦除寫入做準備[5]。
③ FLASH_Status FLASH_ErasePage(uint32_t Page_Address):擦除將要寫入數據的FLASH頁。
④ void FLASH_Lock(void):FLASH擦寫鎖定,保護數據。
⑤ FLASH_StatusFLASH_ProgramWord(uint32_t Address, uint32_t Data):向特定的FLASH地址寫入一個字。
⑥ void NVIC_SystemReset(void):軟件復位函數,在升級完程序以后,通過此函數進行復位并執行應用程序。

圖4 IAP升級程序流程圖
2.3通信協議設計
上位機向遠程監控終端發送的數據結構如下所示:

包頭總包數當前包數命令字數據段CRC校驗包尾
設計的通信包數據結構如表1所列,每一包數據為1041個字節,其中包頭2字節,包尾2字節,CRC校驗值4字節,總包數和當前包數各4個字節,數據段為1024字節,不夠1024字節的要在數據段補齊。

表1 通信包的數據結構
遠程監控終端向上位機發送的應答數據包結構如下所示:

包頭當前包數是否正確接收標志CRC校驗包尾
其中包頭、當前包數、CRC校驗、包尾的具體形式與表1相同。是否正確接收標志:0表示接收失敗,1表示接收成功。
2.4系統應用程序設計
應用程序的起始地址為0x 8005 000,共118 KB存儲空間。應用程序有兩個主要任務:一是進行日常的工作任務;二是時刻檢測上位機是否有升級程序的要求。當收到上位機的升級要求后,應用程序首先進行軟件復位,這樣程序重新從0x 8000 000處開始執行IAP升級程序。
由于遠程監控終端應用程序執行的任務可能比較復雜,涉及很多重要數據和參數,并且這些數據和參數在升級后的程序運行過程中仍要繼續使用,因此在程序升級前要將這些重要數據和參數分別存放到外部FLASH和EEPROM中[6],以保證程序更新后系統仍能正常運行。應用程序設計中還必須要注意,由于系統采用錯誤重傳機制,數據塊越大,出現錯誤的機率就越大。根據實際應用經驗,建議采用小數據塊傳輸,不僅可以降低誤碼率,而且還可以提供傳輸效率[1]。
為了保證本文設計的遠程升級軟件的準確、可靠,進行了大量的測試,圖5為上位機向終端發送升級程序數據的過程。

圖5 上位機向終端發送升級程序數據界面
表2為測試結果。從表中可以看出,在升級94 KB代碼容量數據時,出現了一次升級失敗。這是因為在升級過程中,網絡信號較差且升級的代碼容量較大造成的。除去這一次升級失敗,其他測試都是成功的,這也證明了本升級程序系統的準確性、可靠性。

表2 測試結果
通過大量的實驗測試及長時間的實際應用表明,本文運用IAP技術和芯片內部FLASH讀寫技術,設計的遠程升級軟件具有較高的成功率和較快的升級速度,對相關類似系統設計具有一定的參考價值。
[1] 楊照巖.ARM和GPRS相配合的軟件無線升級系統[J].Microcontrollers & Embedded Systems,2010(7):72-74.
[2] ST.STM32L和STM8L系列超低功耗EnergyLite 32位和8位微控制器[EB/OL].[2016-03].http://www.docin.com/p-232975083.html.
[3] ARM.IAR Embedded Workbench IDE User Guide,2004.
[4] 蔣俊,藍敏.基于IAP和網口的ARM Cortex-M3固件升級技術[J].單片機與嵌入式系統應用,2014,14(12):11-13.
[5] 姜曉梅,李祥和,任朝榮,等.基于ARM的IAP在線及遠程升級技術[J].計算機應用,2008,28(2):519-521.
[6] Chen M,Zhang Y,Hu L,et al.Cloud-based wireless network:Virtualized,reconfigurable,smart wireless network to enable 5G technologies[J].Mobile Networks and Applications,2015,20(6):704-712.
Remote Upgrade Software for Monitor System Based on GPRS and IAP
Li Fumin,Zhou Fengyu,Jiang Zhifei
(School of Control Science and Engineering,Shandong University,Jinan 250061,China)
Based on GPRS wireless network communication technology and IAP (In Application Programming) technology,a kind of wireless remote upgrade software for remote monitoring and control system is designed,which uses the low-power MCU of STM32L series.A large number of experiments and applications show that the remote upgrade software can not only have an accurate and quick application update according to the requirements of the upper computer,but also guarantee the continuous operation of terminal equipments,which avoids the traditional upgrade by the manual work on the site,and effectively reduces the human cost.
STM32L;IAP;wireless network;remote upgrade
TP36
A
(責任編輯:薛士然2016-03-14)