无线传感网络节点软件高效远程更新的技术研究
0 引 言
无线传感网络(Wireless Sensor Networks,WSN)是利用传感器获取被感知物理对象的信息,通过无线通信将获取的感知信息传送给远端的监控终端,并在通信中间环节或终端对数据进行压缩、融合、分析等处理的一种无线通信网络。WSN使用方便灵活,可以实现重大装备、交通运输等领域中的关键指标监测、安全预警等[1]。在无线传感网络中,节点负责感知、采集和处理感知对象的物理信息,是整个无线传感网络中最重要的一环,节点的软硬件研究是无线传感网络设计的重点。无线传感网络节点一般是被随机部署至恶劣环境中,不易取回。但节点的设计研究,尤其是软件部分,不可能是一步到位的,需根据使用者的需求及时的对节点软件进行更新[2]。传统的更新方法是取回节点,通过下载器对节点软件进行更新,该方法受设备、更新地点和操作人员的限制。目前较先进的更新技术是通过物理总线与无线设备协同作业将编译器生成的程序文件直接写入MCU的ROM中[3]。此方法只需节点与网关在应用层实现连接,无需对硬件做任何改动即可实现节点软件更新,但此方法存在可靠性低、传输效率不高等问题。针对此问题,本文基于MSP430F149单片机,设计了一种无线传感网络节点软件高效更新方法,本方法采取程序文件差异、可变格式传输比较等措施提高了数据传输效率,通过强制更新等措施提高了节点软件远程更新的可靠性。
1 系统概述
本无线传感网络由节点、网关、服务器、数据库、客户端等组成,其组成及结构如图1所示。
节点的主控制器(MCU)采用TI公司的MSP430F149单片机,MSP430F149单片机是一款超低功耗的16位单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式和大量的片内存储器。MSP430F149的具有60 KB的程序ROM(FLASH)和2 KB的RAM,能够完全满足系统程序驻留和用户程序存储的要求[3]。
MSP430F149的程序存储在FLASH中,其FLASH可在正常工作电压下擦写。因此只要对MSP430F149的FLASH的存储内容进行更新即可实现对节点软件的远程更新。本文为提高节点运行的可靠性,在FLASH中存储一个更新引导程序和两个应用程序。当某应用程序更新失败时,节点自动运行另一应用程序,从而保证节点的正常工作。
对节点软件进行远程更新时,拥有管理员权限的用户首先向程序开发人员索取欲更新程序文件,然后在客户端通过节点远程更新软件将程序数据按照预定协议更新至节点的内部FLASH。节点的更新引导程序与客户端进行程序数据交互,完成节点软件远程更新。
2 更新流程
2.1 程序数据格式
本文对MSP430F149的程序编译采用IAR公司提供的MSP430系列单片机的集成开发和调试环境IAR Embedded Workbench。其可生成txt格式程序文件,其样式如下:
“@”后的“3000”表示后面的程序数据从3 000地址后依次写入MSP430F149的FLASH,每一个“@”对应一个中断向量,“q”表示程序文件结束。只需将程序文件里的数据按地址写入FLASH的相应位置,即可实现节点软件的更新[4?5]。
2.2 节点软件更新流程
节点正常情况下运行的是应用程序。用户欲对节点软件进行远程更新时,选中节点后,用户首先选取相应的程序更新文件,然后点击节点软件远程更新按钮。节点在收到更新命令后进入更新引导程序,并向上位机索要程序数据。上位机软件收到该命令后判断并下发相应的数据,判断是否更新完成。具体更新过程分为以下七步:
(1)客户端发送节点远程更新命令。
(2)节点收到更新命令后将更新标志位置1,回复后程序指针PC指向复位向量。
(3)节点程序重新运行,检测更新标志位,跳转到更新程序后向客户端索要程序数据。
(4)客户端节点远程更新软件读取、处理并发送程序数据。
(5)节点解析程序数据,擦除相应的FLASH后写入新的程序数据并向客户端继续索要。
(6)客户端判断程序数据是否全部发送完毕,如果发送完毕,则发送节点软件更新完成指令,否则继续发送程序数据。
(7)节点判断是否为更新完成指令,如果是,则判断程序数据是否完整,并选择是否跳入新的应用程序;如果不是,则继续重复步骤(3)~(7)。
3 高效更新设计
程序数据在无线传输过程易受到电磁干扰,导致数据阻塞和丢失[1]。为提高传输效率,本文主要采用以下三种措施来提高节点软件远程更新的效率。
3.1 程序文件差异比较
一个小的程序文件可以从根本上减少远程更新时间、提高更新效率[6]。一般情况下对节点的软件进行维护更新时只是对部分功能进行更新,生成的新程序与节点正在运行的旧程序内容差异不大,没有必要对节点的程序进行完全更新。因此本文对节点软件进行远程更新时,首先对新旧程序文件进行差异比对,删除新旧程序文件中相同的内容,保留差异的内容,并重新计算差异内容在FLASH中存储的地址,从而生成数据量较少的程序文件
3.2 变格式传输
3.3 数据压缩
通过分析程序数据发现,程序数据可分为以下三类:自定义变量的初始化值、寄存器的地址及寄存器的设定值。对于自定义变量的初始化值,可以将其设定为需要的值以便于压缩,但是寄存器的地址及设定值则毫无规律可言,此时对其进行压缩可能导致越压越大的反效果。因此本文对于程序文件采用基于变长编码的无线传感器网络数据压缩方法对程序数据进行有选择性的压缩[7]。首先对程序数据进行试压缩,只有压缩成功显著的数据帧才对其进行压缩传输,并采用标识字节的某位对该帧程序数据是否进行了压缩进行标识。
经过改进后的更新效率提升见表1。
4 可靠性设计
无线传感网络工作环境复杂多变,影响无线通信质量的因素较多,节点软件远程更新的可靠性难以保证。因此本文对提高节点软件远程更新的可靠性进行了设计研究。
4.1 程序冗余存储
程序数据冗余存储是指在MSP430F149的FLASH中存储多个应用程序,由单片机的更新引导程序通过标志位判断执行哪个应用程序。对节点软件进行更新时,只对某个应用程序进行更新,一旦更新失败,更新引导程序自动修改标志位,执行冗余的应用程序,从而保证节点的正常工作。图3为单片机FLASH中程序存储图。
4.2 强制更新
由于
节点绝大部分时间是在运行应用程序,所以上位机给节点发送远程更新命令时,节点应在应用程序中响应。但是由于两个应用程序在无线传输过程中和使用过程中有可能受到强磁干扰等未知的干扰而导致程序遭到破坏,因此,本系统为了增加节点软件远程更新的可靠性,增加了强制更新功能:客户端设置无线通信模块的强制更新管脚为低电平,然后通过无线通信模块复位单片机,节点单片机在重启后首先检测强制更新管脚电平的高低状态,若该管脚为低电平,则不再判断标志位,自动进入更新函数对节点的应用程序进行更新,从而避免了标志位判断异常导致无法远程更新情况的出现。采取强制更新措施后,节点软件的可靠性提高了74%,即只要更新引导程序不被破坏,就可实现节点软件远程更新。
5 结 论
本文根据无线传感网络的特点及节点软件远程更新的需求,利用现有的无线传感网络设备,无需对节点硬件做任何改动,设计了一种无线传感网络节点软件高效远程更新方法,降低了无线传感节点软件的更新维护成本。目前,该方法已在电磁环境极为恶劣的京津高铁某段试用,经过近一年的现场实际应用结果表明:该更新方法效果显著,远程更新效率和可靠性高,降低了节点更新维护成本。该更新方法适用于对其他可自编程的嵌入式设备,具有很高的实用性和通用性。
注:本文通信作者为张志新。
参考文献
[1] 徐征,张华.无线传感网中的节点分组控制策略[J].传感器与微系统,2013,32(1):63?68.
[2] 朱飞龙,杨鸣.基于IAP功能单片机的远程更新系统设计[J].机电工程,2010,27(9):76?79.
[3] 于荣荣.钢轨应变实时监测节点的研究[D].大连:大连理工大学,2012.
[4] 陶维青,王付军.基于GPRS网络的MSP430单片机FLASH远程更新方法[J].电测与仪表,2007,44(7):33?36.
[5] 唐文,刘芳伶.MSP430系列单片机软件在线升级设计与实现[J].通信技术,2012,45(1):144?146.
[6] 徐洪全.嵌入式钢轨振动监测节点设计[D].大连:大连理工大学,2012.
[7] 大连理工大学.一种基于变长编码的无线传感器网络数据压缩方法:中国,201210461346.2[P].2012?11?15.
[8] 陈万里.基于无线传感器网络的监测系统研究[D].哈尔滨:哈尔滨工程大学,2010.
[9] 霍文文.无线传感器网络在线升级系统设计与实现[D].济南:山东大学,2012.
[10] 刘梁,李东旭.一种无线传感器软件非接触升级的方法[J].嵌入式技术,2010,37(3):45?47.