APP下载

基于C#的无线传感网络软件升级技术研究

2019-10-15谭靖宇施伟斌

软件导刊 2019年8期
关键词:无线传感器网络

谭靖宇 施伟斌

摘 要:随着嵌入式技术的不断发展,智能设备逐渐成为研究热点,解决智能设备软件版本升级问题至关重要。节点软件升级系统一般分为主计算机、网关节点和传感器节点3个部分。主计算机通过串口将要更新的软件代码发送到网关节点,网关节点通过无线传感器网络传递软件代码到传感器节点并控制节点,以完成新版本升级。研究了CC2430芯片所适用的软件升级系统。主计算机使用基于C#语言的窗体应用程序,将代码的iHex文件分割成可变长数据包,提高主机和网关节点之间的代码传输速率。实验证明,该方法有效减少了主机与网关节点的代码传输时间,提高了写数据效率,可广泛应用于智能家居及医疗监测等领域。

关键词:无线传感器网络;C#;可变长数据包;软件升级系统;TinyOS;CC2430

DOI:10. 11907/rjdk. 182765 开放科学(资源服务)标识码(OSID):

中图分类号:TP393文献标识码:A 文章编号:1672-7800(2019)008-0191-05

Research on Software Upgrade Technology of Wireless Sensor Network Based on C#

TAN Jing-yu,SHI Wei-bin

(College of Photoelectric Information and Computer Engineering,

University of Shanghai for Science and Techology,Shanghai 200093,China)

Abstract: With the continuous development of embedded technology, smart devices for application chips have gradually become a hot field of research, and it is very important to solve the problem of software version upgrade on smart devices. A node software upgrade system can be generally divided into three parts: upper computer, gateway node and sensor node. The host computer transmits the software code to be updated to the gateway node through the serial port, and the gateway node sends the software code to the sensor node through the wireless sensor network and controls the node to complete the new version upgrade. The software upgrade system applied to the CC2430 chip is studied. The form application that is based on the C# language is used to divide the iHex file of the code into variable-length data packets, which improves the code transmission rate between the host computer and the gateway node. The experiment proves that the method effectively reduces the code transmission time of the host computer and the gateway node, improves the efficiency of writing data, and can be widely used in the fields of smart home and medical monitoring.

Key Words:  WSNs;C#;variable length packet;software upgrade system;TinyOS; CC2430

作者簡介:谭靖宇(1993-),女,上海理工大学光电信息与计算机工程学院硕士研究生,研究方向为无线传感器网络;施伟斌(1967-),男,上海理工大学光电信息与计算机工程学院副教授、硕士生导师,研究方向为无线传感器网络。本文通讯作者:谭靖宇。

0 引言

随着无线通信技术、传感器技术、嵌入式技术的日趋进步,具有小尺寸、低功耗、价格低廉等优点的微型传感器节点越来越多地运用在各种场景中。这些节点分布于检测区域内,能以无线方式自组成传感器网络(Wireless Sensor Networks,WSNs)[1]。由于这些节点能够感知和处理周围环境消息并将数据通过无线的方式传播,因此针对这一特点的研究很多,推动了环境监测、智能家居、医疗健康等领域的发展[2]。

代码分发[3-4]是大量嵌入式设备升级软件时面临的首要问题。在一些检测场景中节点数量庞大,部署环境恶劣,手动升级节点程序不但效率低下,而且任务繁重,通过无线传感器网络实现远程软件升级能较好解决这一问题。

代码分发代表性研究有:针对新版本程序比旧版本改动较少的情况,文献[5-6]计算新旧镜像的差异,只传输少量差异数据,减少了能耗,但增大了恢复代码时的计算能耗和实现难度;文献[7]基于模块化分析了不同的分发方法,提出了免重启代码更新方式,提高了代码更新效率;文献[8]基于多跳的Deluge协议提出了一种防止DoS攻击的分发协议,利用信息验证机制保证代码分发过程安全。

随着WSN的发展,进入远程代码分发技术研究阶段。文献[9]提出了基于多播树的分发协议,各节点建立分发的路由方法,每个节点基于该路由将新数据传输给当前节点的子节点,最后完成整个代码的传输;西安电子科技大学研究人员[10]把分发过程分为5个阶段,以保证数据能完整传输到各节点,并用TOSSIM[11]进行了仿真实验;浙江大学研究人员[12]将ELF文件格式(可执行与可链接格式)特点与WSN结合,使节点接收到新版本文件后再进行链接,实现了模块化更新功能,可适用传输差异模块,达到降低传输量的目的;文献[13-14]同样利用ELF文件进行代码差异分析,仅传输补丁文件,到达节点后再修补链接。

