首页 / 专利库 / 电脑编程 / 算法 / 一种mesh网络设备的多设备批量固件升级的方法

一种mesh网络设备的多设备批量固件升级的方法

阅读:111发布:2023-12-24

专利汇可以提供一种mesh网络设备的多设备批量固件升级的方法专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种mesh网络设备的多设备批量 固件 升级的方法,它包括:主机生成带标识的固件压缩包,发送至mesh网络的根 节点 设备;根节点设备解压缩固件压缩包,校验固件正确性,并重新打包和压缩,以组播的方式向目标节点设备推送固件;升级固件在mesh网络的传输过程中,支持断点续传;目标节点设备解压缩出固件,对固件标识进行CRC校验,通过后进行固件升级并重启。目标节点设备重启异常则回退至旧版本启动。目标节点设备启动后向主机上报版本,由主机确认升级成功与否。本发明通过压缩和断点续传,减少了固件传输过程中对网络和存储资源的消耗,提高了批量升级的速度;通过固件类型检查和版本回退机制,防止固件和待升级设备不匹配导致设备升级异常。,下面是一种mesh网络设备的多设备批量固件升级的方法专利的具体信息内容。

1.一种mesh网络设备的多设备批量固件升级的方法,用于从主机向处于同一网络中的多个mesh网络设备同时发起并完成所述mesh网络设备的固件升级,其特征在于,包含以下步骤:
步骤1、所述主机生成所述固件,并压缩所述固件,形成固件压缩包;
步骤2、所述主机向当前mesh网络的根节点设备传输所述固件压缩包;所述根节点设备解压缩所述固件压缩包,并校验所述固件是否正确,若校验失败则升级失败,退出升级流程;
步骤3、所述主机向所述根节点设备传输待升级设备列表;所述待升级设备列表包含全部目标节点设备;
步骤4、所述根节点设备检查收到的所述待升级设备列表的正确性,若错误则升级失败,退出升级流程;
步骤5、所述根节点设备向所有所述目标节点设备发送升级状态请求
步骤6、所述目标节点设备在收到所述升级状态请求后,擦除本设备的flash分区中的已有固件,并向所述根节点设备返回丢包情况;
步骤7、所述根节点设备根据收到的所述丢包情况,将所述固件分发至所述目标节点设备;具体包含:
步骤7.1、所述根节点根据收到的所述丢包情况,将所述固件准备成传输数据包;所述传输数据包中包含对所述固件进行数据压缩后的内容;以所述根节点设备为父节点设备;
步骤7.2、所述父节点设备将所述传输数据包分发至所述中间传输节点设备或者所述目标节点设备;
步骤7.3、所述中间传输节点设备或者所述目标节点设备接收所述传输数据包;
步骤7.4如果当前设备是所述中间传输节点设备,那么以当前节点为新的所述父节点设备,跳转至步骤7.2继续;如果当前设备是所述目标节点设备,则跳转到步骤8;
步骤8、所述目标节点设备接收所述传输数据包,解压缩后还原成所述固件,将所述固件写入所述flash分区中;
步骤9、所述目标节点设备标示下一次重启后运行的flash启动分区为新升级固件分区;
步骤10、所述目标节点设备向所述根节点设备发送升级完成信息;
步骤11、所述根节点设备收到所有所述目标节点设备发送的所述升级完成信息后,向所有所述目标节点设备发送重启命令;
步骤12、所述目标节点设备收到所述重启命令后重新启动;
步骤13、启动完成后,所述目标节点设备向所述主机上报自身的当前设备的版本信息;
步骤14、所述主机校验每一个所述目标节点设备发送的所述版本信息,确认所述目标节点设备升级成功与否,完成所述目标节点设备的升级。
2.根据权利要求1所述的多设备批量固件升级的方法,其特征在于,在所述根节点设备将所述固件通过其直接节点设备分发至所述目标节点设备的过程中,支持断点续传;具体如下:
步骤6分解为:
步骤6.1、所述目标节点设备在收到所述升级状态请求后,判断所述本设备是否存在升级断点;若无所述升级断点,或者存在所述升级断点但将要升级所述固件的版本与所述升级断点标及的固件版本不一致,擦除所述本设备的所述flash分区中的所述已有固件;
步骤6.2、所述目标节点设备根据是否存在所述升级断点的信息,以及在所述升级断点存在的情况下,所述升级断点中包含的信息,向所述根节点设备返回丢包情况;
在步骤7中,步骤7.1分解为:
步骤7.1.1、所述根节点设备根据收到的所述丢包情况,确定待传输固件内容;所述待传输固件内容是所述固件一部分或者全部;
步骤7.1.2、所述根节点设备将所述待传输固件以固定大小切分,然后压缩成所述传输数据包,并对所述传输数据包进行序号标识;
步骤8分解为:
步骤8.1a、所述目标节点设备接收所述传输数据包,解压缩后写入所述flash分区中;
步骤8.2a、所述目标节点设备记录所述传输数据包的序号和升级情况,并写入所述flash分区中,形成步骤6.1中的所述升级断点;
步骤8.3a、当所述目标节点设备接收完所有所述传输数据包后,拼接形成完整的所述固件。
3.根据权利要求2所述的多设备批量固件升级的方法,其特征在于,所述步骤8.2a和步骤8.3a之间后插入步骤8.2a’:
步骤8.2a’、所述目标节点设备记录当前已保存但未上报的传输数据包大小;当所述当前已保存但未上报的传输数据包大小达到所述固件大小特定比例的时候,所述目标节点设备向所述父节点设备上报状态,并将所述已保存但未上报的传输数据包的大小清零。
4.根据权利要求3所述的多设备批量固件升级的方法,其特征在于,所述步骤8.2a’中,所述特定比例是10%。
5.根据权利要求1所述的多设备批量固件升级的方法,其特征在于,当所述根节点设备、所述目标节点设备以及所述传输中间设备,在写入所述固件全部内容至所述flash分区后,会主动对所述固件进行校验,具体包含:
将步骤1扩展成:
步骤1.1、所述主机生成所述固件,在所述固件中包含一串固定长度的固件标识;所述固件标识由设备类型和版本号组成;
步骤1.2、所述主机对生成的所述固件进行压缩,形成所述固件压缩包;
将步骤2扩展成:
步骤2.1、所述主机向当前mesh网络的根节点设备传输所述固件压缩包;
步骤2.2、所述根节点设备接收所述固件压缩包;
步骤2.3、所述根节点设备解压缩固件压缩包,并将所述固件写入所述flash分区;
步骤2.4、通过固件校验算法检查所述固件标识的正确性;如果错误,则向主机返回错误;
步骤8分解为:
步骤8.1b、所述目标节点设备接收所述传输数据包,解压缩成所述固件;
步骤8.2b、通过所述固件校验算法检查所述固件标识的正确性;如果错误,向所述父节点设备返回错误,要求重传。
6.根据权利要求5所述的多设备批量固件升级的方法,其特征在于,所述固件校验算法是CRC校验算法;所述固件标识的长度是128个字节。
7.根据权利要求1所述的多设备批量固件升级的方法,其特征在于,所述步骤9分解为:
步骤9.1、所述目标节点设备标示下一次重启后运行的所述flash启动分区为新升级固件分区;
步骤9.2、所述目标节点设备将异常重启次数清零;
所述步骤12分解为:
步骤12.1、所述目标节点设备收到所述重启命令后重新启动;
步骤12.2、启动过程中,所述目标节点设备检测自身状态;如果所述状态异常,所述目标节点设备读取记录的所述异常重启次数;如所述异常重启次数达到预设值,所述目标节点设备标示下一次重启后运行的所述flash启动分区为未升级固件分区;如所述异常重启次数未达到所述预设值,所述目标节点设备标示将所述异常重启次数递增一;所述目标节点设备状态异常时,主动重新启动。
8.根据权利要求1所述的多设备批量固件升级的方法,其特征在于,所述主机是服务器、移动终端或者PC设备。
9.根据权利要求1所述的多设备批量固件升级的方法,其特征在于,所述主机和所述根节点设备的连接方式是串口、I2C、SPI、网线有线、Wi-Fi和蓝牙。
10.根据权利要求1所述的多设备批量固件升级的方法,其特征在于,在步骤1所述的压缩过程中,采用的压缩编码是差分编码、游程编码或者Huffman编码。

