基于GPRS与IAP技术的监控系统远程升级软件设计

2016-09-15 07:02李富民周风余姜志飞
单片机与嵌入式系统应用 2016年8期
关键词:字节应用程序远程

李富民,周风余,姜志飞

(山东大学 控制科学与工程学院,济南 250061)



基于GPRS与IAP技术的监控系统远程升级软件设计

李富民,周风余,姜志飞

(山东大学 控制科学与工程学院,济南 250061)

基于GPRS无线网络通信技术和IAP(In Application Programming)技术,针对STM32L系列低功耗MCU,设计并实现了一种适用于远程监控系统的无线远程程序升级软件。大量实验及应用表明,该软件能够根据上位机的要求,对终端设备进行快速准确的程序更新,同时最大限度地保证了终端设备不间断运行,避免了传统终端设备需要人到现场进行升级程序的麻烦,有效降低了人工成本。

STM32L;IAP;无线网络;远程升级

引 言

由于人工监测存在成本高、效率低、数据的实时性和准确性较差等缺陷,基于无线网络的远程监控系统越来越广泛地被应用到城市燃气输配管线泄露监测、远程电网质量监控等过程中[1]。并且行业对远程监控终端系统的功能、性能及规模不断提出更高的要求,需要系统能够进行及时的维护和升级。但是管线监控终端系统分布范围广,并且大部分都安装在地下管道中,恶劣的环境及条件给监控终端系统维护和程序升级带来极大的不便。针对上述问题,本文对基于STM32L151VCT6微控制器的嵌入式监控终端远程在线升级软件进行了设计,大大提高了设备性能,降低了维护成本。

1 系统硬件设计

本文设计的远程监控终端硬件系统整体结构如图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 系统结构示意图

2 远程升级软件设计

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]。

3 实验结果

为了保证本文设计的远程升级软件的准确、可靠,进行了大量的测试,图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)

猜你喜欢
字节应用程序远程
让人胆寒的“远程杀手”:弹道导弹
远程工作狂综合征
No.8 字节跳动将推出独立出口电商APP
删除Win10中自带的应用程序
No.10 “字节跳动手机”要来了?
谷歌禁止加密货币应用程序
远程诈骗
简谈MC7字节码
人类进入“泽它时代”
三星电子将开设应用程序下载商店