目前研究重点基本都在分发数据的处理方式和分发协议上,一些方式虽然减少了传输时间和能耗,但增大了链接运算,如ELF为中间文件,需要额外的存储空间,链接完成后不能删除,要进一步基于文件进行分发。本文在分析代码分发协议[15-16]基础上,针对存储空间较小的芯片进行WSN软件升级技术研究,将主要的计算任务交给主机,避免了节点做大量运算,提高了软件升级时代码传输效率。同时将可变长数据包概念引入到代码分发过程中,通过传输更多代码,减少设备执行次数,提高了效率。

1 软件升级过程

本文研究的软件升级系统由主计算机、网关节点和传感器节点3部分组成。主计算机程序用C#语言编写,采用Windows平台的Visual Studio2017进行设计。网关节点和传感器节点安装TI的CC2430微控制芯片[17],内置128kB闪存,可存储多个版本的应用程序。该节点的软件平台选用加州大学伯克利分校研发的TinyOS操作系统[11],节点程序用nesC语言编写[18]。为实现WSN软件升级,需要对主计算机、网关节点以及传感器节点分别设计,最终实现代码从主计算机完整传给网关节点,网关节点再分发给全网络的传感器节点过程。主机使用控制程序通过串口发送命令设置波特率,重启、分配、停止等到网关节点;网关节点接到指令后作出相应动作,将需要广播的指令或代码分发到全网的传感器节点;传感器节点1,2使用分发协议接收完整程序,节点3从节点2接收转发的新版本程序,并在接收到的整个网络上重启指令后启用新版本程序,代码分发过程如图1所示。

图1 WSN软件升级过程

1.1 主计算机代码传输

代码分发系统主计算机由C#语言编写窗体应用程序,包含设置传输波特率、设置数据包大小,以及发送分发、重启、停止命令等功能,如图2所示。

图2 主计算机窗体软件界面

可根据iHex文件的结构特点调整每个数据包的大小。图3为iHex文件存储格式。iHex文件是一个十六进制文件,每行第一字节为起始符号“:”,之后每两个十六进制数代表一个字节。第一个字节代表本行所含数据字节的个数,第二第三字节代表本行的存储地址。大部分数据的存储地址是连续的,基于这个特点,可将多行合并为同一个数据包传输。本文主计算机软件可选择每个数据包中包含的行数,1-12行不等。

图3 iHex文件存储格式

1.2 存储空间映射

CC2430的存储器空间映射为外部数据存储空间和代码存储空间两个部分。CC2430有16位寻址能力,无论映射到哪个存储空间,最大可访问64KB,最大可访问地址为0xFFFF,必须通过Bank映射方式才能访问到整个128KB的Flash。

代码存储空间分为统一映射和非统一映射,由MEMCTR寄存器的MUNIF位进行控制。芯片复位时从0x0000开始运行。

外部数据存储器主要对硬件寄存器以及SRAM进行读写操作。读取Flash需要改变代码存储空间的映射方式,把高位地址映射到对应的Bank,即可从此Bank里读取数据,读取数据后要返回代码运行现场。因为代码存储器为只读形式,所以对Flash执行写操作只能通过CC2430内部的Flash控制器进行。在写Flash过程中不能执行读Flash操作,而正常情况下读操作的代码在Flash内部,为了顺利写入代码,需要把写操作相关的函数以十六进制符号的形式存入CC2430的SRAM中,具体写操作代码如下:

将写代码放入SRAM中,用统一的方式映射代码存储空间,程序跳转至SRAM的写函数执行写操作,完成后跳回Flash内的代码处,并改为非统一映射方式。

此外,为了增加代码存储空间,需添加启动引导模块。启动引导程序作为一个完整的程序放在 Bank0中,节点启动后读取启动信息,按启动信息进行设置并跳转。启动引导程序有读取版本信息、映射到版本所在 Bank、跳转到0x8000地址执行新版本程序3个步骤,如图4所示。

图4 Flash存储器空间配置

1.3 代码分发协议

TinyOS系统自带Trickle[19]及Deluge[20]两种分发协议,两种协议都有优点和缺点,将其结合能更好地发挥作用。

Trickle协议是一种通过动态调整参数适应不同网络环境的自适应协议。该协议分为维护阶段和更新阶段。协议中每个节点周期性对外广播信息。维护阶段全网络节点版本一致,不需要传输新数据,所以应尽可能延长广播周期以降低开销,分发阶段要尽可能缩短广播周期以便快速分发。因为Trickle协议具有动态调整广播周期的能力,使用偵听和抑制发送技术,所以即使在节点密度较高的环境下也可实现高效率运行。

Deluge协议属于泛洪式分发协议,即分发代码时通过广播的形式扩散至各节点。Deluge协议有对全网络节点下达分发代码、重启节点和启用新版本命令的功能;还拥有将代码分割成多页,进行代码分发的功能。其中代码分发过程为流水线模式,即使节点没有接收到全部的页,也可以广播已完整接收的页,显著提高了更新效率。