说明书全文

一种mesh网络设备的多设备批量固件升级的方法

技术领域

[0001] 本发明涉及无线mesh网络技术领域,特别涉及一种mesh网络设备的多设备批量固件升级的方法。

背景技术

[0002] 现行技术中,mesh网络设备通常使用的是单个设备逐一升级,固件要求一次性从主机传输到待升级设备。这种升级方式,传输过程中一旦有一包数据丢失,则需要重传全部数据,导致升级速度慢,升级成功率低。而且,这种升级方式没有完善的固件检查机制,mesh网络内通常存在多种不同类型的设备,因此容易造成升级的固件和设备不匹配的情况,影响设备的正常工作。
[0003] 中国发明专利CN108347346A(一种mesh网络内设备升级方法),公开了一种利用网络进行mesh设备固件升级的方法。在这个方法中,当待升级设备收到升级命令后,向其父节点而不是直接向根节点请求新固件内容。如果父节点已经保存有新固件,那么就直接发送给待升级设备,从而避免了通过根节点从主机传输新固件,节约了网络流量。如果父节点没有新固件,那么优先向同一父节点下的兄弟节点查询是否存在新固件。当待升级设备兄弟节点和父节点都没有新固件的情况下,则递归的向上一级父节点请求,直到请求到根节点,从而向主机请求新固件。这个升级方式,当mesh网络中大部分节点已经得到了新固件的情况下,可以提升固件传输的效率。但是,此方法中,查询新固件的顺序是从叶子节点向根节点由下向上搜索的。因此,正如该专利自己指出的,如果mesh网络中拥有新固件的设备很少的时候,递归寻找反而会增加获得新固件的时间。因此该专利建议在实施中,应当同时向父节点递归寻找新固件以及直接向根节点请求新固件。
[0004] PCT专利WO2015167321A1(一种在无线网状网络中的固件升级方法)公开了一种方式,包含了3个主要步骤。首先将所有需要升级的设备从网络中寻找出来,然后依据各种参数(如网络信号强度)对这些设备重新组成树状网络,最后从新的树状网络的根节点开始,由上至下推送固件,直到所有的设备全部升级完成。这种升级方式,要求在升级前重组网络,因此对正常工作状态的设备会有影响。另外,这种升级方式依然无法解决传输失败的情况下,固件需要整体传输的问题。

