远程批量更新节点固件的方法

文档序号:9263950阅读:422来源:国知局
远程批量更新节点固件的方法
【技术领域】
[0001]本发明涉及无线传感网络技术,尤其是一种远程批量更新节点固件的方法。
【背景技术】
[0002]融合了传感器技术、信息处理技术和网络通信技术的无线传感网络由分布在物理空间上大量传感器节点构成,借助节点内置的不同类型传感器探测周围不同环境中包括温度、湿度、移动目标方向和速度等众多物质现象。在各种应用场景中,无线传感器网络会不可避免地受到来自各个方面的干扰,如移动信号、电磁波等,造成丢包、错传等现象,这些现象大多会导致远程更新节点固件失败。而现有的远程批量更新节点固件的方法,在网关节点下发固件更新指令后,即认为指定的该指令的执行节点进入了固件更新模式,并在每包固件更新包重发设定次数后即认为进入固件更新模式的节点均成功收到固件更新包,直到固件传输完成,各节点判断固件的完整性,如果完整,运行新的固件,否则,请求重传固件或退出固件更新模式。此方法使得实际未能成功进入固件更新模式的节点和已无法接收到完整固件的节点在整个固件更新过程中都不能回复工作模式正常工作,不利于提高检测数据的完整性和实时性。

【发明内容】

