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

文档序号:9263950阅读:来源:国知局
设定时长内、且选中节点未均进入固件更新模式;
这里,监控到设定时长内选中节点均进入固件更新模式和超出设定时长中的任一项,均停止下发固件更新指令和各选中节点的ID。也可以采用设置定时器来监控所述持续下发接收到的固件更新指令和各选中节点的ID的时长,采用设置定时器来监控时长的实现方式为现有技术,此处不再赘述。
[0021]步骤121中,所述网关节点预先设置的节点信息表,包括:节点ID字段、计时字段、模式字段,节点ID字段记录与该网关节点连接的节点的ID,设置前计时字段的初始值为O ;
步骤123中,所述上行时隙指每帧中各节点可用于向网络节点上传数据包和状态包的时隙,可以由网关节点分配给各节点,或各节点竞争确定自身的可用上行时隙,这里,指选中节点可用的上行时隙。
[0022]这里,本发明实施例还包括:
预先通过网络节点和节点协商或协议定义,在每帧中划定更新时隙;相应的,
网络节点在所述更新时隙逐包下发固件更新包。
[0023]步骤13中,
所述监控固件更新模式下的节点是否成功接收固件更新包具体为:
接收固件更新模式下的节点接收固件更新包后回复的ACK ;
对各节点回复的ACK分别计数;
对最近一次下发的固件更新包的包下发次数等于设定的重发次数时,将当前各节点回复的ACK数目分别与最近一次下发的固件更新包的包序号比较,不相等,则该节点接收该最近一次下发的固件更新包失败;否则,接收成功。
[0024]这里,本发明实施例还包括节点侧执行步骤:节点接收固件更新包,判断自身是否是首次接收到该固件更新包,如果是,将接收到的固件更新包写入固件存储模块,并回复网关节点ACK,以通知网关节点成功接收到该固件更新包;否则,丢弃该固件更新包。其中, 固件存储模块与节点当前运行的固件的存储模块并列存在,对两存储模块进行的读写操作互不影响。
[0025]步骤13具体为:
步骤131:初始化,分别为固件更新模式下的各节点的ID所对应的包发送序号和存储模块编写次数赋初始值O ;
步骤132:固件更新模式下的各节点的ID对应的包发送序号均加I,对应的包下发次数复位;其中,所述固件更新模式下的节点的ID,即节点信息表中为固件更新模式的模式字段所对应的ID ;
步骤133:下发包序号与包发送序号相同的固件更新包,固件更新模式下的各节点的ID所对应的包下发次数加I ;
步骤134:接收固件更新模式下的节点回复的ACK,发送该ACK的节点的ID所对应的存储模块编写次数加I ;这里,发送该ACK的节点的ID由该ACK携带;
步骤135:到更新时隙时,对于固件更新模式下的每个节点的ID,分别比较该ID对应的包发送序号和其自身对应的存储模块编写次数是否相等,如果各比较结果均为相等,返回步骤132 ;如果存在不相等的比较结果,执行步骤136 ;
步骤136:判断所述不相等的比较结果对应的ID所对应的包下发次数是否小于设定的重发次数,如果是,执行步骤133 ;否则,返回步骤137、138 ;
这里,固件更新包以广播方式下发,固件更新模式下各节点ID对应的包下发次数应当相等,因而,步骤136中,如果有多个所述不相等的判断结果对应的节点ID,任选一个该节点ID所对应的包下发次数与重发次数即可;
所述设定的重发次数的取值范围为[In,10η],η为每秒钟可发送固件更新包的次数,设定的重发次数的具体取值可依据信道信噪比定,信噪比越大,设定的重发次数取值可越小,为使的运算更简单,较佳的取值为整数倍的η,即,1η、2η、3η、4η、5η、6η、7η、8η、9η、10η ;步骤137:将所述不相等的比较结果所对应的ID和返回工作模式命令写入下一帧的同步包中,随同步包下发;
步骤138:确定是否尚存在未发送的固件更新包,如果存在,返回步骤132 ;否则,完成固件传输,结束本次固件传输流程。
[0026]步骤137还包括节点侧的步骤:
节点接收到同步包;
节点解析收到的同步包,得到所述不相等的判断结果对应的节点ID,判断解析到的ID中是否存在与自身ID相同的ID,如果存在,节点退出固件更新模式,回到工作模式,并回复携带自身当前模式的状态包给网关节点。步骤13还包括:网关节点在上行时隙接收节点回复的状态包,并采用收到的状态包携带的固件更新模式覆盖发送该状态包的节点的ID在节点信息表中对应的模式字段。
[0027]以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
【主权项】
1.一种远程批量更新节点固件的方法,其特征在于,该方法包括: A、网关节点接收上位机发送的固件更新指令和各选中节点的ID; B、持续下发接收到的固件更新指令和各选中节点的ID,直到监控到在设定时长内选中节点均进入固件更新模式时或超出设定时长时,停止下发固件更新指令和各选中节点的ID ; C、逐包广播固件更新包,监控固件更新模式下的节点是否成功接收固件更新包,并一旦发现未能成功接收固件更新包的节点,即发送返回工作模式命令给该节点。2.根据权利要求1所述的远程批量更新节点固件的方法,其特征在于,步骤A前在上位机侧该方法还包括:上位机通过键盘、鼠标或触屏接收固件更新指令和各选中节点的ID。3.根据权利要求1或2所述的远程批量更新节点固件的方法,其特征在于,步骤B中,所述持续下发接收到的固件更新指令和各选中节点的ID包括: 网关节点在每个要下发的同步包中写入固件更新指令和选中的各节点的ID。4.根据权利要求3所述的远程批量更新节点固件的方法,其特征在于,步骤B中,所述监控在设定时长内选中节点均进入固件更新模式或超出设定时长具体为: bl、预先设置节点信息表; b2、接收到上位机发送的固件更新指令和各选中节点的ID后,将所述各选中节点的ID在节点信息表中分别对应的计时字段值均设置为设定时长,并设置秒中断逐秒递减所述各计时字段值; b3、接收选中节点回复的状态包,并采用收到的状态包携带的固件更新模式覆盖发送该状态包的节点的ID在节点信息表中对应的模式字段,停止递减发送该状态包的节点的ID在节点信息表中所对应的计时字段值; b4、每到更新时隙,遍历节点信息表中的计时字段值,找出计时字段值大于O的记录,并判断找出的记录中的模式字段值是否均为固件更新模式,如果是,认为在设定时长内选中节点均进入固件更新模式或超出设定时长;否则,认为在设定时长内、且选中节点未均进入固件更新模式。5.根据权利要求1或2所述的远程批量更新节点固件的方法,其特征在于,所述设定时长的取值范围为[60s,300s]。6.根据权利要求1或2所述的远程批量更新节点固件的方法,其特征在于,步骤C中,所述监控固件更新模式下的节点是否成功接收固件更新包具体为: 接收固件更新模式下的节点回复的ACK ; 对各节点回复的ACK分别计数; 对最近一次下发的固件更新包的包下发次数等于设定的重发次数时,将当前各节点回复的ACK数目分别与最近一次下发的固件更新包的包序号比较,不相等,则该节点接收该最近一次下发的固件更新包失败;否则,接收成功。7.根据权利要求1或2所述的远程批量更新节点固件的方法,其特征在于,步骤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。8.根据权利要求7所述的远程批量更新节点固件的方法,其特征在于,步骤C还包括:接收节点回复的状态包,并采用收到的状态包携带的固件更新模式覆盖发送该状态包的节点的ID在节点信息表中对应的模式字段。9.根据权利要求7所述的远程批量更新节点固件的方法,其特征在于,所述设定的重发次数的取值范围为[In,10η],η为每秒钟发送的固件更新包数。
【专利摘要】本发明涉及一种远程批量更新节点固件的方法,所述远程批量更新节点固件的方法具体包括:网关节点接收上位机发送的固件更新指令和各选中节点的ID;持续下发接收到的固件更新指令和各选中节点的ID,直到监控到在设定时长内选中节点均进入固件更新模式时或超出设定时长时,停止下发固件更新指令和各选中节点的ID;逐包广播固件更新包,监控固件更新模式下的节点是否成功接收固件更新包,并一旦发现未能成功接收固件更新包的节点,即发送返回工作模式命令给该节点。本发明的远程批量更新节点固件的方法,能及时发现节点更新固件失败,并立即使其返回工作模式。
【IPC分类】H04W24/02, H04W84/18
【公开号】CN104980956
【申请号】CN201510365386
【发明人】任俊伟, 路平
【申请人】迈锐数据(北京)有限公司
【公开日】2015年10月14日
【申请日】2015年6月29日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1