APP下载

基于ZigBee的空中下载技术的分析及优化*

2016-08-18永,奚

电子器件 2016年3期
关键词:镜像文件任务调度镜像

王 永,奚 吉

(1.徐州工业职业技术学院信息与电气工程学院,江苏徐州221140;2.河海大学计算机及信息工程学院,江苏常州213002)

基于ZigBee的空中下载技术的分析及优化*

王永1*,奚吉2

(1.徐州工业职业技术学院信息与电气工程学院,江苏徐州221140;2.河海大学计算机及信息工程学院,江苏常州213002)

ZigBee联盟为OTA制定了标准,其更新簇为无线升级一个ZigBee设备的固件提供了一个标准机制。Zstack协议栈仅提供了镜像块请求方法,更新速度并不理想。在研究OTA实现过程的基础上,设计出了一种高效的镜像页请求方法,能够提高更新效率,并减少网络流量。

ZigBee;空中下载;页请求

ZigBee是一个分层协议标准,IEEE802.15.4管理底层的物理层和介质访问层;ZigBee规范负责管理中层的网络层、安全层和API;而用户则负责控制上层的应用层程序。软件在ZigBee节点中起着非常重要的作用,系统开发初期,往往需要对软件进行现场的调试修改、升级,而基于ZigBee标准的无线传感器节点又往往完全没有物理连线,而且在现场往往装配在不易手工连线的地方,这样就给软件的升级和调试修改带来极大的不便。在无线环境下,如何解决安装以后的软件升级和调试工作,是设备安装之前所必须考虑和完成的工作。在无线传感器网络中通过无线下载来实现软件升级是解决问题的方法所在。针对无线传感网络重编程技术的需求,ZigBee联盟在原有协议的框架上,提出了一种OTA规范,作为一个系统可选的功能模块。Zstack是TI公司提供的实现ZigBee协议的半开源协议栈,其根据ZigBee联盟制定的标准提供了OTA镜像块请求的实现函数及页请求定义。本文在研究OTA原理的基础上,添加页请求功能,实现点对多的无线更新。

1 OTA原理及其软硬件系统

1.1OTA原理

空中下载要完成的任务是修改节点上支持节点正常运行的系统程序。其基本原理是向无线节点发送程序镜像文件,然后由节点内部简短启动程序负责用镜像程序覆盖原有的系统程序。

通常,在整个空中下载的过程中起到作用的是3个概念上的组件:①命令执行器—责设备镜像的初始化以及镜像分发的控制,并在一个适当的时候激活传输好的镜像;②客户端程序—在终端节点上支持接受和激活到达的新的镜像;③服务器程序—为目标节点设备提供新的镜像程序。以上3种组件功能并不一定安装在相同的硬件平台上,因此,需要软件无线升级的节点必须至少支持客户端程序。

项目来源:江苏省自然基金项目(14KJB510034)

收稿日期:2015-06-26修改日期:2015-07-23

新的镜像通过无线传输,传送到目标节点上的未利用的存储空间,所以目标节点上的存储空间必须在满足存储现行程序的同时,还能够存放下与现行程序相似大小的新的镜像文件。

要实现OTA功能,至少需要两块ZigBee设备,分别是服务器与客户端。服务器只有一个,客户端可有多个。服务器通过串口与PC机连接,需要下载的镜像文件存放于PC机,命令执行器给服务器发命令及镜像文件。首先命令执行器控制服务器广播当前可用的镜像文件信息,客户端收到信息后进行对比,若有与自身相匹配的镜像,则向服务器请求数据。服务器收到请求后向命令执行器索取固定大小的块,再点对点传送给客户端。镜像传输完毕后,客户端进行校验,完成后发送终止信号。流程图如图1、图2所示。

图1、图2为镜像文件传输过程,也是本文主要研究的过程。在客户端校验镜像文件无误后,还需要命令执行器发送命令激活镜像。客户端收到命令后用代码镜像文件覆盖原有代码并重启,且仍然支持空中下载功能。

图1 服务器流程图

图2 客户端流程

