[摘 要] 鉴于智能终端的系统软件远程升级和维护困难的问题,提出了一种基于LPC2114和GPRS的远程系统软件升级的设计方案。介绍了LPC2114的主要性能和特点,片上Flash的构成及IAP编程原理,GPRS数据传输的通信协议,并系统地阐述了IAP技术在远程配变监控终端上的应用与实现。实践证明该方案较好地解决了终端软件远程升级和维护困难的问题,缩短了终端软件系统的开发周期。最后对远程IAP升级方案的可靠性进行了探讨。
关键词 LPC2114 远程IAP GPRS 配变监控终端
1 引言
配变监控终端是安装在配电变压器一次侧,用于全方位监控用电状况的智能化设备,在目前全国电力缺乏的情况下,起到了削峰填谷,提高电网运行效率的作用,尤其适合于对用电大户的用电监控。
市场的需求和应用技术的成熟是相辅相成的,客户总希望尽快用到技术先进和功能完善的产品,而从新技术到成熟产品有一段过程,过程的周期很大程度上决定了产品的市场前景,通常是一边开拓市场一边完善技术。要做出好的产品则必须与客户形成互动的关系,利用客户的反馈信息对产品不断完善,另外产品长时间使用后,终端程序设计上的缺陷也就逐渐显现,这就要求对终端系统程序进行升级。如果对于几百个终端进行现场ISP升级,既费时费力,又延误了开拓市场的机遇,降低了客户对产品的信誉度。
在Internet飞速发展的今天,将终端接入到Internet解决上述问题是可靠的、现实的方案。本设计方案应用于远程配电监控终端,采用高性能Philips ARM I,PC2114,结合IAP编程技术和GPRS技术实现终端系统程序的远程升级。
2 LPC2114芯片简介
2.1 功能简介
LPC2114基于一个支持实时仿真和跟踪的16/32位ARM7TDMI—S CPU,并带有128KB嵌入的高速Flash存储器和16KBRAM。对于内嵌Flash存储器支持JTAG、ISP、IAP等多种编程方式。
2114具有非常小的64脚封装、极低的功耗、多个32位定时器、4路10位ADC、PWM输出、46个GPIO以及多达9个外部中断以及内置了宽范围的串行通信接口,使它们特别适用于工业控制。因为用电监控终端对硬件资源要求高,软件功能复杂,实时性强,所以采用LPC2114来设计可以提高产品的性价比。
2.2 存储系统
LPC2114存储系统包含Flash存储器和RAM存储器,Flash存储器主要用来存放程序代码,RAM则主要于程序运行期间的堆栈安排和变量空间,LPC2114存储系统的地址分配如表1所示。
Boot Block占用第15扇区即Boot扇区,它位于Flash存储器的顶部,该扇区的存储空间专用来存放Boot装载程序,控制复位后的初始化操作,并提供Flash的编程方法(代码)。Boot装载器可启动对空白片的编程、已编程器件的擦除和再编程以及在运行的系统中由应用程序对Flash存储器进行编程[2]。
2.3 Flash存储系统的编程
LPC21l 4支持多种方式对Flash进行编程,用来写入用户代码或数据。第一种是通过内置的串行JTAG接口;第二种是通过UARTO进行在系统编程(ISP);第三种是通过在应用编程(IAP)实现。下面简单介绍IAP的编程原理。


