李富民,周風(fēng)余,姜志飛
(山東大學(xué) 控制科學(xué)與工程學(xué)院,濟南 250061)
?
基于GPRS與IAP技術(shù)的監(jiān)控系統(tǒng)遠程升級軟件設(shè)計
李富民,周風(fēng)余,姜志飛
(山東大學(xué) 控制科學(xué)與工程學(xué)院,濟南 250061)
基于GPRS無線網(wǎng)絡(luò)通信技術(shù)和IAP(In Application Programming)技術(shù),針對STM32L系列低功耗MCU,設(shè)計并實現(xiàn)了一種適用于遠程監(jiān)控系統(tǒng)的無線遠程程序升級軟件。大量實驗及應(yīng)用表明,該軟件能夠根據(jù)上位機的要求,對終端設(shè)備進行快速準確的程序更新,同時最大限度地保證了終端設(shè)備不間斷運行,避免了傳統(tǒng)終端設(shè)備需要人到現(xiàn)場進行升級程序的麻煩,有效降低了人工成本。
STM32L;IAP;無線網(wǎng)絡(luò);遠程升級
由于人工監(jiān)測存在成本高、效率低、數(shù)據(jù)的實時性和準確性較差等缺陷,基于無線網(wǎng)絡(luò)的遠程監(jiān)控系統(tǒng)越來越廣泛地被應(yīng)用到城市燃氣輸配管線泄露監(jiān)測、遠程電網(wǎng)質(zhì)量監(jiān)控等過程中[1]。并且行業(yè)對遠程監(jiān)控終端系統(tǒng)的功能、性能及規(guī)模不斷提出更高的要求,需要系統(tǒng)能夠進行及時的維護和升級。但是管線監(jiān)控終端系統(tǒng)分布范圍廣,并且大部分都安裝在地下管道中,惡劣的環(huán)境及條件給監(jiān)控終端系統(tǒng)維護和程序升級帶來極大的不便。針對上述問題,本文對基于STM32L151VCT6微控制器的嵌入式監(jiān)控終端遠程在線升級軟件進行了設(shè)計,大大提高了設(shè)備性能,降低了維護成本。
本文設(shè)計的遠程監(jiān)控終端硬件系統(tǒng)整體結(jié)構(gòu)如圖1所示。系統(tǒng)控制核心選用的是ST公司的一款工業(yè)級微控制器STM32L151VCT6,它是基于Cortex-M3內(nèi)核的超低功耗32位MCU,擁有豐富的外設(shè)和增強的I/O功能,運行頻率為32 MHz;具有256 KB FLASH和32 KB SRAM,內(nèi)部支持自編程,具有多種boot方式。另外,STM32L151VCT6能夠通過運行在FLASH中的程序來對自身的FLASH進行更新。這個功能使其能夠通過CAN、UART、USB、無線通信等接口將程序下載到自身的FLASH中[1]。
無線通信模塊采用了希姆通公司生產(chǎn)的一款GPRS和GPS二合一低功耗模塊SIM908,它與STM32L151VCT6通過串口進行通信,其外圍電路包括SIM卡、GPRS天線、GPS天線。此外還包括電源模塊、以LCD12864為顯示器配以紅外遙控的人機交互模塊、用于存儲大量傳感器數(shù)據(jù)的外部存儲單元以及各種傳感器模塊。外部FLASH采用的是Winbond公司的W25Q64BVSIG芯片,此芯片可重復(fù)擦寫10萬次,數(shù)據(jù)保持超過20年。外部的EEPROM芯片采用I2C總線讀寫,這個芯片具有很高的可靠性和耐久力,可重復(fù)擦寫10萬次,數(shù)據(jù)可保留40年。在整個系統(tǒng)中,根據(jù)I2C總線、SPI總線及芯片的特點,經(jīng)常需要擦除的且小數(shù)量的數(shù)據(jù)存儲在外部EEPROM中,一些較大的數(shù)據(jù)則存儲外部FLASH中。
圖1 系統(tǒng)結(jié)構(gòu)示意圖
STM32L系列微控制器是2010年3月份推出的,需要注意的是早前的一些IAR版本不支持STM32L系列的芯片[3],因此本系統(tǒng)的開發(fā)環(huán)境必須采用IAR Embedded Workbench 6.4及以后的版本。
2.1程序地址分配
圖2 IAP程序、應(yīng)用程序及應(yīng)用程序備份區(qū)域地址分配圖
IAP程序、應(yīng)用程序以及備份應(yīng)用程序在FLASH中的地址分配如圖2所示。STM32L151VCT6的FLASH共有256 KB,其起始地址為0x 8000 000。IAP升級程序約10 KB,將IAP升級程序從0x 8000 000開始存儲,存儲位置空間設(shè)為0x 8000 000~0x 8004 FFF,共20 KB。應(yīng)用程序從0x 8005 000開始存儲,存儲位置為0x 8005 000~0X 8022 7FF,共118 KB。應(yīng)用程序備份區(qū)域從0x 8022 800開始存儲,存儲位置為0x 8022 800~0x 803F FFF,共118 KB。然后將MCU的BOOT引腳接地,使程序從FLASH開始啟動。
此時應(yīng)用程序需要重新定位中斷向量表的位置,因為現(xiàn)在的應(yīng)用程序已經(jīng)與沒有IAP升級程序時的存儲位置不同,具體重定位方法有如下兩種。
方法一,在程序的開始位置調(diào)用重定位函數(shù),將應(yīng)用程序定位到指定的位置NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x5000)。
方法二,在IAR環(huán)境下,對程序空間按如下步驟進行重定向操作:打開“Options”→“Linker”→“Config”,點擊“Edit”,在彈出的窗口中設(shè)置如圖3所示的地址空間[3]。
2.2IAP程序升級流程及主要函數(shù)
圖4為IAP遠程程序升級流程圖。程序首先初始化時鐘與串口,然后判斷上位機是否有程序升級的要求,如果沒有,則程序會跳轉(zhuǎn)去執(zhí)行應(yīng)用程序的任務(wù)。如果有,則運行升級程序。升級程序首先將舊應(yīng)用程序進行備份,避免后續(xù)出現(xiàn)因升級程序錯誤導(dǎo)致的系統(tǒng)癱瘓;然后從與GPRS連接的串口讀取數(shù)據(jù)并校驗,由于內(nèi)部SDRAM有限,因此升級程序是邊接收數(shù)據(jù)邊寫入相應(yīng)的FLASH區(qū)域。在升級過程中,如果出現(xiàn)某一包數(shù)據(jù)接收錯誤,終端會請求上位機重發(fā)。當某一包數(shù)據(jù)連續(xù)出現(xiàn)錯誤次數(shù)達到5次或者升級程序數(shù)據(jù)大于FLASH容量時,程序會認為升級失敗,直接讀取備份區(qū)域的原有應(yīng)用程序進行執(zhí)行,避免了終端因為升級失敗而癱瘓。
IAP升級程序涉及的主要函數(shù)及相應(yīng)的功能說明如下[4]:
① main函數(shù):用于初始化UART串口、時鐘等。若此時有升級程序的請求,利用IAP引導(dǎo)升級程序;若沒有升級程序的請求,則跳轉(zhuǎn)到應(yīng)用程序部分運行應(yīng)用程序。
② voidFLASH_Unlock(void):解除FLASH擦寫鎖定碼,為后續(xù)FLASH擦除寫入做準備[5]。
③ FLASH_Status FLASH_ErasePage(uint32_t Page_Address):擦除將要寫入數(shù)據(jù)的FLASH頁。
④ void FLASH_Lock(void):FLASH擦寫鎖定,保護數(shù)據(jù)。
⑤ FLASH_StatusFLASH_ProgramWord(uint32_t Address, uint32_t Data):向特定的FLASH地址寫入一個字。
⑥ void NVIC_SystemReset(void):軟件復(fù)位函數(shù),在升級完程序以后,通過此函數(shù)進行復(fù)位并執(zhí)行應(yīng)用程序。
圖4 IAP升級程序流程圖
2.3通信協(xié)議設(shè)計
上位機向遠程監(jiān)控終端發(fā)送的數(shù)據(jù)結(jié)構(gòu)如下所示:
包頭總包數(shù)當前包數(shù)命令字數(shù)據(jù)段CRC校驗包尾
設(shè)計的通信包數(shù)據(jù)結(jié)構(gòu)如表1所列,每一包數(shù)據(jù)為1041個字節(jié),其中包頭2字節(jié),包尾2字節(jié),CRC校驗值4字節(jié),總包數(shù)和當前包數(shù)各4個字節(jié),數(shù)據(jù)段為1024字節(jié),不夠1024字節(jié)的要在數(shù)據(jù)段補齊。
表1 通信包的數(shù)據(jù)結(jié)構(gòu)
遠程監(jiān)控終端向上位機發(fā)送的應(yīng)答數(shù)據(jù)包結(jié)構(gòu)如下所示:
包頭當前包數(shù)是否正確接收標志CRC校驗包尾
其中包頭、當前包數(shù)、CRC校驗、包尾的具體形式與表1相同。是否正確接收標志:0表示接收失敗,1表示接收成功。
2.4系統(tǒng)應(yīng)用程序設(shè)計
應(yīng)用程序的起始地址為0x 8005 000,共118 KB存儲空間。應(yīng)用程序有兩個主要任務(wù):一是進行日常的工作任務(wù);二是時刻檢測上位機是否有升級程序的要求。當收到上位機的升級要求后,應(yīng)用程序首先進行軟件復(fù)位,這樣程序重新從0x 8000 000處開始執(zhí)行IAP升級程序。
由于遠程監(jiān)控終端應(yīng)用程序執(zhí)行的任務(wù)可能比較復(fù)雜,涉及很多重要數(shù)據(jù)和參數(shù),并且這些數(shù)據(jù)和參數(shù)在升級后的程序運行過程中仍要繼續(xù)使用,因此在程序升級前要將這些重要數(shù)據(jù)和參數(shù)分別存放到外部FLASH和EEPROM中[6],以保證程序更新后系統(tǒng)仍能正常運行。應(yīng)用程序設(shè)計中還必須要注意,由于系統(tǒng)采用錯誤重傳機制,數(shù)據(jù)塊越大,出現(xiàn)錯誤的機率就越大。根據(jù)實際應(yīng)用經(jīng)驗,建議采用小數(shù)據(jù)塊傳輸,不僅可以降低誤碼率,而且還可以提供傳輸效率[1]。
為了保證本文設(shè)計的遠程升級軟件的準確、可靠,進行了大量的測試,圖5為上位機向終端發(fā)送升級程序數(shù)據(jù)的過程。
圖5 上位機向終端發(fā)送升級程序數(shù)據(jù)界面
表2為測試結(jié)果。從表中可以看出,在升級94 KB代碼容量數(shù)據(jù)時,出現(xiàn)了一次升級失敗。這是因為在升級過程中,網(wǎng)絡(luò)信號較差且升級的代碼容量較大造成的。除去這一次升級失敗,其他測試都是成功的,這也證明了本升級程序系統(tǒng)的準確性、可靠性。
表2 測試結(jié)果
通過大量的實驗測試及長時間的實際應(yīng)用表明,本文運用IAP技術(shù)和芯片內(nèi)部FLASH讀寫技術(shù),設(shè)計的遠程升級軟件具有較高的成功率和較快的升級速度,對相關(guān)類似系統(tǒng)設(shè)計具有一定的參考價值。
[1] 楊照巖.ARM和GPRS相配合的軟件無線升級系統(tǒng)[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和網(wǎng)口的ARM Cortex-M3固件升級技術(shù)[J].單片機與嵌入式系統(tǒng)應(yīng)用,2014,14(12):11-13.
[5] 姜曉梅,李祥和,任朝榮,等.基于ARM的IAP在線及遠程升級技術(shù)[J].計算機應(yīng)用,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)