通用分组无线服务技术GPRS(General Packet Radio Service)是一种移动数据业务,该技术能满足日常网络行为,具有广域覆盖、高速传输等优点。野外作业的数据采集嵌入式系统工作于偏远无人地区,通常这些采集系统基于GPRS无线网络来传输远程数据,但系统的维护和升级受到距离和环境的较大限制,不但成本高,而且周期长。
为实现远程监测和升级野外作业嵌入式系统,本文提出一种基于GPRS网络、以电子邮件为载体的嵌入式系统远程监控和升级方案,达到远程修改系统参数、索取系统自检报告、索取指定数据文件和升级系统主控程序等目的,实现嵌入式系统的远程监控与升级。
与目前大多数嵌入式系统远程监控和升级的途径相比,这种以电子邮件为载体、系统定时收发邮件的方法,实现了系统的多功能性与灵活性,同时较好地满足了野外作业嵌入式系统低功耗的要求。
1 系统结构及远程监控与升级
1.1 系统结构
嵌入式系统中的控制部分由ARM芯片(采用基于三星S3C2440-30的ARM9)和DSP芯片(采用TI公司的TMS320VC5509)[1]组成。ARM和GPRS Modem模块通过RS232串口进行连接,系统通过ARM利用GPRS Modem模块上网并访问网络邮箱,从而进行相应的操作。系统结构如图1所示。DSP作为主控单元完成数据采集和处理,ARM则负责数据后期处理和网络访问。
ARM是DSP的从设备,两者通过串口通信。其中,DSP端是多通道缓冲同步串行端口McBSP[2],而ARM端则是异步串口UART。为了在不增加外部复杂硬件的条件下实现两者通信,必须统一两端传输数据的格式[3]。
远程监控与升级过程中,为保证DSP和ARM之间数据传输的可靠性与稳定性,系统采用CRC8校验的数据传输方式:数据发送端发送每组数据时都附带发送此组数据的CRC校验码,数据接收端收到数据后重新计算数据的CRC校验码,对两端得到的CRC校验码相比较,相等则请求发送端发送下一组数据,不相等则请求重发本组数据。
1.2 系统远程监控和升级的总体流程
系统远程监控和升级的示意图及整体工作流程分别如图2、图3所示。系统进行远程监控和升级时,首先登录指定邮箱,分析后获取命令列表并记录各命令邮件的内容,然后对命令列表中的每1个命令进行分析,完成相应的任务,包括:修改系统参数、发送系统自检报告、发送指定数据文件和升级DSP程序。任务完成后系统自动返回报告邮件,告知本次操作的情况。整个系统基于GPRS网络,以电子邮件为载体,通过系统对邮件的读取和发送,达到远程监控和升级系统的目的。
2 系统的远程监控
系统的远程监控,是通过对系统中装有嵌入式操作系统WinCE[4]的ARM进行网络编程[5],基于GPRS无线网络实现其对电子邮件的读取与发送,其中涉及到了最常用的电子邮件收件协议POP3(Post Office Protocol 3)和发件协议SMTP[6](Simple Mail Transfer Protocol)。
2.1 系统远程监控原理
如表1所示,系统接收远程命令是基于对命令邮件的读取。命令邮件由两部分构成:主题命令和邮件内容。主题命令(即邮件的主题)为单个小写英文字母,不同的字母代表着系统将要完成的功能;邮件内容则包括了系统的新参数、需反馈的数据文件名、新的DSP程序等具体数据信息。
系统发送的邮件包括数据文件和报告文件,都以电子邮件附件的形式传送。数据文件反映系统采集的物理数据或自身的状态信息;报告文件则是对每次远程监控命令的回执,表明本次操作是否成功。
2.2 远程监控中邮件的读取和发送
系统远程监控时检查邮箱中邮件的流程如图4所示。所发送邮件的主题subject即代表了系统需要完成的任务,例如“修改系统参数”、“发送自检报告”、“索取指定文件”和“更新DSP程序”的邮件主题分别是单个小写字母a、b、c、d,而其余类型主题的邮件都被系统识别为无效邮件而滤掉。因此,系统在读取邮件时,先选出符合系统要求的邮件加入命令列表,再根据其代表的命令实现相应的功能。其中,最后一步删除邮件是为下次读邮件做准备,保证了系统再次读取的邮件都是最新的,避免了对已读邮件的重复操作,提高了可靠性。
系统以电子邮件附件的形式发送数据文件和报告文件。实验中发现,当发送的邮件小于2 KB时偶而会出现发送“伪成功”的情况,即程序显示邮件发送成功,但邮箱中却没有收到邮件。所以,在发送小于2 KB的邮件时,先用“空格”将其补足2 KB后再发送。实验证明,在进行邮件大小补足后,没有再出现过“伪成功”的现象。
3 系统的远程升级
系统基于GPRS网络,完成对邮箱中DSP新程序代码的读取,然后利用串口通信和Bootloader技术实现DSP程序的远程升级。系统内部的ARM和DSP采用串口通信,统一了两端收发数据的格式并建立了可靠的数据传输机制,保证了通信的稳定性。
3.1 远程升级系统DSP程序原理
系统采用TI公司的TMS320VC5509芯片作为主控单元。TMS320VC5509片内具有128 KB的高速静态RAM,片内ROM中固化了引导加载程序Bootloader(简称“DSP5509”),其Bootloader设置为外部SPI串行启动模式,外部储存媒介为 Flash。系统上电后,DSP5509在Bootloader引导下自动加载储存在片外Flash指定地址空间中的程序到片内的高速RAM中运行。
远程升级系统中,DSP程序是基于DSP5509的Bootloader技术[7]。将新的DSP5509程序按照一定的格式编码后发送到系统指定的邮箱中,系统利用GPRS模块访问此邮箱并读取出新程序,然后将新程序通过串口发送给DSP5509且保存到片外Flash的指定地址空间中。发送和保存结束后自动复位并重启DSP5509,在Bootloader的引导下DSP5509从外部Flash中加载并运行新程序,从而完成DSP5509程序的更新升级。
3.2 系统远程升级时的流程
在系统进行远程升级时,内部的DSP和ARM之间存在着较大数据量的传送,必须建立可靠的数据传输机制才能保证通信的稳定性。因此,系统将待发送的数据进行分割以分组形式传输,即将待发送的M字节数据分割成(x+1)组发送,前x组每次发送m=M/x个(M/x取整)字节,最后一组发送剩下的s=(M-m×x)个字节(若M/x为整数,则只需发送x组数据)。同时,DSP或ARM每次发送的数据格式均为3in1模式,即:(第1个字节表示本次发送数据的字节数+中间部分为m或者s字节的数据+最后1个字节为数据的CRC校验码),如图5所示。
远程升级DSP程序时,DSP端程序流程如图6所示。ARM将从邮箱中读取新程序代码传送给DSP,数据的传送采用基于CRC8校验的数据传输方式。其中,DSP先将ARM发送来的数据保存到Flash中(地址为70000h~7FFFFh的sector7中)。在确保DSP正确无误地接收完所有从ARM发送来的程序代码后,才将sector7中的数据转存到地址为00000h~0FFFFh的sector0中。sector0是DSP指定外部储存程序的地址空间,保证了远程升级的可靠性。如果传输过程中重传次数超过上限N,则说明此次传输可靠性降低,系统取消本次升级,保证系统的安全与稳定。
实验中,系统准确识别和读取了邮箱中的命令邮件,根据命令完成了相应任务;系统发送邮件时,成功地将数据文件和报告文件以电子邮件附件的形式发送到指定邮箱;测试远程升级功能时,准确无误地实现了系统的主控程序更新。整个远程监控和升级的过程稳定、可靠。
本系统基于GPRS网络、SMTP协议、POP3协议、串口通信和DSP的Bootloader等技术实现了嵌入式系统的远程监控与升级,既能远程修改系统的参数,又能获取系统自检报告、指定数据文件,并且实现主控程序的远程更新升级。整个系统在网络通信和串口通信的过程中都采用了严密的应答机制和数据校验规则,充分地保证了通信的可靠性和快速性,从而实现了系统的稳定性。实验证明,该系统在保证稳定性和可靠性的同时,降低了设计成本,缩短了维护周期,并且具有良好的扩展性。
参考文献
[1] Texas Instruments Incorporated著.TMS320VC55x系列DSP的CPU与外设[M].北京:清华大学出版社,2005.
[2] Texas Instruments, Incorporated. TMS320V5501/5502/5503/5507/5509/5510 DSP(McBSP) reference guide[S]. 2004.
[3] 张坤,张冠勇,王树勋.McBSP在DSP与PC机通信中的研究与设计[J].电子设计应用,2003,2(7):28-30.
[4] 何宗键.Windows CE嵌入式系统[M].北京:北京航空航天大学出版社,2006.
[5] 周立功.ARM&WinCE实验与实践——基于S3C2410[M]. 北京:北京航空航天大学出版社,2007.
[6] 付祝财,杨莘元,王阳.电子邮件SMTP/POP3收发协议的研究与实现[J].信息技术,2004,28(8):57-59.
[7] 徐胜,管庆.TMS320C5000的Bootloader技术[J].电子产品世界,2003,10(03A):41-44.