1.2硬件系统

本文的OTA系统基于TI公司的ZigBee SoC芯片CC2530F256,内部集成了一个增强型8051单片机,拥有8 kbyte SRAM和256 kbyte内部FLASH存储器。对于OTA客户端,启动代码位于bank0的0x0000~0x0800地址区域,大小为2 kbyte。其余的254 kbyte的FLASH空间,用来存储当前固件和其他信息。值得注意的是,0x0888~0x088B区域存放了CRC校验信息,0x088C~0x0897区域存放了PREAMBLE,包括镜像大小、制造商ID、镜像类型和镜像版本号信息。另外,bank7最后的 14 kbyte空间(0x7C800~0x7FFFF)用作非易失性NV(None Volatile)变量区(12 kbyte)和特定信息保留区(2 kbyte)。用来存放新代码的FLASH可以采用片内和片外两种方式,片内即把256 kbyte的空间划分成相等的两块,新代码存放在后半块,片外即外接一块FLASH,新代码存放于外部FLASH。考虑到一般程序固件大小都超过128 kbyte和以后程序功能升级的扩展性,本文采用片外FLASH的方案。

1.3软件系统

空中下载程序组件是一个标准的ZigBee应用层程序,可以调用所有的ZigBee协议栈资源。也就是说程序镜像的空中下载过程中支持网络多跳传输和AES-128完全安全性等。目前在F8W的Z-Stack协议栈中,已经提供了部分空中下载函数,用户可调用API以实现和改进OTA。

无线下载过程中所依靠的启动代码就是在下载结束后负责将下载镜像覆盖于现行镜像的启动程序。也就是说这部分程序是在节点内部负责FLASH内部数据读/写和擦除,是在节点内部始终需要的代码,这段代码是不被覆盖的,也就是说在节点装配以后就一直保存在相应的存储空间内,它不像活动程序代码和下载镜像代码可以被修改和覆盖。这段启动代码必须是Reset矢量的目标,因此内部含有启动代码;有FLASH读/写和擦除功能;能够检验下载镜像的完整性,以保证源镜像程序不是破损的;能够在运用下载镜像改写覆盖过程中自动从中断中恢复,并能检验升级后软件的有效性,如果程序正确,则继续运行新程序,如果仍然存在问题则从镜像读取程序修改。

Z-stack运行在一个OSAL操作系统上,OSAL是一种基于任务调度机制的操作系统。它是通过对任务的事件触发来实现任务调度的。每个任务都包含若干个事件,每个事件都对应一个事件号。当一个事件产生时,对应任务的Event就被设置为相应的事件号,这样事件调度就会调用相应的任务处理程序。OSAL中的任务可以通过任务API来添加到系统中,这样就可以实现多任务机制。OSAL任务调度流程如图3所示。空中下载就是这个系统下的一个任务调度。

图3 OSAL任务调度流程

2 OTA的镜像页请求实现

根据ZigBee OTA的规范,OTA客户端向OTA服务器请求镜像的方式有两种,分别是镜像块请求与镜像页请求。镜像块请求的OTA更新方式效率较低。镜像块请求是客户端每收到一个块就向服务器请求一次,而页请求是请求一次可收到多个数据块,在数据帧当中附加了镜像页大小与响应间隔信息,当OTA服务器收到一次页请求后,以一定的间隔多次向节点发送块响应。其中,块响应的次数由镜像页大小决定。请求命令的锐减,大大减轻了整个网络流量的负担,并提高节点的传输更新效率。

根据请求类型不同,服务器的处理函数也不同,而客户端程序只需稍作改动。本文主要介绍服务器的页请求处理功能。OTA服务器为每一个请求更新的节点分配一个事件号,对应一个节点号,并通过请求节点的短地址索引,设置特定的事件。进入事件后,OTA服务器通过串口向OTA应用控制台请求镜像数据块,并向节点发送镜像块数据。通过把事件添加到定时器链表,就能够以响应间隔为时间单位,循环发送镜像块数据,直到累计的发送镜像块大小等于节点的请求镜像页大小,从而完成一次镜像页请求的传输过程,流程图如图4所示。