[0003]有鉴于此,本发明的主要目的在于提供一种远程批量更新节点固件的方法,能及时发现节点更新固件失败,并立即使其返回工作模式。
[0004]为达到上述目的,本发明的技术方案如下:
A、网关节点接收上位机发送的固件更新指令和各选中节点的ID;
B、持续下发接收到的固件更新指令和各选中节点的ID,直到监控到在设定时长内选中节点均进入固件更新模式时或超出设定时长时,停止下发固件更新指令和各选中节点的ID ;
C、逐包广播固件更新包,监控固件更新模式下的节点是否成功接收固件更新包,并一旦发现未能成功接收固件更新包的节点,即发送返回工作模式命令给该节点。
[0005]进一步地,步骤A前在上位机侧该方法还包括:上位机通过键盘、鼠标或触屏接收固件更新指令和各选中节点的ID。
[0006]进一步地,步骤B中,所述持续下发接收到的固件更新指令和各选中节点的ID包括:
网关节点在每个要下发的同步包中写入固件更新指令和选中的各节点的ID。
[0007]进一步地,步骤B中,所述监控在设定时长内选中节点均进入固件更新模式或超出设定时长具体为:
bl、预先设置节点信息表;
b2、接收到上位机发送的固件更新指令和各选中节点的ID后,将所述各选中节点的ID在节点信息表中分别对应的计时字段值均设置为设定时长,并设置秒中断逐秒递减所述各计时字段值;
b3、接收选中节点回复的状态包,并采用收到的状态包携带的固件更新模式覆盖发送该状态包的节点的ID在节点信息表中对应的模式字段,停止递减发送该状态包的节点的ID在节点信息表中所对应的计时字段值;
b4、每到更新时隙,遍历节点信息表中的计时字段值,找出计时字段值大于O的记录,并判断找出的记录中的模式字段值是否均为固件更新模式,如果是,认为在设定时长内选中节点均进入固件更新模式或超出设定时长;否则,认为在设定时长内、且选中节点未均进入固件更新模式。
[0008]进一步地,所述设定时长的取值范围为[60s,300s]。
[0009]进一步地,步骤C中,所述监控固件更新模式下的节点是否成功接收固件更新包具体为:
接收固件更新模式下的节点回复的ACK ;
对各节点回复的ACK分别计数;
对最近一次下发的固件更新包的包下发次数等于设定的重发次数时,将当前各节点回复的ACK数目分别与最近一次下发的固件更新包的包序号比较,不相等,则该节点接收该最近一次下发的固件更新包失败;否则,接收成功。
[0010]进一步地,步骤C具体为:
Cl:分别为固件更新模式下的各节点的ID所对应的包发送序号和存储模块编写次数赋初始值O ;
c2:固件更新模式下的各节点的ID对应的包发送序号均加1,对应的包下发次数复位;
c3:下发包序号与包发送序号相同的固件更新包,固件更新模式下的各节点的ID所对应的包下发次数加I ;
c4:接收固件更新模式下的节点回复的ACK,发送该ACK的节点的ID所对应的存储模块编写次数加I ;
c5:到更新时隙时,对于固件更新模式下的每个节点的ID,分别比较该ID对应的包发送序号和其自身对应的存储模块编写次数是否相等,如果各比较结果均为相等,返回步骤c2 ;如果存在不相等的比较结果,执行步骤c6 ;
c6:判断所述不相等的比较结果对应的ID所对应的包下发次数是否小于设定的重发次数,如果是,执行步骤c3 ;否则,返回步骤c7、c8 ;
c7:将所述不相等的比较结果所对应的ID和返回工作模式命令写入下一帧的同步包中,随同步包下发;
c8:确定尚存在未发送的固件更新包,返回步骤c2。
[0011]进一步地,步骤C还包括:接收节点回复的状态包,并采用收到的状态包携带的固件更新模式覆盖发送该状态包的节点的ID在节点信息表中对应的模式字段。
[0012]进一步地,所述设定的重发次数的取值范围为[In,10η],η为每秒钟发送的固件更新包数。
[0013]基于上述,本发明提供的远程批量更新节点固件的方法,具有以下优点和特点:
1、通过监控节点进入固件更新模式状况和传输固件的状况,能及时发现更新固件失败,即,节点未进入固件更新模式或接收固件更新包失败,并使得节点在固件更新失败后立即返回工作模式,进而有利于提高检测数据的完整性和实时性;
2、通过逐秒递减计时字段值、且仅监控大于O的计时字段值对应的模式字段来监控节点进入固件更新模式状况,实现简单,节省计算资源;
3、通过将下发的固件更新包包序号和各节点回复的ACK数目比较,可以跟踪监控各节点接收固件更新包的状况,及时发现固件更新失败;
4、每到更新时隙,确定当前节点进入固件更新模式的状况,一旦选中节点均进入固件更新模式即停止下发固件更新指令和各选中节点的ID,而非未超出设定时长即一直下发,减少了重复下发次数,节省传输资源和更新节点固件所用的时间;
5、每到更新时隙,确定对当前在发送的固件更新包的接收状况,一旦固件更新模式下的节点均接收到该固件更新包,即开始发送下一包,而非对每包固件更新包均重发设定的重发次数,减少了固件更新包重发次数,节省传输资源和更新节点固件所用的时间。
【附图说明】
[0014]图1为本发明实施例远程批量更新节点固件方法的流程示意图。
【具体实施方式】
[0015]具体的,本发明实施例远程批量更新节点固件的流程如图1所示,包括:
步骤11:网关节点接收上位机发送的固件更新指令和各选中节点的ID ;
步骤12:网关节点持续下发接收到的固件更新指令和各选中节点的ID,直到监控到在设定时长内选中节点均进入固件更新模式时或超出设定时长时,停止下发固件更新指令和各选中节点的ID ;
步骤13:网关节点逐包广播固件更新包,监控固件更新模式下的节点是否成功接收固件更新包,并一旦发现未能成功接收固件更新包的节点,即发送返回工作模式命令通知该节点返回工作模式。
[0016]其中,
完成固件传输后,在节点侧,本发明实施例还包括:节点运行该接收完成的固件。
[0017]步骤11中,
选中节点的ID,是指在上位机上选择的需要更新固件的节点的ID,所选择的ID即为所述选中节点的ID,所选择的ID对应的节点则为选中节点;
这里,在上位机上设置有网络连接表,来记录组成无线传感网的节点状态,包括:节点的ID字段、节点与网关节点的连接关系字段、节点的固件版本字段等;所述网络连接表可以通过Web界面在上位机上显示,操作员采用键盘、鼠标或触屏等将通过网络连接表选择的需要更新固件的节点的ID输入上位机。
[0018]步骤12中,
所述持续下发固件更新指令和各选中节点的ID具体为:
网关节点在每个同步时隙要下发的同步包中写入固件更新指令和选中的各节点的ID,即,执行步骤103前网关节点下发的同步包均携带有固件更新指令和选中的各节点的ID。
[0019]所述设定时长的取值范围为[60s,300s],最佳取值为:60s、90s、120s、150s、180s,200s,230s,260s 或 300s。
[0020]所述监控到设定时长内选中节点均进入固件更新模式或超出设定时长具体为: 步骤121、网关节点预先设置节点信息表;
步骤122、网关节点接收到上位机发送的固件更新指令和各选中节点的ID后,将各所述选中节点的ID在节点信息表中分别对应的计时字段值均设置为设定时长,并设置秒中断逐秒递减所述各计时字段值;
这里,所述逐秒递减的操作,对大于O的所述各计时字段值同时进行,即,每过I秒,大于O的所述各计时字段值均减I ;
步骤123、网关节点在上行时隙接收选中节点回复的状态包,并采用收到的状态包携带的固件更新模式覆盖发送该状态包的节点的ID在节点信息表中对应的模式字段,停止递减发送该状态包的节点的ID在节点信息表中所对应的计时字段值;其中,发送该状态包的节点的ID由该状态包携带,一般写在状态包的包头中;
步骤124、网关节点每到更新时隙,遍历节点信息表中的计时字段值,找出计时字段值大于O的记录,并判断找出的记录中的模式字段值是否均为固件更新模式,如果是,认为在设定时长内选中节点均进入固件更新模式或超出设定时长;否则,认为在
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1