文献标识码:A
文章编号: 0258-7998(2015)05-0156-03
0 引言
长期以来,工程机械安全作业形式严峻,开发面向工程机械的车载监测终端可有效地监测工程机械的施工状态、预警故障等,为故障诊断提供方便[1]。然而,若车载监测终端软件出现故障或需要增加程序功能,技术人员需要到现场下载程序,这使车载监测终端的升级和维护受到了距离和环境的限制[2,3]。因此,需要建立一套行之有效的远程升级方案,提高车载监测终端的可维护性[4]。
本文以文献[5]中的工程机械车载测试终端为软件升级对象,将STC89LE516RD主控制器换成具有IAP(In Application Programming)功能的ATMEGA128单片机,提出一种基于LabVIEW、CDMA网络的工程机械车载监测终端的远程升级方案,实现稳定可靠、掉电可恢复的软件远程升级目的。此方法还可用于其他具有IAP功能的监测终端中[6-8], 具有广阔的应用前景。
1 远程升级系统总体结构
远程升级系统整体结构如图1所示,由应用程序升级平台、以太网及CDMA运营商无线通信网络和工程机械车载监测终端三部分组成。
应用程序升级平台由LabVIEW软件设计而成,主要实现读取并解析ATMEGA128单片机的HEX、BIN等格式的机器码文件,通过网络运营商获取Internet的IP地址,由用户选择指定的客户端IAP终端平台进行更新,或客户端平台主动请求更新,并根据制订的通信协议应用程序以网络数据包的形式传输到远程工程机械车载监测终端。运行于车载监测终端的BootLoader程序通过CDMA无线网络接收并解析应用程序升级平台发送的数据,经CRC校验码校验无误后,完成对应用程序Flash存储区域更新写入的操作。最后由BootLoader程序跳转到应用程序Flash存储区复位地址开始处运行更新后的应用程序。
2 电源电路设计
由于ATMEGA128单片机需要3.3 V电压供电,而其他外围芯片需要5 V电压供电,因此电源模块需提供3.3 V和5 V电压。电源模块的原理图如图2所示。
外部9 V直流变压器接入J1,通过5 V稳压芯片LM7805产生5 V电压,再经过电压转换芯片AS1117(5 V~
3.3 V的转换)的转换,产生3.3 V的稳压电源。图中二极管VD1起电源保护作用,防止外界电源反向时烧坏电路板;极性电容C101、C103、C203和无极性电容C102、C201、C202分别两两并联,对电源进行滤波,使输出电压更加稳定。
3 系统软件设计
3.1 升级平台软件设计
图3表示升级平台程序流程。升级平台首先完成对ATMEGA128单片机的HEX、BIN等格式的机器码文件的读取和解析;然后侦听端口上是否有终端接入,如果有,则按照通信协议规定的客户端一次性接收数据量大小,将文件分解成多个128 B小数据包,直到数据索引结束,最后一包的数据若不满128 B,按照实际的数据量大小封装,每个小数据包尾部加入CRC16校验值;最后,利用LabVIEW平台提供的以太网传输层TCP协议,将各个小数据包按照顺序依次发送到远程的工程机械车载监测终端。
3.2 车载监测终端程序远程升级设计
3.2.1 程序远程升级原理
ATmega128的Flash程序存储器分为两个区:应用代码区和Boot加载区。应用代码区是Flash用来存储应用代码的区域。由于对Flash ROM写操作SPM(Store Program Memory)指令在应用区执行时是无效的,应用区不能用来存储Boot代码。Boot加载区用来存储Boot加载软件, SPM指令只有在Boot加载区中执行时才能够完成对Flash ROM的写操作。ATmega128 中的Boot加载程序可以利用任何可用的数据接口和相关的协议来读取代码并且将其写入(编程)Flash ROM,或者从程序存储器中读取代码[9]。
3.2.2 车载监测终端程序远程升级
图4表示车载监测终端程序远程升级流程,主要包括CDMA网络的通信、协议解析和应用程序更新3个功能。
当串口接收中断发生时,ATmega128调用接收中断子程序读取新程序代码,并计算CRC16值,验证接收到的数据是否正确。只有确保接收到的数据完全正确,ATmega128才调用IAP子程序,将代码写入Flash程序存储器。其中IAP子程序详见文献[9]。为了提高数据通信可靠性,数据传输过程中,传输的有效数据位数为128 B,但IAP程序对Flash写操作时,一次只能写一页,即256 B的数据,因此在校验正确的情况下,需要两次传输过程才能完成一个完整页的数据传输,并执行应用程序区Flash页写入功能。如果写入出错,且超过5次,则向服务器返回出错命令;反之则向服务器发送正确指令。为了解决程序下载时终端断电造成的故障,在应用程序区段,用第一条语句跳转至Boot区段,读取写码操作开始标志位(此标志位被写入EEPROM 中),若该标志位被置位,则跳转至应用程序区段继续运行程序,否则继续守候在Boot区段直到升级完成[10]。
3.2.3 通信协议制定
为保证升级平台端进行效率高、可靠性强的数据通信,本文制定了双方通信的协议及规则。通信协议对数据格式、同步方式、传送速度、传送步骤、检错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。
表1为升级平台端命令格式,表2为监测终端命令格式。起始位和结束位用于标示数据串的起止范围;数据长度为除了起始位和结束位外的数据总字节;校验位采用CRC16校验。
根据升级平台端和监测终端的通信协议,建立如图5所示的通信握手过程。
车载监测终端监测是否有特定的电话号码拨入,如果匹配电话号码成功,则终端通过CDMA Modern拨号接入电信服务器获取IP,向升级平台发送终端就绪命令;升级平台获得当前终端的IP地址,采用TCP协议向终端下载程序代码,终端发送确认回执后,进行下一轮的数据交互,直到数据传输结束。两者之间的通信采用阻塞式通信,确保数据正确完整地下载到终端。中间引入超时机制,防止通信过程的死锁。
4 系统测试
在进行升级平台软件调试时,采用“网络调试助手”作为监测终端,进行数据交互测试。以HEX格式文件为例,运行升级平台测试程序,设置侦听端口号为“6341”,选择com.hex文件;打开“网络调试助手”,选择协议类型为“TCP客户端”,输入升级平台IP和侦听端口号,建立终端和升级平台的网络通信。图6表示LabVIEW分包发送数据的界面。
当终端接收到最后一包数据时,若数据出错,则向升级平台发送“通信出错”的代码,升级平台重新发送该数据包;若数据正确,则向升级平台发送“通信正确”的代码,升级平台断开与终端的连接。
在进行车载监测终端远程升级调试时,采用黑盒调试法。首先,利用Jtag开发器将Bootloader调试程序下载到开发板(Bootloader主程序如下所示);其次,运行“网络调试助手”,设置相应参数和终端建立以太网通信,并依次向TCP网络发送由升级平台调试得到的正确数据包。当最后一包数据传输完毕,开发板进入休眠状态,使用AVR studio读取开发板应用程序区的Flash数据,检验是否写入数据。通过原始数据包和Flash数据对比可看出,数据完全相同,终端已实现软件远程升级。
Bootloader调试程序:
void main(void)
{
unsigned char seviseip[]=
{"61.152.124.198"};
unsigned char seviseport[]={"6341"};
MCUCR|=0X02;//转移中断向量表至boot程序区
SystemInit();//初始化
OpenPort(3,1);//开串口
SREG=0X80;//打开全局中断
ATTCP(seviseip,seviseport);//连入TCP网络
pagewrite();//执行IAP功能的函数
}
5 结论
本文将ATMEGA128 IAP技术应用于工程机械车载监测终端软件远程升级,提高了车载监测终端的可维护性;采用LabVIEW Socket网络套接字构建了TCP服务器应用程序,程序具有对HEX、BIN等格式的机器码文件的解析和分包功能;规范了升级平台和工程机械车载监测终端之间阻塞式通信交互过程,采取了 IAP 软件升级过程的可靠性和掉电保护措施。
参考文献
[1] 金敏,罗恩泽,周翔.面向工程机械远程智能监控的无线通信协议[J].中国机械工程,2011,22(19):2316-2324.
[2] 成强,周月英,周庆民,等.程序可远程升级的数据采集终端的设计[J].河南大学学报:自然科学版,2010,40(4):353-356.
[3] 罗文,王莉娜,肖鲲.基于GPRS的嵌入式系统远程监控和升级[J].电子技术应用,2010,36(5):159-162.
[4] 朱伟斌,张涛,顾海涛,等.基于CDMA网络的嵌入式设备远程升级系统[J].电子技术应用,2014,40(2):135-138.
[5] 江小霞,林建辉,周永征.工程机械车载测试系统的研发[J].电子测量与仪器学报,2009,23(4):107-111.
[6] 李卫红,张凌云,陈天喜,等.基于IAP程序远程更新设计在车载乘客信息显示器中的应用[J].机车电传动,2012,5(2):79-81.
[7] 张双锣,郎沁争,肖铁军.供暖节能监控系统的无线远传协调器设计[J].计算机测量与控制,2012,20(5):1251-1254.
[8] 诸德宏,张介环.具有远程升级功能的小区电能监测系统[J].电子器件,2014,37(4):733-736.
[9] 陈惠滨,黄海.ATMega128 IAP技术在移动数据采集器中的应用[J].电子器件,2005,28(1):101-104.
[10] 田日才,王国鹏,梁学东.ATMEGA128单片机的软件远程升级[J].电子技术应用,2003,29(11):23-25.