图4 页请求处理流程

3 效果验证

搭建一个星形网络,把OTA服务器配置成协调器,把所有OTA客户端配置成节点,并进行如下实验。为了对比分析两种更新手段的效率,分别使用镜像块请求命令与镜像页请求命令,对节点进行OTA更新。网络规模分别为1个节点~7个节点,测量了不同规模网络下节点完成更新传输所需的时间,每个节点与服务器距离相同,均为1 m。其中镜像大小均为120 kbyte,数据块大小(OTA_MAX_MTU)为64,串口波特率为38 400 bit/s。

表1 镜像块请求

表2 镜像页请求

其中时间间隔是经实验确定的最小间隔,若间隔小于上表中的值,则出错率较高。由上表可得,节点越多,用时越多,但平均用时越少。镜像页的大小为100,减少了99%的请求命令和确认帧。虽然页请求方式提高了OTA的速率,但由于代码结构不完善,速度受限于串口波特率等原因,还有进一步提升的空间。

4 小结

通过无线更新固件,免去了回收更新节点所需时间,可以达到更新完成后不破坏当前网络拓扑结构的效果,弥补传感器网络中节点软件修改、调试方面的缺陷。本文实现的页请求方式,虽然在速度上优于块请求方式,但如果时间间隔选取不当,或外界干扰较大导致数据错误,其可靠性没有块请求方式高。针对此问题,可以再添加一个纠错功能,一旦出现丢包,则接前一个数据包重新发送页请求。另外,对于要求不是很严格的应用场合,可以尝试服务器广播镜像文件的方式,理论上将进一步缩短更新时间。

[1] CC2530 Data Sheet[EB/OL].http://www.ti.com/product/cc2530.

[2] Texas Instruments.Z-Stack User Guides[S].America.Texas Instruments,2009:221-232.

[3] Texas Instruments.Z-Stack OTA Upgrade User's Guide[S]. America.Texas Instruments,2010:105-112.

[4] ZB_ZARC_Interest-ZigBee_OTA_Upgrade_Cluster_Specification [S].ZigBee Alliance,2010:210-220.

[5] 张心泉,左芸,凌志浩.基于zigbee_网络节点的软件无线下载探讨[C]//第八届工业仪表与自动化学术会议,2007:2-4.

[6] 陈英杰,朱晋锋.ZigBee空中下载技术研究及其优化设计[J].单片机与嵌入式系统应用,2012(11):3-4.

[7] 李丽娜.无线传感器网络代码更新技术研究[D].哈尔滨:哈尔滨工业大学,2006.

王永(1972-),男,江苏铜山人,硕士,副教授,徐州工业职业技术学院,主要研究方向为计算机应用与电子通信技术。

Analysis and Optimization of OTA Based on ZigBee*

WANG Yong1*,XI Ji2
(1.School of Information and Electrical Engineering,College of Industrial Technology,Xuzhou Jiangsu 221140,China;2.College of Computer and Information,Hohai University,Changzhou Jiangsu 213022,China)

ZigBee alliance had set a standard for OTA,and the upgrade cluster provides a standard mechanism for wirelessly upgrading a ZigBee device's firmware.The Zstack provides only the block request method,and the speed is not satisfactory.Based on the reaserch of the process of OTA,an designs an effective method—image page request is designed,which can speed up the session and reduce network traffic.

ZigBee;OTA(Over-The-Air);page request

TP393

A

1005-9490(2016)03-0671-04

EEACC:7230;720010.3969/j.issn.1005-9490.2016.03.033

猜你喜欢

镜像文件任务调度镜像
镜像
新旧电脑资料迁移高效帮手
基于PEPA的云计算任务调度性能分析
基于改进NSGA-Ⅱ算法的协同制造任务调度研究
镜像
没光驱不要紧 装个免费虚拟的
开发闲置内存,为本本轻松提速
用RamOS降低公用机的维护工作量
基于小生境遗传算法的相控阵雷达任务调度
云计算环境中任务调度策略