本远程软件升级系统中的节点使用CC2430芯片,将分发过程分为维护、RX和TX阶段。由于Deluge协议的管道技术不会提高代码传输速率,因此系统取消了管道技术。在节点接收到所有页面然后分发它们之后,减轻了接收端负担。Trickle协议适用于少量数据分发,如所有节点重新启动、切换版本、分发代码等,并且控制命令的内容包含要分发的代码及版本信息。通过将网络中的版本信息与节点的当前版本进行比较,可以确定节点是接收还是分发状态。 更新过程如图5所示,由网关节点、传感器节点A、B、C和4个节点组成。其中,节点A和B在网关节点的一跳范围内,节点C远离网关节点,不能直接通信。最初,每个节点处于维护状态并随机广播ADV消息,以确保整个网络中的节点版本一致。某一刻主计算机传输新版本代码至网关节点并发出代码分发控制命令时,则分发阶段开始。分发过程如下:

(1)网关节点利用Trickle协议发送CTL消息,将该消息发送至整个网络,其中包含最新版本号和最新版本文件大小。

(2)各节点随机发送ADV消息,ADV消息中包含当前节点的版本信息。在节点发现网络中存在新版本信息后会尽快广播ADV消息,以便周围节点知道是最新版本。

(3)节点A、B接收到网关节点发送的ADV消息,得知网关节点有待发送的新版本文件后即进入RX状态,节点A先一步向网关节点发送REQ消息。

(4)从节点A接收到REQ消息后,网关节点进入TX状态并广播Data数据。

图5 WSN软件升级流程

2 实验

对WSN软件升级过程进行实验,首先对主计算机使用可变长数据包传输代码至网关节点的过程进行实验。在9 600bps的串口传输速率下,可变长数据包传输与传统按行传输效率(当数据包大小为一行数据时,传输时间和传统按行传输时间一致,即表1第1行)对比如表1所示。可以看出使用可变长数据包传输代码最高能节省80.61%的时间,且丢包率极低。

以最高115 200bps的串口传输速率,每个数据包最大包含12行数据情况下耗时最少,为7.042s,证明使用可变长数据包的传输方式最高能节省93.87%的传输时间。

表1 波特率为9600时不同包大小传输情况

再对网关节点通过WSN分发程序代码进行实验。使用SmartRF[21]进行调试,使用网关节点和多个传感器节点,传感器节点随机分布在网关节点周围,可直接与网关节点通信及相互通信。实验分发代码大小为29.34KB,传感器节点的数量从1开始到24逐渐增加,分发位置如图6所示。网关节点从主计算机接收指令并进行分发。

图6 单跳节点位置

图7显示更新整个网络中不同数量节点的代码所需时间。当网络中只有一个节点时,需要140s。发送REQ的等待时间是随机的,当整个网络中的节点数量增加时,整个REQ时间将相对减少,并且分发速度将更快。当网络中存在丢包情况时,如果一个节点接收到ADV消息而另一个节点没有接收到,则仍然可以确保该节点向网关节点发送REQ消息,不必等待网关节点第二次发送ADV消息,这也加快了分发速度。

图7 节点更新时间

当传感器节点数增加到11时,分配速度开始下降。无线信道相对于有线传输的稳定性差,当节点数量增加时,分组丢失的可能性增加,即网络中的重传次数增加,导致分发速度降低。在同时更新多个节点过程中,如果节点A没有接收到某个分组,则其对重传信息的请求可能被其它节点淹没。也就是说,其它节点抢先从网关节点请求数据分组。如果节点A不需要其它节点请求的数据包,则节点A不能直接从网关节点获取数据包,必须等到其它节点更新后才能继续从丢失数据的位置接收新数据。因此,在节点数量增加后,单个节点的数据包丢失将增加整个网络更新时间。

在无线信道环境足够理想的情况,更新数量较多的节点(如19个以上),其更新速度与更新节点数量无关。

在多跳实验中,每个节点位于图8位置,并且网关节点和上位计算机放置在实验室中,传感器节点A放置在实验室门上,传感器节点B放置在走廊中。传感器节点A可直接与网关节点和传感器节点B通信,网关节点和传感器节点B不能直接相互通信。在更新过程中,网关节点首先将代码分发给传感器节点A,然后传感器节点A将代码分发给传感器节点B,待更新代码的大小同样为29.34KB。

图8 多跳节点位置

在分发过程中,为了形成多跳网络,节点之间的距离被设置得很远,接收信号强度被削弱,更容易受到干扰,因此丢包的概率显着增加。传感器节点A多次向网关节点发送重发请求, 225s后,网关节点到传感器节点A的更新完成,另外使用了508s完成所有更新,共计733s。

