楼亮亮+周苗+何为+鲍星合+谷宇章
摘 要: 选择TI的Zstack作为研究基础,在ZigBee的OTA技术基础上做了一定的改进,设计出一种多点并发、可靠、高效、低能耗的无线下载解决方案。采用数据压缩技术实现对固件代码数据的压缩处理,提高了该方案的性能,并在基于CC2530传感节点上做了具体的实现。该方案成功地应用于一个具有200多个传感节点的ZigBee网络中,方案的可靠性及稳定性得到了验证。
关键词: ZigBee; OTA; 数据压缩; CRC32
中图分类号: TN921?34 文献标识码: A 文章编号: 1004?373X(2014)23?0001?04
Abstract: TI′s Zstack was selected as a research base, which improved on the basis of OTA technology established by ZigBee Alliance. A multi?concurrent, reliable, efficient, low?power OTA solution was designed. also The data compression technology is used in this solution to compress the firmware code data, so as to improve the performance of the application. It was implemented on CC2530 sensing nodes, and was applied to ZigBee network with more than 200 sensor nodes successfully. The reliability and stability of the solution were validated.
Keywords: ZigBee; OTA; data compression; CRC32
0 引 言
TI根据ZigBee的相关OTA标准[1]标准编写了相应实现代码,但是对功耗方面关注度比较少,而且必须要配合TI的软件才能实现升级。国内针对OTA技术已有相关研究,文献[2]涉及无线传感网络空中下载协议,该协议是一种具有数据传输、节点状态控制功能的应用层协议,为无线传感器网络提供无线传感器节点状态控制、程序代码更新等服务,但是没有提出具体的实现方案,也不涉及到可靠的数据分发机制,在实际应用中需要做具体优化。文献[3]提出了一种点对点的无线下载方式,是一种比较通用的无线下载方案。但是其方案数据校验还是有点欠缺,没有对整个Image进行校验,可能会导致数据错误。
本文提出了一种基于通用架构、多点并发、可靠、高效、低能耗的无线下载解决方案。升级的传感节点自主向协调器申请固件数据,自主发送数据申请包(POLL?Data Request),从而实现多节点并发升级,极大地提高了系统的效率及稳定性。
1 结构划分及算法选择
1.1 存储结构划分
在OTA升级模型中,需要把传感节点及需要升级的设备内部程序存储器在结构上分成三个区域:程序引导区、数据共享区和用户装载程序区。引导程序Bootloader主要实现固件程序的串口下载、固件数据的解压缩、中断向量的重映射及程序的跳转;数据共享区存放引导程序与用户程序的一些共享数据,例如固件的大小、版本等信息,用户程序与引导程序都可以对该区域中数据进行操作;用户装载程序区用来存储用户应用程序,即实现用户需求的应用程序。
1.2 最大数据包及CRC选择
在实际应用中,在无线升级过程中应该要尽量选择最大包数据来发送,这样可以减少整个固件发送的次数。而在未加密、短地址模式下,可用于传输的用户数据只有99 B。本文支持的数据包最大值通过Zstack中的API函数afDataReqMTU()来获取。
因为要对整个数据包进行校验,选用了CRC32,根据文献[4],CRC32最大能校验的不冲突数据包长度为512 MB。
1.3 数据压缩
一个基于Zstack的传感节点固件大小都是在100 KB以上, 为了提高下载的速度,考虑对固件数据进行压缩。为此,本文选用两种无损压缩算法进行评测:MiniLZO[5]与LZSS[6],并在CC2530上做了移植,比较它们的性能。由于CC2530只有8 KB的ROM,考虑到对压缩前后数据的存储问题,所以在实际压缩过程中需要将固件分割为3 KB大小的小块进行分段压缩。
本文选择一个大小为123 072 B的固件,利用上述两种压缩算法对此固件进行性能比较。其中整体压缩是该固件没有进行分段压缩之后的结果,具体测试结果如表1所示。
表1 LZSS与MiniLZO性能比较
[算法\&;整体压缩/压缩比率\&;分段压缩/压缩比率\&;解压程序
占ROM /B\&;解压时
间 /ms\&;MiniLZO\&;79 974 B/64.980%\&;89 262 B/72.527%\&;2 570\&;1\&;LZSS\&;73 090 B/59.388%\&;85 210 B/69.235%\&;635\&;11\&;]
从表1中可以看出LZSS解压程序比MiniLZO更节省ROM空间,但是LZSS解压速度更慢,会导致传感节点功耗与不稳定因素提高。所以本文提及的OTA方案压缩解压缩算法选用MiniLZO。
2 系统实践
OTA系统模型由无线升级主机(协调器)、传感节点和路由设备组成,如图1所示。升级主机和传感节点中都集成SPI FLASH存储器,用来存储要升级的传感器节点的固件。传感节点采用SPI FALSH作为缓冲存储介质,保证在下载的过程中不需要擦除应用程序,只有在SPI FLASH中的固件数据得到正确保证的情况下才被BootLoader程序拷贝到内部FLASH中,从而提高了系统的稳定性。
ZigBee标准[7]定义中,节点与其父节点通信采用POLL机制,节点通过周期性发送数据请求帧(POLL?Data Request)来查询其父节点中有无数据要发送给它。这种机制一方面导致了节点功耗的增加,另一方面也给整个网络带来了一定的负荷,增加了系统不稳定因素。
<;E:\LIHUI\12月\12.4\现代电子技术201423\Image\07t1.tif>;
图1 OTA系统模型
本系统在实际应用中关闭了周期性传感节点的POLL功能,这导致传感节点无法接收到协调器发给节点的数据。为此,本文重新构造自主数据请求(POLL?Data Request)机制,并设计了两种特殊数据帧:配置数据申请帧和固件数据申请帧。
配置数据申请帧是在传感节点与其父节点建立连接之后,传感节点向协调器发送的一种数据帧。该数据帧包含节点当前运行的固件版本信息、IEEE地址等。在该数据帧发送之后,调用NLME_SetPollRate()函数开启POLL功能,同时也开启等待协调器应答的超时定时器,开始等待协调器发送数据到该传感节点;如果超时,定时器超时溢出。重复上述操作,具体流程如图2(a)所示。
因为传感节点采用自主数据请求的机制,所以在传感节点与协调器关联成功的时刻,要决定是否进行双向通信,如图2(b)所示。在传感节点与协调器关联成功后,传感节点向协调器发送配置数据申请帧,协调器在收到该数据帧后就可以把相关的配置信息发送给它。传感节点根据此数据包中的信息来决定是否要继续与协调器保持数据通信或者固件升级。这种操作带来了两个方面的好处:一方面传感节点不需要开启周期POLL功能,可按需开启该POLL功能,降低了网络冲突的概率,提高了ZigBee网络容量;另一方面降低了传感节点的功耗,使传感节点工作时间延长,提高了设备的可靠性。
如果传感节点在规定时间内收到协调器的配置数据申请帧的应答帧,并把当前运行的固件版本与该应答帧数据中包含的固件信息做比较,如果节点当前运行固件版本比协调器中固件信息版本要低,则再根据协调器应答帧数据相关标志位,来决定是否需要进行升级工作,如图2(b)所示。
传感节点一旦进入升级模式,则开始周期发送固件数据申请帧数据,在发送完之后调用NLME_SetPollRate()函数开启POLL功能,打开超时等待定时器。固件数据申请帧中包含传感节点要申请固件数据存储于协调器SPI FLASH中的地址及固件数据的长度。协调器收到该固件数据申请帧之后,从该数据包中获取传感器节点申请固件按数据的存储地址,并从SPI FLASH的该地址空间中读取指定长度的数据,在收到传感器Data?Requst包之后,把读出的固件数据发送给该传感节点。传感器节点接收新的固件数据则写入其SPI FLASH中,紧接着申请下一包数据。此流程一直循环到数据所有固件数据被申请完,具体流程如图2(c)所示。
传感节点申请完协调器中的新固件数据后,则把相应参数写入到数据共享区,重启进入Bootloader。引导程序根据共享区的数据信息,读取传感节点SPI FLASH中新固件数据并解压到内部FLASH,从而实现传感节点的固件升级。
3 分析与评测
为了保证实验数据的可靠性,本系统测试都是采取同一份传感节点固件,大小为123 072 B。为了避免传感节点因为网络参数问题导致与协调器无法连接,在Zstack?2.5.1a协议栈[8]上做了修改,在传感器节点多次发送失败之后,则要重新初始化网络参数,并重启传感器节点。本系统的验证分三种方案进行,如表2所示。
表2 测试方案
[方案号码\&;固件数据申请
帧周期 /ms\&;固件数据
是否压缩\&;同时升级
节点个数\&;方案1\&;100\&;否\&;2个、5个、10个\&;方案2\&;100\&;是\&;2个、5个、10个\&;方案3\&;50\&;是\&;2个、5个、10个\&;]
方案1,方案2测试结果如图3所示。方案2,方案3测试结果如图4所示。
从图3可以看出,固件数据的压缩可以在一定程度上缩短传感节点固件升级的时间,进而提升了OTA性能。随着同时申请升级的节点数目的增多,节点升级的时间相对于同时申请下载节点较少的情况下完成升级所花费的时间会有所增加,因为节点增多导致无线冲突的概率增大,而数据的重发机制导致传感节点升级的花费时间增加。同时,升级节点的增多,也会导致有些传感节点因为多次重发不成功,而引起传感器节点重置网络参数,重启并重新开始升级工作,如图4(c)中序号为6、7、9、10号的节点。
从图4可以看出,缩短传感节点固件申请包的时间间隔,在传感节点比较少的情况下,极大地缩短了升级所花费的时间。但是随着传感节点同时申请升级的个数增加,无线冲突的概率也随之增大,导致节点重启并重新升级的节点个数也随之增多,如图4(c)所示。
从图3与图4可以看出,随着同时申请升级的传感节点个数的增加,传感节点断网重启重连的概率也会随之增加;缩短固件数据申请帧的周期,在传感节点比较少的状况下极大地提高了OTA的性能。根据上述测试结果,确定一个协调器在同一时刻只允许5个传感节点同时升级的方案,且每个节点申请的时间间隔为100 ms。
4 总结与展望
本论文提出了一种基于ZigBee网络OTA技术的改进方案,设计的方案具有多并发、高可靠、低功耗及通用性强的特点。文中对代码数据进行压缩处理,在代码量在很大的情况下,既可以实现传输数据量的减少,增加系统的稳定性和可靠性,又降低了硬件成本。对于数据的安全性,本文中没有涉及,目前系统没有采用特定加密算法,所以无线下载的安全性等方面有进一步的讨论空间。
参考文献
[1] ZigBee Alliance. ZigBee over?the?air upgrading cluster [EB/OL]. [2012?05?28]. http://www.zigbee.org/en/spec_download/download_request.
[2] 尹令,周皓恩,刘才兴,等.无线传感器网络空中下载协议的研究[J].湘潭大学自然科学学报,2010,32(2):112?117.
[3] 生凤中,荆雷,李建业.基于 CC1110 单片机的无线升级方法研究[J].电子技术应用,2012,38(11):139?142.
[4] FARAHANI S. ZigBee wireless networks and transceivers [M]. UK: Newnes, 2011.
[5] OBERHUMER M. Mini version of the LZO real?time data compression library [J/OL]. [2012?08?13]. github.com/markus?ober.
[6] BERLIN G J. Method for compression of data using single pass LZSS and run?length encoding: US, 5,701,125 [P]. 1997?12?23.
[7] Zigbee Alliance. Zigbee specification [M/OL]. [2013?04?22]. http://www.zb4osgi.aaloa.org/redmine/attachments/download/46/1053474r17zb tsc?zigbee?specification.
[8] Texas Instruments. Z?stack developer′s guide [EB/OL]. [2012?02?08]. http://www. ti. com. cn/cn/lit/an/swra176/swra176.
从图4可以看出,缩短传感节点固件申请包的时间间隔,在传感节点比较少的情况下,极大地缩短了升级所花费的时间。但是随着传感节点同时申请升级的个数增加,无线冲突的概率也随之增大,导致节点重启并重新升级的节点个数也随之增多,如图4(c)所示。
从图3与图4可以看出,随着同时申请升级的传感节点个数的增加,传感节点断网重启重连的概率也会随之增加;缩短固件数据申请帧的周期,在传感节点比较少的状况下极大地提高了OTA的性能。根据上述测试结果,确定一个协调器在同一时刻只允许5个传感节点同时升级的方案,且每个节点申请的时间间隔为100 ms。
4 总结与展望
本论文提出了一种基于ZigBee网络OTA技术的改进方案,设计的方案具有多并发、高可靠、低功耗及通用性强的特点。文中对代码数据进行压缩处理,在代码量在很大的情况下,既可以实现传输数据量的减少,增加系统的稳定性和可靠性,又降低了硬件成本。对于数据的安全性,本文中没有涉及,目前系统没有采用特定加密算法,所以无线下载的安全性等方面有进一步的讨论空间。
参考文献
[1] ZigBee Alliance. ZigBee over?the?air upgrading cluster [EB/OL]. [2012?05?28]. http://www.zigbee.org/en/spec_download/download_request.
[2] 尹令,周皓恩,刘才兴,等.无线传感器网络空中下载协议的研究[J].湘潭大学自然科学学报,2010,32(2):112?117.
[3] 生凤中,荆雷,李建业.基于 CC1110 单片机的无线升级方法研究[J].电子技术应用,2012,38(11):139?142.
[4] FARAHANI S. ZigBee wireless networks and transceivers [M]. UK: Newnes, 2011.
[5] OBERHUMER M. Mini version of the LZO real?time data compression library [J/OL]. [2012?08?13]. github.com/markus?ober.
[6] BERLIN G J. Method for compression of data using single pass LZSS and run?length encoding: US, 5,701,125 [P]. 1997?12?23.
[7] Zigbee Alliance. Zigbee specification [M/OL]. [2013?04?22]. http://www.zb4osgi.aaloa.org/redmine/attachments/download/46/1053474r17zb tsc?zigbee?specification.
[8] Texas Instruments. Z?stack developer′s guide [EB/OL]. [2012?02?08]. http://www. ti. com. cn/cn/lit/an/swra176/swra176.
从图4可以看出,缩短传感节点固件申请包的时间间隔,在传感节点比较少的情况下,极大地缩短了升级所花费的时间。但是随着传感节点同时申请升级的个数增加,无线冲突的概率也随之增大,导致节点重启并重新升级的节点个数也随之增多,如图4(c)所示。
从图3与图4可以看出,随着同时申请升级的传感节点个数的增加,传感节点断网重启重连的概率也会随之增加;缩短固件数据申请帧的周期,在传感节点比较少的状况下极大地提高了OTA的性能。根据上述测试结果,确定一个协调器在同一时刻只允许5个传感节点同时升级的方案,且每个节点申请的时间间隔为100 ms。
4 总结与展望
本论文提出了一种基于ZigBee网络OTA技术的改进方案,设计的方案具有多并发、高可靠、低功耗及通用性强的特点。文中对代码数据进行压缩处理,在代码量在很大的情况下,既可以实现传输数据量的减少,增加系统的稳定性和可靠性,又降低了硬件成本。对于数据的安全性,本文中没有涉及,目前系统没有采用特定加密算法,所以无线下载的安全性等方面有进一步的讨论空间。
参考文献
[1] ZigBee Alliance. ZigBee over?the?air upgrading cluster [EB/OL]. [2012?05?28]. http://www.zigbee.org/en/spec_download/download_request.
[2] 尹令,周皓恩,刘才兴,等.无线传感器网络空中下载协议的研究[J].湘潭大学自然科学学报,2010,32(2):112?117.
[3] 生凤中,荆雷,李建业.基于 CC1110 单片机的无线升级方法研究[J].电子技术应用,2012,38(11):139?142.
[4] FARAHANI S. ZigBee wireless networks and transceivers [M]. UK: Newnes, 2011.
[5] OBERHUMER M. Mini version of the LZO real?time data compression library [J/OL]. [2012?08?13]. github.com/markus?ober.
[6] BERLIN G J. Method for compression of data using single pass LZSS and run?length encoding: US, 5,701,125 [P]. 1997?12?23.
[7] Zigbee Alliance. Zigbee specification [M/OL]. [2013?04?22]. http://www.zb4osgi.aaloa.org/redmine/attachments/download/46/1053474r17zb tsc?zigbee?specification.
[8] Texas Instruments. Z?stack developer′s guide [EB/OL]. [2012?02?08]. http://www. ti. com. cn/cn/lit/an/swra176/swra176.