具有双模固件升级的水文遥测终端机应用

2020-01-07 11:46
治淮 2019年12期
关键词:终端机中心站固件

郭 涛

水文遥测终端机是水文水利各类监测站中必不可少的设备,随着社会的发展和进步,各种水文水利遥测要素不断更新,对水文遥测终端机的性能指标要求也不断提高。水文监测站点一般无人值守,实现远程固件升级及性能提升已成为现代信息化建设必不可少的功能,为水文工作者带来极大的便捷,同时对水文遥测终端机的发展进步具有重要意义。

一、概述

水文遥测终端机是一种应用于水文监测的设备,主要对降雨量、水位、墒情等要素进行采集,将采集数据转发至服务器平台。该设备一般应用于野外且无人值守,采用太阳能加电池供电,分布范围广,站点繁多,数据传输采用GPRS 通信方式。根据该设备的应用特点,从侧面反映出设备维护和固件升级的繁琐性,也给工作人员带来庞大的工作量。

水文遥测终端机是一种新兴的物联网应用产品,目前的水文遥测终端机形态各异,功能强大,但是针对水文遥测终端机的固件升级往往只停留在本地现场操作。随着国家对水文遥测终端机的标准化,产品的性能不断完善,功能不断丰富,在原有设备上通过远程升级固件成为必备的功能。

本文所述的具有双模固件升级的水文遥测终端机,在基于《水文监测数据通信规约》(SL651-2014)的基础上实现远程升级固件及本地升级固件的双模式固件升级,同时支持本地固件存储及恢复,避免了升级失败带来的产品不能使用的问题,大大提高了水文遥测终端机实用价值。

二、技术原理

1.BootLoader 的固件升级技术

水文遥测终端机的程序固件由两部分组成:一是BootLoader 引导程序,在MCU 上电或复位后率先执行;二是用户程序,是设备正常工作时的运行程序,也是需要更新升级的固件。

BootLoader 是一段引导程序,是双模固件升级的核心程序,当MCU 上电或复位后执行该段引导程序,判断是否有新固件升级。如果不需要升级,程序指针直接跳转至用户程序的起始位置,开始执行用户程序;如果需要更新程序,BootLoader 引导程序会将用户程序单元擦除,通过uart 或SPI 串行接口接收新的用户程序,写入MCU指定的用户程序单元。用户程序以行为单位,每行程序指令均含有校验,确保了写入程序代码的正确性。

BootLoader 引导程序一般存放于MCU 的程序空间的前端,从程序空间的0x400 开始,空间大小为0xC00。BootLoader 引导程序比较小,本文所述的双模固件升级水文遥测终端机充分利用了引导程序设计了Uart 和SPI两种Boot 方式,Uart 方式用于本地固件升级,SPI 用于远程固件升级。用户程序从0x1000 开始,用于存放用户正常运行的代码。官方示例程序空间分配见图1。

2.基于水文监测数据通信规约的固件升级扩展

水文监测数据传输的通信协议应采用《水文监测数据通信规约》(SL651-2014)规定的上行报文帧结构框架和下行报文帧结构框架。无论传输的字符采用何种编码,均应满足此帧结构框架规定。传输顺序为高位字节在前,低位字节在后。数据传输结构如图2。

图1 官方示例程序空间分配图

固件升级过程采用M2 发送方式,由中心站主动发起申请,再由遥测站响应申请固件内容,直至固件接收完毕后执行升级。

遥测终端固件升级,功能码为EAH。由中心站先向遥测终端发出固件升级申请,再由遥测终端依次向中心站申请固件内容。固件接收完毕后遥测终端自动复位,执行新固件。传输固件过程中,需水文遥测终端常在线,确保链路上数据的正常传输。水文遥测终端将固件数据按照行为单位存储于存储芯片中,GPRS 模块切换为透传模式便于接收数据。遥测终端也可主动申请固件升级,再由中心站向遥测终端机发出固件申请,确保了遥测终端机对自身固件更新的实时性。

3.固件文件的解析

PIC 单片机嵌入式HEX 固件是遵循 Intel HEX 文件格式的 ASCII 文本文件。HEX 由任意数量的十六进制记录组成。每个记录包含5 个域,按以下格式排列:Start Code、Byte count、Address、Record type、Data、Checksum。