将一跳的节点放置在传感器节点A和传感器节点B的旁边,此时完成多跳网络更新时间缩短为487s。与仅有的2个传感器节点相比,更新速度得到较大提高。当节点数量增加时,接收分组的概率也相对增加,从而缩短了更新所花费的时间。多跳网络的理想更新时间是当前网络跳跃乘以单跳网络时间。通常会发生丢包,并且当数据无法正常传输到节点时更新时间会延长。

3 结语

本文研究了基于C#的无线传感网络软件升级技术,通过C#编写窗体应用程序实现可变长数据包传输功能,提高了主计算机与网关节点通过串口传输数据的效率,在最好的情况下代码传输时长仅为7.042s,对比传统的按行传输方式节省了高达93.87%的传輸时间,效果显著。整个WSN软件升级系统基于CC2430芯片的存储特点,将存储空间划分为引导部分和程序部分,方便根据不同存储器映射方式进行版本切换。此外还对TinyOS操作系统自有代码分发协议进行改进,结合Trickle协议和Deluge协议,增加软件升级系统在维护状态和更新状态时切换的灵活性。通过实验验证了本文WSN软件升级系统的更新功能,从单个节点更新到多个节点更新乃至多跳更新,系统都能顺利完成。

参考文献:

[1] 钱志鸿,王义君. 面向物联网的无线传感器网络综述[J]. 电子与信息学报,2013,35(1):215-227.

[2] 孙龙. 无线传感器网络应用系统最新进展综述[J]. 中国新通信,2015,17(6):112-115.

[3] 任万春. 无线传感器网络重编程技术研究与设计[D]. 南京:南京信息工程大学,2014.

[4] 张国萍. 无线传感器网络在线代码分发最新研究进展[J]. 浙江理工大学学报,2015,33(2):219-227.

[5] CHIANG M L,LU T L. Two-stage diff:an efficient dynamic software update mechanism for wireless sensor networks[C].  2011 IFIP Ninth International Conference on Embedded and Ubiquitous Computing. IEEE Computer Society,2011:294-299.

[6] LIEN S L,CHIANG M L. Recovery mechanism for diff-based reprogramming in WSNS[C]. Ubiquitous Intelligence&Computing and 9th International Conference on Autonomic&Trusted Computing(UIC/ATC),2012:835-840.

[7] LAW Y W,WANG W C,KUO S Y. Ubiquitous Intelligence&Computing[M]. Berlin:Springer,2011.

[8] CHI T Y,ZHANG Y,JIN J,et al. Secure rateless deluge:pollution-resistant reprogramming and data dissemination for wireless sensor networks[J]. Eurasip Journal on Wireless Communications & Networking, 2011(3):204-218.

[9] 任萬春,马廷淮,刘琦. 一种基于多播分发树的无线传感器网络代码分发协议[J]. 传感器与微系统,2014,33(11):149-152.

[10] 侯彤. 无线传感器网络空中加载技术的研究[D]. 西安:西安电子科技大学, 2011.

[11] UNIVERSITY OF CALIFORNIA AT BERKELEY. Tinyos document[EB/OL]. http://tinyos.stanford.edu/tinyos-wiki/index.php/TinyOS_ Tutorials.

[12] 孟硕培. 无线传感器网络节点重编程研究与设计[D]. 杭州:浙江大学,2008.

[13] 汪治理,张勇,刘红. 一种基于代码克隆检测技术的WSNs重编程方法[J]. 传感技术学报,2014, 26(9):1288-1292.

[14] 何伟贤,刘建明,李宏周,等. TinyOS远程动态代码更新方法[J]. 仪表技术与传感器,2013(1):19-22.

[15] 吴涛,施伟斌,张磊. 基于CC2430的代码更新系统设计[J]. 电子科技,2017,30(1):123-125.

[16] 钱欢,施伟斌. 基于Android的无线传感器网络代码更新系统设计[J]. 软件导刊,2017,16(12):125-127.

[17] 高山,袁杰. 基于无线传感器网络节点的串行通信技术[J]. 现代电子技术,2010,33(18):151-153.

[18] 何伟贤,刘建明,彭智勇,等. TinyOS跨平台移植方法研究与实现[J]. 微计算机信息,2012,28(9):356-358.

[19] LEVIS P,PATEL N,SHENKER S,et al. Trickle:a self-regulating algorithm for code propagation and maintenance in wireless sensor networks technical report[R]. California: University of California at Berkeley,2003.

[20] CHLIPALA A,HUI J,TOLLE G. Deluge:data dissemination in multi-hop sensor networks[R]. California:University of California at Berkeley,2003.

[21] TEXAS INSTRUMENTS. SmartRFTM packet sniffer user's manual (Rev. G)[EB/OL]. http://www.ti.com/tool/packet-sniffer.

(责任编辑:杜能钢)

猜你喜欢

无线传感器网络
基于无线传感器网络的葡萄生长环境测控系统设计与应用
无线传感器网络技术综述