IAP(In-Application Programming)是应用在Flash程序存储器的一种编程模式。即在应用程序控制下,对程序某段存储空间进行读取、擦除、写入操作。与ISP操作非常相似,具有在线编程功能。且克服了ISP不足之处,它可以在应用程序正常运行的情况下对另外一段程序Flash进行读写操作,甚至可以控制对某段、某页、甚至某个字节的读写操作。这为数据存储和固件的现场升级带来了极大的灵活性。
3 IAP功能的硬件设计
由以上分析可知,使用IAP对Flash存储器进行编程是合适的方案。下面介绍一种基于GPRS的远程IAP系统方案,系统框图如图1所示。
AT45DB041B为4MB串行Flash存储器,兼有ROM的掉电数据保存和RAM的读写速度,最快支持20MHz的时钟频率,擦写次数达10000次,内配置了两个264BSRAM缓冲器,使得对主存储体的编程可以连续进行,省去编程等待时间;AT45DB041B采用CASON-8封装,支持2.5~3.6V低电压,操作功耗低,支持模式0和3的SPI总线接口,与MCU接口简单,稳定可靠。非常适用于数字语音、图像、程序代码和数据的存储应用中。
GPRS模块使用Siemens公司生产的MC35i,双频GPRS/GSM模块(EGSM900/1800MHz或EGSM900/1900MHz),内置TCP/IP,与标准AT指令完全兼容;其设计开发符合ETSI GSM Phase2+标准。
4 IAP功能的软件设计
4.1 IAP编程接口
LPC2114的IAP程序位于Boot扇区,复位后整个Boot扇区被映射到存储地址0x7FFFE000~0x7FFFFFFF处,而IAP的入口地址为0x7FFFFFF0,程序为Thumb代码。IAP编程命令使用RAM的最高端32B,所以应用程序应保留这部分RAM。在使用IAP擦除/编程操作过程中,片内Flash存储器不可访问。当用户应用程序运行时,用户Flash区域的中断向量有效,所以在调用Flash擦除/写IAP之前,用户应当禁止中断或确保用户中断向量在RAM中有效和中断处理程序位于RAM中。IAP代码不使用或禁止中断。
4.2 IAP编程C语言实现
对于在应用编程,LPC2114是通过寄存器RO中的字指针指向RAM存储单元包含的命令代码和参数来调用IAP程序。IAP命令的结果返回到寄存器R1所指向的RAM空间。
LPC2114的IAP调用可使用如下C语言代码调用:
(1)定义IAP程序入口地址。 # define IAP_ LOCATION 0x7FFFFFF1 (2)定义数据结构来传递IAP命令表和结果给IAP程序。 unsigned long Command[5];//输入参数最多为5个 unsigned long Result[2];//输出参数最多为2个
(3)定义函数类型指针,函数包括两个参数,无返回值。 typedef void (*IAP) (unsigned int[ ],unsigned int[ ]); IAP iap_entry;//定义函数指针
(4)设置函数指针。 iap_entry = (IAP)IAp_ LOCATION;
(5)使用下面的语句来调用IAP。 iap_entry (command, result);
本系统是基于LPC2114工程模板上进行移植,在ASD1.2嵌入式软件开发平台上用C语言直接调用IAP程序代码实现IAP编程,IAP的命令码、状态码和命令详解以及IAP功能的详细应用见文献[2]。
5 LPC2114的IAP远程升级在用电现场监控终端的应用
终端软件系统的设计包括用户引导程序设计(与Boot装载程序有区别,前者由用户设计,后者由芯片生产商设计并固化)和应用程序的设计。它们在LPC2114中的入口地址不同,终端正常复位后,则首先执行用户引导程序,由用户引导程序决定是否启动IAP升级程序;应用程序完成终端的各种功能,包括新版本应用程序升级包的下载。
5.1 终端用户引导程序设计
终端用户引导程序是基于文件系统的思想来设计的,用户引导程序设计成单独的程序,装载于LPC2114的Flash扇区起始位置处,终端重新启动时,LPC2114总是从0地址开始读取指令并执行,将IAP升级代码安排到用户引导部分,实验证明这种安排是合理的。如果采用应用程序调用的方式执行IAP命令编程Flash,当Flash编程遇到失败时,整个系统就完全崩溃,应用程序代码被破坏,再无能力远程更新。采用本文的升级方式可完全避免这种情况的出现,用户引导程序出厂后固化,而外围存储器AT45DB041B中始终保存一份最新的应用程序代码备份,引导程序有能力多次编程Flash扇区,确保应用程序代码的完整性,增加了升级的可靠性。
终端用户引导程序运行执行后,首先检查应用程序升级标志和版本号,当升级标志被置位且出现新版本号时,MCU通过SPI接口从AT45DB041B中读取应用程序升级代码,然后调用IAP命令执行Flash编程,实现对应用程序的升级,当升级任务完成后,清除升级标志和更新应用程序版本,最后转移到应用程序入口并执行应用程序代码,引导过程流程图如图2所示。
5.2 终端应用程序设计
终端应用程序负责完成终端的各项功能,其中包括接收前置机的远程升级命令。终端接收到前置机的远程升级命令后,应用程序将升级包按照帧的方式通过GPRS Modem从前置机下载到终端,并保存到终端的AT45DB041B存储器,下载成功后置位升级标志和记录升级包版本号以备用户引导程序升级。

