• 87
随着4G 网络的普及,使野外实时监测设备得以方便的实现,但是安装野外的设备存在着两个问题:(1)设备一般安装的比较偏远;(2)设备一般成分布式排布,每台设备间相距比较远;这样使设备的系统升级极不方便。文章提出了通过4G 网络实现以STM32为微控制器的设备的远程系统升级方案。从而实现远程对野外设备的系统升级,大大的提高了生产效率,并且可以及时对设备
运行过程中发现的bug 进行修复。
小奈何在铁轨断轨监测,水源水质监测,输油管道结构健康监测等监测系统中,都需要在野外安装设备,并且存在仪器多,分布广等现象,同时个别监测系统,还会存在着分布式设备之间彼此需要协调交互工作。当出现各种原因,需要对仪器设备固件进行升级时,需要工作人员到现场进行升级,将会严重影响工作
管理论文效率,并且需要消耗大量的人力物力。本文提出的基于4G 网络和STM32的远程升级方案,能有效的解决人员到现场升级设备,并且能够更快更便捷的实现系统的升级,极大的减少了生产成本。
1  远程升级系统的硬件组成
远程升级仪器是基于STM32微控制器,整个仪器的硬件组成包括太阳能供电,电源管理系统,GPRS_4G 通信部分,EEPROM 外部存储器和其他用户功能模块。图1
所示为升级功能部分的的主要硬件组成。
图1 升级功能模块硬件框图
STM32通过串口和GPRS_4G 模块进行连接。GPRS_4G 通信模块可以实现串口到网络的双向数据透明传输,可以通过此模块实现发送数据到网络上指定的服务器。模块也可以接收来自服务器的数据,并将信息通过串口发送至STM32,如图2所示。
天府之国的由来
EEPROM(Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。做为外部的一个独立存储器,可以在程序升级前后保存系统配置数据,保证系统升级前后数据的一致性。同时也可以为升级提供一些辅助标志功能。
2  IAP实现原理
员工奖罚制度
2.1  程序组成设计
IAP 即应用编程,本系统中设计两个程序:Bootloader (引导加载程序)程
杭州浙达精益机电技术股份有限公司  郑俊翔  陈朱峰  朱  伟
4G 网络和STM32的远程系统升级
表1 STM32启动方式选择
BOOT0BOOT1启动模式说明0X 从Flash启动正常工作模式10从系统存储器启动串口下载程序模式1
1
内置SRAM启动
用于程序调试
• 88
序和APP (应用程序)程序。Bootloader 程序不执行应用的用户功能操作,只负责接收服务器发送过
来的系统升级的数据,并跳转到对应的APP 程序。APP 程序为用户功能代码,执行用户功能操作,同时可以接收服务器的升级请求,跳转到Bootloader 程序进行升级操作。
2.2  STM32的启动方式
STM32有三种启动模式,用户可以通过设置BOOT0和BOOT1的引脚电平状态,来选择复位后的启动模式,如表1
所示。
图3 FLASH存储器空间分配
STM32的FLASH 地址起始于0x08000000,
正常工作模式下,程序文件就从此地址开始写入。那么栈顶地址存放于0x8000000处,而“中断向量表”的起始地址为0x8000004处。当STM32遇到复位信号后,则从“中断向量表”处取出复位中断服务入口地址,继而执行复位中断服务程序,然后跳转__main 函数。2.3  STM32存储器空间的配置
本系统中使用STM32的FLASH 存储器大小是512K ,此空间被划分为三大块,分别用于运行Bootloader 程序,APP 程序1,APP 程序2,如图3所示。
远程升级系统,存在着一定的不确定性,如通信中断,仪器缺电等情况,这些情况都会导致系统升级失败,则在升级的过程中,不能把原来的APP 程序给擦除了。所以用户功能代码区分为APP 程序1和APP 程序2两个区域。其中一个区域用于当前运行的程序,另
外一个区域用于装载升级程序代码。
因为Bootloader 程序只负责升级部分代码,代码量相对APP 程序来说较小,这里分配的地址为0x 8000000至0x8012000区间,大小为72K 。而APP 程序为用户代码,需要实现各种实际应用中的功能,代码量相对较大。则把FLASH 剩余的空间对半分,分别分配给APP 程序1和APP 程序2,分配地址为0x8012000至0x8049000和0x8049000至0x8080000,各220K 大小的存储空间。
3  远程升级系统的程序设计
3.1  Bootloader程序设计
远程升级系统开机启动时,首先运行的是Bootloader 程序。程序首先在外部EEPROM 里面读取当前APP 程序运行的FLASH 存储器空间标志信息,再检测程序是否需要升级。当
图4 Bootloader 程序流程图
图2 4G网络传输示意图
• 89
检测到程序需要升级,则GPRS_4G 模块通过网络从服务器上接收升级固件,并存储到当前未被使用的APP 程序存储空间里。升级固件接收完毕后,跳转到升级固件存储的APP 程序存储空间,运行更新后的程序。如果没有检测到升级,则直接跳转到当前APP 程序存储器空间,运行当前APP 程序,流程图如图4所示。
当升级过程中出现异常,如升级过程中,网络通信出现中断,长时间接收不到升级固件,则直接跳回到当前APP 程序存储器空间,运行当前的APP
程序。
图5 APP程序流程图3.2  APP程序设计
APP 程序流程图如图5所示,首先复位存在外部EEPROM 里的升级请求信号,然后在EEPROM 里面置位当前使用
表2 通信协议表和示例
序号通信协议格式举例说明
1终端仪器号01此固件发送给1号仪器2FLASH区域01此固件写入FLASH的APP程序1区3预留00预留功能,方便以后扩展
4版本号00此程序版本号
5数据长度00 04数据长度,低位在前0x400=1024字节
6固件数据8D 1F
1024字节固件数据。
营业执照变更7索引号01 00表示当前第几包,从0开始,低位在前8CRC B5 29 AF 08
CRC32效验,保证数据的正确性
9
结束符
5A
结束符
FLASH 的标志位。这样下次再进入升级程序后,可以根据EE-PROM 里的FLASH 的使用标志信息,判断升级固件应存放那块APP 程序区域。最后进入用户程序,用户程序实时监听是否有升级请求,当有接收到升级请求信号后,跳转到Bootloader 程序。3.3  固件升级通信协议
分布式系统中,由于仪器众多,在进行固件升级时,需要遵循一定的通信协议,才能正确的进行升级。服务器发送的数据分9部分,如表2所示。
为了降低远程传输数据出现的误码率,把升级固件拆分成小包进行传输。包的长度可以根据实际使用的情况,在通信协议里进行设置,如在表2的例子,固件数据包的长度设置为1024个字节。索引号表示当前传输的数据包是第几包,当出现传输错误,CRC32效验不正确时,终端仪器会返回错误接收的
物竞天择适者生存
数据包的索引号,服务器根据索引号,重新发送此索引号的数据包。当终端仪器正确接收完当前包数据后,给服务器返回应答信号,直到固件升级完成。
结束语:本文着重讲述了基于4G 网络和STM32远程系统升级的硬件设计框架,IAP 的远程升级原理,系统的程序逻辑设计和固件升级的通信协议。在野外分布式监控系统中,该远程升级系统的运用,极大的提高了生产效率。此设计方案也可以运用到其他的一
些需要远程操作的应用场合。
作者简介:郑俊翔(1982—),男,浙江杭州人,工程师,主要从事新产品开发工作。