HEX 文件以行为单位。每行以字符 ‘:’ (0x3a)开头,以回车换行符0x0d, 0x0a 为结束。每行开始和结束之间的所有内容,都是以字符形式表现的。例如数据如果是 0x1A ,那么转换到HEX 格式的行里面就是0x31 0x41。如果数据是16bit 的,例如地址,则先显示高位,后显示底位。例如 0x1234,转换成HEX 格式文件后变成 0x31 0x32 0x33 0x34,显示出来以后就是1234。将数据部分内容每2个字符看作一个HEX 数据。

图2 数据传输结构图

例如:“:020000040000FA”把它转换为十六进制为 0x02 0x00 0x00 0x04 0x00 0x00 0xFA。

三、实现方法

1.水文遥测终端机硬件的设计

本文所述水文遥测终端机的硬件平台是基于Microchip 的PIC24FJ 系列MCU,该硬件平台性能稳定可靠,具有良好的工业特性。存储芯片采用64Mbit 大小的Flash 存储器,用于存储最新的固件,存储芯片使用SPI 接口与MCU 连接。无线数据传输采用SIMcom 的GPRS 模 块,采 用Uart 串口与MCU 连接,RS232 接口通过Uart串口与MCU 连接,用于本地固件升级。

2.BootLoader 引导程序的设计

首先,建立工程项目,设置.gld配置文件为“program (xr) : ORIGIN = 0x400, LENGTH = 0xC00”分配Boot-Loader 引导程序的程序空间。

编辑Uart 和SPI 串行通信驱动、Flash 芯片的读写驱动以及Boot 驱动。

然后进行Boot 逻辑构建,当水文遥测终端机上电或复位后,先MCU通过串口发送“>”,如果串口无任何回复,则进入SPI 读取Flash 内容判断是否有新固件存在需要更新。若都无需要更新固件,则利用“(*((void(*)(void))APP_START))();”进入用户程序进行正常工作。

3.本地固件升级的设计

将RS232 通信线连接电脑和水文遥测终端机,给终端机重新上电,电脑串口助手会收到终端机发送的“>”字符,电脑给设备发送回车字符,等待设备返回“Uart>”。

将准备好的用户“APP.hex”程序固件利用串口助手,逐行发送水文遥测终端机,每行发送成功后均会回复“Y”字符,如果失败则会发送“X”字符。

最后更新完毕后,回复“Done”,水文遥测终端机会自动跳转执行新固件。

4.远程固件升级的设计

根据水文遥测终端机应用的特殊性,该设备在工作时的数据传输采用GPRS 通信,遥测终端机会定时向中心站询问固件更新申请,如果中心站需要更新固件回复Hex 固件行数,如果不需要更新固件则回复Hex固件行数为0。

当需要更新固件时,中心站会将新固件按内容分包,水文遥测终端会根据《水文监测数据通信规约》的固件升级扩展应用,进行逐包询要每个固件包,然后下载至Flash 存储芯片内。每包固件包均含有包号及CRC 校验,确保了Hex 固件的完整性和正确性。

完成固件下载后,水文遥测终端机,在Flash 芯片内放置更新固件标志,利用软件指令“__asm__ volatile ("RESET");”将设备复位。

复位后的MCU 执行BootLoader引导程序,在无串口更新固件的情况下,MCU 利用SPI 通信提取Flash 内的更新固件标志,确定需要更新固件后,逐行提取新固件并执行。最后更新完毕后,水文遥测终端机会自动跳转执行新固件。

5.固件存储的设计

水文遥测终端机会在第一次使用时利用RS232 向其Flash 的固定存储位置置入固定的用户程序。当本地固件升级和远程固件升级失败后,设备可提取该用户程序进行固件恢复,确保了设备工作的可靠性。

四、结语

双模升级固件的水文遥测终端机设计方案稳定可靠,现场使用效果良好,工作运行稳定。双模升级固件的应用为水文遥测终端机的性能提升了保障,为水文工作者大大节省了工作量。该固件的应用也是工业物联网应用的体现,在无人值守的野外环境下,可稳定可靠地实现自更新固件。总之,具有双模升级固件的水文遥测终端机还在不断改进,随着科技的进步,防汛理念的创新,该技术必将作为新技术变革得到广泛应用■

猜你喜欢
终端机中心站固件
更正
基于CAN总线的飞机电气附件静态测试系统的设计与开发
在全市率先实现村级就业社保便民服务小型终端机全覆盖
一带一路
计算机网络电话通信系统终端机的研制
铁路集装箱中心站经营产品分析
基于固件的远程身份认证
谷歌公司推出计算机固件分析工具帮助用户阻止恶意软件入侵
英特尔发布免费固件引擎
提取ROM固件中的APP