发明内容

[0005] 本发明的目的在于提供一种mesh网络设备的多设备批量固件升级的方法,主要解决上述现有技术存在的问题:减少了固件传输数据的大小、当固件在无线网络中传输中发生丢包的时候无需重新传输、解决了新固件和设备不匹配导致升级失败并使得设备不正确工作的问题。
[0006] 为了实现上述目的,本发明提供了一种mesh网络设备的多设备批量固件升级的方法,用于从主机向处于同一网络中的多个mesh网络设备同时发起并完成所述mesh网络设备的固件升级,其特征在于,包含以下步骤:
[0007] 步骤1、所述主机生成所述固件,并压缩所述固件,形成固件压缩包;
[0008] 步骤2、所述主机向当前mesh网络的根节点设备传输所述固件压缩包;所述根节点设备解压缩所述固件压缩包,并校验所述固件是否正确,若校验失败则升级失败,退出升级流程;
[0009] 步骤3、所述主机向所述根节点设备传输待升级设备列表;所述待升级设备列表包含全部目标节点设备;
[0010] 步骤4、所述根节点设备检查收到的所述待升级设备列表的正确性,若错误则升级失败,退出升级流程;
[0011] 步骤5、所述根节点设备向所有所述目标节点设备发送升级状态请求;
[0012] 步骤6、所述目标节点设备在收到所述升级状态请求后,擦除本设备的flash分区中的已有固件,并向所述根节点设备返回丢包情况;
[0013] 步骤7、所述根节点设备根据收到的所述丢包情况,将所述固件分发至所述目标节点设备;具体包含:
[0014] 步骤7.1、所述根节点根据收到的所述丢包情况,将所述固件准备成传输数据包;所述传输数据包中包含对所述固件进行数据压缩后的内容;以所述根节点设备为父节点设备;
[0015] 步骤7.2、所述父节点设备将所述传输数据包分发至所述中间传输节点设备或者所述目标节点设备;
[0016] 步骤7.3、所述中间传输节点设备或者所述目标节点设备接收所述传输数据包;
[0017] 步骤7.4如果当前设备是所述中间传输节点设备,那么以当前节点为新的所述父节点设备,跳转至步骤7.2继续;如果当前设备是所述目标节点设备,则跳转到步骤8;
[0018] 步骤8、所述目标节点设备接收所述传输数据包,解压缩后还原成所述固件,将所述固件写入所述flash分区中;
[0019] 步骤9、所述目标节点设备标示下一次重启后运行的flash启动分区为新升级固件分区;
[0020] 步骤10、所述目标节点设备向所述根节点设备发送升级完成信息;
[0021] 步骤11、所述根节点设备收到所有所述目标节点设备发送的所述升级完成信息后,向所有所述目标节点设备发送重启命令;
[0022] 步骤12、所述目标节点设备收到所述重启命令后重新启动;
[0023] 步骤13、启动完成后,所述目标节点设备向所述主机上报自身的当前设备的版本信息;
[0024] 步骤14、所述主机校验每一个所述目标节点设备发送的所述版本信息,确认所述目标节点设备升级成功与否,完成所述目标节点设备的升级。
[0025] 进一步地,在所述根节点设备将所述固件通过其直接节点设备分发至所述目标节点设备的过程中,支持断点续传;具体如下:
[0026] 步骤6分解为:
[0027] 步骤6.1、所述目标节点设备在收到所述升级状态请求后,判断所述本设备是否存在升级断点;若无所述升级断点,或者存在所述升级断点但将要升级所述固件的版本与所述升级断点标及的固件版本不一致,擦除所述本设备的所述flash分区中的所述已有固件;
[0028] 步骤6.2、所述目标节点设备根据是否存在所述升级断点的信息,以及在所述升级断点存在的情况下,所述升级断点中包含的信息,向所述根节点设备返回丢包情况;
[0029] 在步骤7中,步骤7.1分解为:
[0030] 步骤7.1.1、所述根节点设备根据收到的所述丢包情况,确定待传输固件内容;所述待传输固件内容是所述固件一部分或者全部;
[0031] 步骤7.1.2、所述根节点设备将所述待传输固件以固定大小切分,然后压缩成所述传输数据包,并对所述传输数据包进行序号标识;
[0032] 步骤8分解为:
[0033] 步骤8.1a、所述目标节点设备接收所述传输数据包,解压缩后写入所述flash分区中;
[0034] 步骤8.2a、所述目标节点设备记录所述传输数据包的序号和升级情况,并写入所述flash分区中,形成步骤6.1中的所述升级断点;
[0035] 步骤8.3a、当所述目标节点设备接收完所有所述传输数据包后,拼接形成完整的所述固件。
[0036] 进一步地,所述步骤8.2a和步骤8.3a之间后插入步骤8.2a’:
[0037] 步骤8.2a’、所述目标节点设备记录当前已保存但未上报的传输数据包大小;当所述当前已保存但未上报的传输数据包大小达到所述固件大小特定比例的时候,所述目标节点设备向所述父节点设备上报状态,并将所述已保存但未上报的传输数据包的大小清零。
[0038] 进一步地,所述步骤8.2a’中,所述特定比例是10%。
[0039] 进一步地,当所述根节点设备、所述目标节点设备以及所述传输中间设备,在写入所述固件全部内容至所述flash分区后,会主动对所述固件进行校验,具体包含:
[0040] 将步骤1扩展成:
[0041] 步骤1.1、所述主机生成所述固件,在所述固件中包含一串固定长度的固件标识;所述固件标识由设备类型和版本号组成;
[0042] 步骤1.2、所述主机对生成的所述固件进行压缩,形成所述固件压缩包;
[0043] 将步骤2扩展成:
[0044] 步骤2.1、所述主机向当前mesh网络的根节点设备传输所述固件压缩包;
[0045] 步骤2.2、所述根节点设备接收所述固件压缩包;
[0046] 步骤2.3、所述根节点设备解压缩固件压缩包,并将所述固件写入所述flash分区;
[0047] 步骤2.4、通过固件校验算法检查所述固件标识的正确性;如果错误,则向主机返回错误;
[0048] 步骤8分解为:
[0049] 步骤8.1b、所述目标节点设备接收所述传输数据包,解压缩成所述固件;
[0050] 步骤8.2b、通过所述固件校验算法检查所述固件标识的正确性;如果错误,向所述父节点设备返回错误,要求重传。
[0051] 进一步地,所述固件校验算法是CRC校验算法;所述固件标识的长度是128个字节。
[0052] 进一步地,所述步骤9分解为:
[0053] 步骤9.1、所述目标节点设备标示下一次重启后运行的所述flash启动分区为新升级固件分区;
[0054] 步骤9.2、所述目标节点设备将异常重启次数清零;
[0055] 所述步骤12分解为:
[0056] 步骤12.1、所述目标节点设备收到所述重启命令后重新启动;
[0057] 步骤12.2、启动过程中,所述目标节点设备检测自身状态;如果所述状态异常,所述目标节点设备读取记录的所述异常重启次数;如所述异常重启次数达到预设值,所述目标节点设备标示下一次重启后运行的所述flash启动分区为未升级固件分区;如所述异常重启次数未达到所述预设值,所述目标节点设备标示将所述异常重启次数递增一;所述目标节点设备状态异常时,主动重新启动。
[0058] 进一步地,所述主机是服务器、移动终端或者PC设备。
[0059] 进一步地,所述主机和所述根节点设备的连接方式是串口、I2C、SPI、网线有线、Wi-Fi和蓝牙。
[0060] 进一步地,在步骤1所述的压缩过程中,采用的压缩编码是差分编码、游程编码或者Huffman编码。
[0061] 鉴于上述技术特征,本发明具有如下优点:
[0062] 在固件传输前,对固件进行压缩,从而减少了固件传输过程中对网络和存储资源的消耗。
[0063] 使用组播的方式,在树状mesh网络中,自上向下推送固件,避免了每一个待升级设备都和主机直接通信,提高了批量升级的速度。
[0064] 支持断点续传机制;当无线网络传输中发生丢包后,无需重传整个固件,而只需要传输尚未成功发送的数据包。
[0065] 添加固件类型检查和版本回退机制,以防止固件和待升级设备不匹配导致设备升级异常。固件类型检查在升级前加以把关,版本回退则可以处理升级过程中的异常导致的固件升级异常(如非正常断电)。附图说明
[0066] 图1是本发明高效mesh网络设备升级方法的网络拓扑图;
[0067] 图2是本发明高效mesh网络设备升级方法的主机和根节点设备的固件传输交互图;
[0068] 图3是本发明高效mesh网络设备升级方法的根节点设备和目标节点设备的固件升级交互图;
[0069] 图4是本发明高效mesh网络设备升级方法的目标节点部署升级固件的流程图
[0070] 其中,1–主机、2–根节点设备、3–目标节点设备、4–主机根节点设备连接、5–mesh网络。