在升级包的下载过程中可看成是数据传输过程,应用程序可同步完成终端的其他各种功能,不影响终端的正常运行。应用程序升级包下载成功后,终端进行必要的现场保存并主动复位,从而执行用户引导程序升级的最后一步——Flash编程。另外也可以在终端里配置升级时间,避开终端任务重负荷阶段,使得升级过程对终端正常工作影响降低到最低程度。应用程序升级包的下载流程如图3所示。

5.3 通信协议的设计
GPRS与Internet连接建立后,进人数据透明传输阶段。本系统在完善的TCP/IP机制基础上设计用户应用层协议。为实现对系统某个终端的系统软件升级,前置机将要升级的程序代码转化为写终端升级代码帧,接入Internet到GPRS网络,透明传输下载到目标终端[8]。参照通信规约,自定义了前置机升级请求帧、升级代码数据帧和终端回应帧,帧格式如表2所示。
在通信协议的帧格式中,三种数据帧的前五项相同,起始字符表示帧的开始,固定用68H表示;终端逻辑地址在通信时用来唯一识别一个通信的最终发起端和接收端,它包括地市区码和终端地址码两部分;主站地址在通信时用来唯一识别通信的主站端对象;控制码表示要求执行的操作,8AH表示升级代码下载操作;数据长度则表示此项直到校验符的前项的所有数据字节数;厂商编号是与本终端匹配前置机的唯一编号;权限等级和密码应用于前置机升级请求帧和升级代码数据帧中,权限和密码保护机制保证升级帧的可靠性;在升级请求帧中还包括升级软件版本号,总长度和总校验和,是升级文件的相关信息;在升级代码数据帧中还包括当前的帧序号和本帧的数据内容,数据长度固定为792B,不足补OOH;在终端回应帧中给出错误信息和下一帧序号,以便前置机的后续传输处理;检验码CS和帧尾是三种共同的部分,校验码是帧头与校验码之间字节累加和,帧尾固定用16H表示。
6 远程IAP应用的可靠性探讨
终端应用程序的升级过程不免要受到环境的干扰,如终端掉电、异常的终端复位、网络通信阻塞等故障,都会导致终端远程升级包下载或者IAP编程的失败,因此必须提供一套可靠的软硬件机制来保证终端IAP过程的正常工作。本系统中采取的措施[7]如下。
(1)终端掉电及异常复位处理 由于终端的停电及电网波动等干扰引起的终端复位都将中止终端的升级过程,导致升级失败。本系统采用下载和IAP过程完全分离的升级方式,IAP部分位于用户引导程序部分,不被擦除,AT45DB041B中总是备份最新版本终端应用程序,所以任何阶段操作失败都能保证终端的正常工作。另外,在终端配备蓄电池和充电电路,在终端主电源来电时对蓄电池充电,使得终端掉电时也可正常运行,远程IAP过程更为可靠。
(2)远程通信的误码处理数据传输过程产生的误码。通用的、有效的解决办法就是用CRC循环冗余效验和重传机制。数据校验码校验正确后存入AT45DB041B,错误时返回错误编码发和帧序号请求重发,直到检测到结束帧。结束帧数据长度不够,用00填充,不影响校验码。
(3)网络阻塞、故障处理 由于地形和环境因素的影响,GPRS网络在远程IAP的通信过程中可能出现阻塞或断开的情况,这时终端和前置机对无回应帧采用延时重发的机制,连续五次不成功则断开GPRS网并重新连接,终端保存升级的下载断点信息,以待网络恢复后继传数据。
7 结束语
该设计方案基本解决了本系统的远程代码升级的困难,提高了系统软件维护的方便性,加快了新产品的上市时间,也为用户提供了更安全、快捷的服务,提高了产品抢占市场的竞争力。用GPRS网络为传输通道,对接入Internet困难的边远地区的现场用电监控终端的远程维护提出了一种全新的、可靠的设计方案。
|