引 言
随着科技的发展,低压电力载波抄表终端已广泛应用于电力的各个行业,为电力部门节省了人力物力资源并提高了效率。另一方面,电力载波抄表终端系统却需要大量的工程人员去现场维护。这是各相关企业和公司急需解决的问题,针对这一问题,提出了基于POP3的低压电力载波抄表终端的远程升级系统,该系统通过连接POP3升级服务器,下载新程序并进行Base 64解码,最后利用ARM7的IAP功能实现程序的实时更新,解决了终端系统程序现场维护的问题,真正意义上节省了人力物力资源。该系统已应用于低压电力载波抄表终端中,并取得了明显的成效。
1 系统工作原理
该系统主要有GPRS连接、POP3接收邮件、Base 64解码和IA P编程4部分组成。GPRS连接通过SIM300模块将低压电力载波抄表终端连接到远程升级服务器;然后,通过POP3协议将邮件服务器上的新程序下载到低压电力载波抄表终端上;之后,对下载的程序进行Base 64解码,最后通过LPC2214的IAP功能将解码后的程序写到LPC2214的FLASH中,完成远程升级的功能。系统框图如图1所示。
2 POP3协议和Base 64编码原理
2.1 POP3协议
POP3适用于C/S结构的脱机模型,是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议有三种状态:认可状态、处理状态和更新状态。当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态,在完成相应的操作后客户机发出Quit命令,则进入更新状态,更新之后重返认可状态。
2.2 Base 64编码原理
Base 64是一种很常见的编码规范,被设计用来将任意序列的8字节描述为一种不易被人直接识别的形式。它的作用是将二进制序列转换为人类可读的ASCII字符序列,常用在需用通过文本来传输二进制数据的协议中,如HTTP和SMTP等。
Base 64编码规则为对于待编码数据,以3个字节为单位,依次取6位,前两位补0形成8位编码,由于3×8=4×6,3个字节的输入会编码成4个字节的输出。如果剩下的字符不足3个字节,则用0填充,输出字符使用“=”,因此编码后输出的文本末尾可能会出现1个或2个“=”。因此,Base 64解码过程与编码过程正好相反。这里给出解码的关键程序示例:
3 LPC2214的IAP功能及FLASH Boot装载程序
LPC2214的FLASH存储器系统包含256 KBFLASH器件的17个扇区。FLASH存储器从地址0开始并向上增加。Boot装载程序控制复位后的初始化操作,并提供实现FLASH编程的方法。Boot装载器可启动对空片的编程、已编程器件的擦除和再编程以及在运行系统中由应用程序对FLASH存储器进行编程。
对于IAP来说,应当通过寄存器r0中的字指针指向存储器(RAM)包含的命令代码和参数,以调用IAP程序。IAP的命令结果返回到寄存器r1所指向的返回表。用户可通过传递寄存器r0和r1中的相同指针重用命令表来得到结果。参数表应当大到足够保存所有的结果,以防结果的数目大于参数的数目。参数和结果的数目根据IAP命令而有所不同。参数的最大数目为5,由“将RAM内容复制到FLASH”命令传递;结果的最大数目为2,由“扇区查空”命令返回。命令处理程序在接收到一个未定义的命令时发送状态代码IN-VALID_COMMAND。IAP程序是thumb代码,位于地址0x7FFFFFF0。
4 远程升级软件设计
首先,系统对SIM300模块进行初始化,然后连接远程升级服务器,接着通过POP3协议登录邮件服务器,并下载新程序,主ARM将下载的程序进行Base 64解码,最后通过IAP将解码后的程序写到ARM的FLASH中,以完成远程升级的目的。详细流程图如图2所示。由于远程升级需要低压电力载波抄表终端抄表主程序的配合,因此这里给出了远程升级相关的部分。在IAP写FLASH的过程中,需要注意FLASH存储器在写或擦除操作过程中不可被访问。执行FLASH写/擦除操作的IAP命令使用片内RAM顶端的32个字节空间。用户程序不应使用该空间。IAP擦除FLASH的部分源码如下:
5 结 语
针对各电力相关企业和公司需要大量的工程人员现场维护低压电力载波抄表终端的问题,提出基于POP3的远程升级系统,该系统可以通过GPRS连接到远程的升级服务器,下载最新的程序,并对齐进行Base64解码,最后利用IAP将其写于低压电力载波抄表终端中.实现低压电力载波抄表终端远程升级功能。该系统解决了工程人员必须现场维护的问题,为企业和公司节省了人力、物力资源,并提高了效率。