具体实施方式

[0071] 下面结合具体实施方式,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
[0072] 请参阅图1,本发明公开了一种mesh网络设备的多设备批量固件升级的方法,包含了向由主机1发起,更新目标节点设备3的固件,并最后由主机1确认目标节点设备3固件版本的过程。主机1是PC机、移动设备或者服务器等设备,用于提供和准备需要升级的新固件,并发起一次固件升级请求。主机1中物理上,只与目标节点设备3所在的mesh网络5中的根节点设备2建立连接,此连接由主机根节点设备连接4提供。主机根节点设备连接4包含串口、I2C、SPI、网线有线、Wi-Fi和蓝牙。
[0073] mesh网络设备升级,包含三个阶段,第一个阶段是主机向mesh网络的根节点设备推送升级固件和待升级设备列表,第二个阶段是根节点设备根据待升级设备列表中的信息,向目标节点推送升级固件,目标节点接收并保存升级固件,第三个阶段是目标节点通过重启的方式,完成升级固件的部署,正式采用升级后的固件开始工作。
[0074] 请参阅图2,mesh网络升级的第一个阶段,由主机发起开始至根节点设备向目标节点发送升级请求结束,具体步骤包含:
[0075] 步骤1.1、主机生成固件,在固件中包含一串长度为128个字节的固件标识;固件标识包含设备类型和版本号等信息。
[0076] 步骤1.2、主机对生成的固件进行压缩,生成压缩固件包,采用的压缩算法包括差分编码、游程编码或者Huffman编码。
[0077] 步骤2.1、主机通过mesh网络的根节点设备传输压缩固件包。
[0078] 步骤2.2、根节点设备接收压缩固件包,并解压缩出固件。
[0079] 步骤2.3、根节点设备通过固件校验算法检查固件中的固件标识的正确性;如果错误,则向主机返回错误,退出升级。固件校验算法是CRC校验算法。
[0080] 步骤3、主机向根节点设备传输待升级设备列表;待升级设备列表包含全部目标节点设备的标识。
[0081] 步骤4、根节点设备检查收到的待升级设备列表的正确性,若错误则升级失败,退出升级流程。
[0082] 步骤5、根节点设备向待升级设备列表中的所有目标节点设备发送升级状态请求。
[0083] 请参阅图3,mesh网络升级的第二个阶段,由待升级目标设备收到升级情况开始至目标节点准备部署固件结束,具体步骤包含:
[0084] 步骤6.1、目标节点设备接收来自根节点的升级状态请求。
[0085] 步骤6.2、目标节点设备判断本设备是否存在升级断点;若无升级断点进入步骤6.5,否则进入6.3。
[0086] 步骤6.3、目标节点设备判断要升级的固件版本与已存在的升级断点保存的固件版本是否一致,如果不一致进入步骤6.4,否则进入步骤6.6。
[0087] 步骤6.4、目标节点设备擦除本设备的升级断点信息。
[0088] 步骤6.5、目标节点设备擦除本设备的flash分区中的已有固件。
[0089] 步骤6.6、目标节点设备根据是否存在升级断点的信息,以及在升级断点存在时,升级断点中包含的信息,准备断点信息(如果有)和丢包信息。
[0090] 步骤6.7、目标节点设备向根节点设备返回丢包情况。
[0091] 步骤7、根节点设备根据收到的丢包情况,将固件分发至目标节点设备;具体包含:
[0092] 步骤7.1.1、根节点设备根据收到的丢包情况,确定待传输固件内容;根据丢包情况的不同,待传输固件内容是固件一部分或者全部。
[0093] 步骤7.1.2、根节点设备将待传输固件以固定大小切分,然后压缩成传输数据包,并对每一个传输数据包进行序号标识。并标识根节点设备为父节点设备。
[0094] 步骤7.2、父节点设备将传输数据包分发至中间传输节点设备或者目标节点设备。如果被传输设备是中间传输节点设备,那么以被传输节点为新的父节点设备,跳转至步骤
7.2继续;如果被传输设备是目标节点设备,则跳转到步骤8;
[0095] 步骤8.1、目标节点设备接收传输数据包,将收到的传输数据包解压缩后,写入flash分区中。
[0096] 步骤8.2、目标节点设备记录传输数据包的序号和升级情况,并写入flash分区中,形成步骤6.2中的升级断点,用以记录已经正确接收的传输数据包信息。
[0097] 步骤8.3、目标节点设备更新当前已保存但未上报的传输数据包大小,并判断当前在当前已保存但未上报的传输数据包大小是否达到整个固件大小10%。如果达到则进入步骤8.4,否则跳转到步骤8.1继续接收后续传输数据包。
[0098] 步骤8.4、目标节点设备通过其父节点设备上报状态(包含已保存的传输包大小信息),并将已保存但未上报的传输数据包大小清零。
[0099] 步骤8.5、目标节点设备判断是否已经接收完所有传输数据包,如果未接收完则跳转到步骤8.1继续接收后续传输数据包。
[0100] 步骤8.6、目标节点设备通过固件校验算法(CRC校验算法)检查固件标识的正确性。如果错误,向父节点设备返回错误,要求重传,并跳转到步骤8.1等待接收重传的传输数据包;否则进入步骤8.7。
[0101] 步骤8.7、目标节点设备标示下一次重启后运行的flash分区为新升级固件分区,将异常重启次数清零,准备开始部署新固件。
[0102] 请参阅图4,mesh网络升级的第三个阶段,由待升级目标设备发送升级完成信息开始至主机检查目标设备上报的部署固件的版本号结束,具体步骤包含:
[0103] 步骤9、目标节点设备向根节点设备发送升级完成信息,表示自身已经完成新固件的接受和烧录,做好了部署的准备。
[0104] 步骤10、根节点设备汇总来自每一个目标节点的升级信息,判断是否全部目标节点完成部署准备。如果全部目标节点完成了部署准备,则进入步骤11,否则进入步骤5,向没有完成部署准备的目标节点推送固件。
[0105] 步骤11、根节点设备向所有目标节点设备发送重启命令,开始部署新固件。
[0106] 步骤12.1、目标节点设备收到重启命令后重新启动;
[0107] 步骤12.2、启动过程中,目标节点设备检测自身状态。
[0108] 如果状态异常,目标节点设备读取记录的异常重启次数。如异常重启次数达到预设值,目标节点设备标识下一次重启后运行的flash分区为未升级固件分区。如异常重启次数未达到预设值,则将异常重启次数递增一后保存。目标节点设备状态异常时,主动再次重新启动,并在再次重启的过程中进入步骤12.2,检测自身状态。
[0109] 步骤13、启动状态正常的情况下,待启动完成后,目标节点设备通过父节点设备(包含根节点设备)逐级上报,最后通知主机自身的当前运行的固件版本信息。
[0110] 步骤14、主机校验每一个目标节点设备发送的固件版本信息是否和步骤1.1中生成的固件的版本一致。如果一致则确认目标节点设备升级成功,反之确认目标节点升级失败。无论成功失败,本次固件升级流程结束。
[0111] 本实施例中的mesh网络设备,都具有分区表来定义该mesh网络设备的flash布局。本实施例中,flash的大小为4M字节,且全部的mesh网络设备被分为两类,各自具有不同的分区表类型。具体而言,一种是无factory分区的分区表,一种是有factory分区的分区表。
其中,无factory分区的分区表包含OTA_0和OTA_1两个和固件升级相关的分区。有factory分区的分区表包含OTA_、OTA_1和factory分区三个和升级固件相关的分区。分区表本身,不能通过固件升级的方式进行升级,而是必须采用其他方式,先擦除整个flash,然后重写分区表。
[0112] 其中,OTA_0和OTA_1分区联合使用,实现了mesh网络设备的版本回退机制。默认OTA_0为活动分区,即目标节点设备从OTA_0分区上完成启动,而OTA_1为非活动分区。固件升级过程中,OTA_0和OTA_1分区状态变更的流程为:
[0113] 步骤1、固件升级开始,目标节点设备识别并擦除非活动分区。
[0114] 步骤3、新的固件将写入非活动分区。
[0115] 步骤4、固件写入完毕,开始进行验证。
[0116] 步骤5、固件升级成功,非活动分区已更新,并指示非活动现在是活动分区。
[0117] 步骤6、下次启动时,固件将从此分区启动。重新启动后,活动分区和非活动分区完成切换。
[0118] 步骤7、检查当前非活动分区是否完成升级。如果没有,重复步骤1至6,完成当前非活动分区的升级。
[0119] 在根节点设备采用有factory分区的分区表的情况下,factory分区被根节点设备作为升级固件压缩包的缓冲区,用于存放来自主机的固件压缩包,也是后续向目标节点设备推送固件压缩包的基础。在根节点设备采用无factory分区的分区表的情况下,OTA_0或者OTA_1中的非活动分区,会被作为固件压缩包的缓冲区。在这种情况下,如果根节点设备遇到版本回退的情况,版本回退后的固件可能不是原来的版本。
[0120] 以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