CN110362323A - 基于分布式自组网的嵌入式终端设备程序更新方法 - Google Patents
基于分布式自组网的嵌入式终端设备程序更新方法 Download PDFInfo
- Publication number
- CN110362323A CN110362323A CN201811562836.5A CN201811562836A CN110362323A CN 110362323 A CN110362323 A CN 110362323A CN 201811562836 A CN201811562836 A CN 201811562836A CN 110362323 A CN110362323 A CN 110362323A
- Authority
- CN
- China
- Prior art keywords
- node
- user program
- program
- adjacent
- update source
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于分布式自组网的嵌入式终端设备程序更新方法,涉及嵌入式设备领域,该方法采用TCP/IP网络传输+串行通信的组合通信模式,可实现对嵌入式终端设备的远程在线程序更新,以中心节点为核心,基于分布式自组网数据传输架构,避免了传统的单点升级模式带来的效率低下、容易出错等问题,有效减小了中心节点的负载,提升了嵌入式终端设备的升级效率,提高了容错性,保证平滑升级,而且可以便于大批量、多规格的嵌入式终端设备的程序更新升级。
Description
技术领域
本发明涉及嵌入式设备领域,尤其是一种基于分布式自组网的嵌入式终端设备程序更新方法。
背景技术
以嵌入式微处理器为核心的各种嵌入式终端设备的应用目前正在呈几何式增长,在嵌入式终端设备的实际应用中,随着需求的变化和功能的完善,往往会涉及到对嵌入式微处理器用户软件的下载及更新升级。
在各种嵌入式终端设备中,以智能手机为典型的一类嵌入式终端设备采用了内置通信协议的专用微处理器,因此这类设备可以通过OTA技术(Over-The-Air technology,空中下载技术)实现用户软件的随时随地自主升级。以工业自动化设备为典型的另一类嵌入式终端设备则不具备这样的功能,因此对于这一类设备的用户软件下载及更新升级通常需要专门的工程师到设备的运行现场,采用JTAG通信方法进行现场下载调试,这也是目前针对这类设备的下载及更新升级的常规解决方式,但是这样的解决方式存在以下问题:
(1)、软件下载及更新升级过程中若发生网络中断或终端设备断电等意外情况,则往往导致软件传输不完整,致使终端设备死机,不能再正常工作。
(2)、目前这种传统方法采用的是单点升级的模式,需要专门的工程师确认所需升级对象的产品规格以及软件版本等信息,对人工的依赖性较强,也容易出错,而且当产品规格、品种和数量繁多时,工程师的人工确认的工作量很大,导致效率比较低,因此传统方法是不便于大批量、多规格终端设备的升级管理的。
(3)、大部分的嵌入式终端设备都是装配在电气控制柜中,接线复杂、拆装不便,因此都是由工程师到设备的运行现场进行现场的下载调试,较不便捷和效率也较低。另外,JTAG连接线长度有限,当终端设备的运行环境比较复杂时,不利于JTAG连接线的插拔连接,即使将JTAG连接线连上了,有些终端设备的安装高度过高或过低时,就需要工程师攀爬到高处或蹲在低处进行下载调试,调试过程中的安全性难以保证,也不方便工程师长时间调试。
发明内容
本发明人针对上述问题及技术需求,提出了一种基于分布式自组网的嵌入式终端设备程序更新方法,该方法采用TCP/IP网络传输+串行通信的组合通信模式,可实现对嵌入式终端设备的远程在线程序更新,提升嵌入式终端设备的升级效率。
本发明的技术方案如下:
一种基于分布式自组网的嵌入式终端设备程序更新方法,该方法包括:
区域节点与中心节点建立通信连接,中心节点在检测到有新版本用户程序时基于TCP/IP协议向区域节点发送标志位信息,标志位信息用于提示有新版本用户程序供下载;区域节点根据接收到的标志位信息基于TCP/IP协议从中心节点中下载新版本用户程序;
中继节点连接至少一个区域节点,中继节点根据预设的分布传输更新算法在相连的区域节点中选择更新源,更新源中下载有新版本用户程序,中继节点基于TCP/IP协议从中继节点的更新源中下载新版本用户程序;中继节点下载完成新版本用户程序后,向连接的嵌入式终端设备发送程序更新标识,嵌入式终端设备包括嵌入式微处理器以及与嵌入式微处理器相连的外围硬件电路以及串行通信接口,嵌入式微处理器中包括BootLoader程序、初始用户程序以及程序缓存区,嵌入式终端设备通过串行通信接口与中继节点相连,中继节点与嵌入式终端设备之间基于串行通信协议进行通信;
嵌入式终端设备启动时执行BootLoader程序,BootLoader程序进行初始化并跳转至初始用户程序执行,初始用户程序检测到中继节点发送的程序更新标识时,通过串行通信接口从中继节点中下载新版本用户程序并存储至程序缓存区;在下载完成新版本用户程序后,初始用户程序在RAM的预定区域写入预定标志,并向中继节点返回下载完成应答;
中继节点接收到嵌入式终端设备返回的下载完成应答后,通过串行通信接口向嵌入式终端设备发送重启指令,嵌入式终端设备根据接收到的重启指令进行重启后执行BootLoader程序,BootLoader程序检测到RAM的预定区域写有预定标志时,将初始用户程序擦除,BootLoader程序对程序缓存区中的新版本用户程序进行解析并将解析后的新版本用户程序写入FLASH,解析并写入完成后清除RAM的预定区域的预定标志,并跳转至新版本用户程序执行。
其进一步的技术方案为,区域节点还连接有至少一个更新节点,更新节点是下载有新版本用户程序的其他的区域节点,则方法还包括:
区域节点根据预设的分布传输更新算法在相连的中心节点和各个更新节点中选择更新源;
若区域节点的更新源为中心节点,则执行区域节点根据接收到的标志位信息基于TCP/IP协议从中心节点中下载新版本用户程序的步骤;
若区域节点的更新源为更新节点,则区域节点根据接收到的标志位信息基于TCP/IP协议从更新节点中下载新版本用户程序。
其进一步的技术方案为,对于任意一个当前节点,当前节点执行预设的分布传输更新算法选择更新源,包括:
当前节点获取各个相邻节点的节点信息,当前节点是中心节点、区域节点和中继节点中的任意一个设备;相邻节点的节点信息至少包括相邻节点的设备地址、设备类型、设备网络信息以及用户程序版本信息,设备地址包括相邻节点的网络接口地址,设备类型用于指示相邻节点为中心节点或区域节点或中继节点,设备网络信息至少包括相邻节点的网络链路带宽和网络延迟,用户程序版本信息用于指示相邻节点中当前存储的用户程序的版本信息;
当前节点根据相邻节点的节点信息与当前节点自身的节点信息按照预设算法计算与相邻节点之间的路径开销;
确定最小的路径开销对应的相邻节点为当前节点的更新源。
其进一步的技术方案为,当前节点根据相邻节点的节点信息与当前节点自身的节点信息按照预设算法计算与相邻节点之间的路径开销,包括对于当前节点的任意一个相邻节点:
当前节点根据相邻节点的用户程序版本信息以及当前节点自身的用户程序版本信息检测相邻节点中存储的用户程序是否不旧于自身存储的用户程序,若相邻节点中存储的用户程序旧于自身存储的用户程序,则直接确定相邻节点不是当前节点的更新源并结束流程;
若相邻节点中存储的用户程序不旧于自身存储的用户程序,则当前节点根据相邻节点的设备网络信息计算当前节点与相邻节点之间的网络链路权重,计算公式为D(x,n)=1000Wn+dn,其中,D(x,n)表示当前节点x与相邻节点n之间的网络链路权重,Wn表示相邻节点n的网络链路带宽且参数单位为Mbs,dn表示相邻节点n的网络延迟且参数单位为μs;
当前节点根据相邻节点的设备类型以及用户程序版本信息以及自身的设备类型以及用户程序版本信息计算当前节点与相邻节点之间的设备及程序权重,计算公式为其中,f(x,ns,nt)表示当前节点x与相邻节点n之间的设备及程序权重,ns表示相邻节点n的用户程序版本信息,nt表示相邻节点n的设备类型,xs表示当前节点x的用户程序版本信息,xt表示当前节点x的设备类型;xs-ns表示相邻节点n与当前节点x之间的用户程序版本差异值;其中,节点为中心节点时对应的的设备类型为0,节点为区域节点时对应的设备类型为1,节点为中继节点时对应的设备类型为-1;
若当前节点与相邻节点之间的设备及程序权重f(x,ns,nt)<0,则直接确定相邻节点不是当前节点的更新源并结束流程;
若当前节点与相邻节点之间的设备及程序权重f(x,ns,nt)≥0,则计算D(x,n)*f(x,ns,nt)确定当前节点与相邻节点之间的路径开销。
其进一步的技术方案为,确定最小的路径开销对应的相邻节点为当前节点的更新源,包括:
确定最小的路径开销对应的相邻节点为当前节点的主更新源,确定次小的路径开销对应的相邻节点为当前节点的备更新源;
则中继节点基于TCP/IP协议从中继节点的更新源中下载新版本用户程序,包括:
中继节点检测到与中继节点的主更新源之间的通信连接可靠时,从中继节点的主更新源中下载新版本用户程序;
中继节点检测到与中继节点的主更新源之间的通信连接断开时,检测中继节点与中继节点的备更新源之间的通信连接是否可靠;
当中继节点检测到包括备更新源且与中继节点的备更新源之间的通信连接可靠时,中继节点从中继节点的备更新源中下载新版本用户程序;
当中继节点检测到不包括备更新源,或者,检测到与中继节点的备更新源之间的通信连接不可靠时,中继节点重新根据预设的分布传输更新算法在相连的区域节点中确定更新源。
其进一步的技术方案为,中继节点与嵌入式终端设备之间通过数据帧进行数据传输,数据帧包括依次包括目标地址字段、控制信息字段、数据长度字段、有效数据字段以及校验码字段;目标地址字段占1字节长度且包含数据帧的接收端的设备地址;控制信息字段占1字节长度且包含数据帧的数据类型,数据类型用于指示数据帧传输的有效数据为握手信号、程序更新标识、应答信号或新版本用户程序;数据长度字段占2字节长度且包含有效数据字段占用的字节数,有效数据字段占可变字节长度且包含待传输的有效数据,校验码字段占2字节长度且包含待传输的有效数据的CRC校验结果。
本发明的有益技术效果是:
1、本申请公开了一种基于分布式自组网的嵌入式终端设备程序更新方法,该方法采用TCP/IP网络传输+串行通信的组合通信模式,可实现对嵌入式终端设备的远程在线程序更新,以中心节点为核心,基于分布式自组网数据传输架构,避免了传统的单点升级模式带来的效率低下、容易出错等问题,有效减小了中心节点的负载,提升了嵌入式终端设备的升级效率,提高了容错性,保证平滑升级,而且可以便于大批量、多规格的嵌入式终端设备的程序更新升级。
2、在本申请公开的更新方法中,实现了主、备多个更新源的选举,保证程序更新的安全和稳定。
3、在嵌入式终端设备中,实现用户程序缓存模式对程序升级数据的保存,确保升级数据下载完整后再由BootLoader进行用户程序升级,避免传统的直接升级模式下,由于网络中断或设备断电等意外情况发生时,导致的文件传输不完整,造成终端设备死机,必须返回原厂维修的问题。
附图说明
图1是本申请公开的基于分布式自组网的嵌入式终端设备程序更新方法的网络架构图。
图2是嵌入式终端设备的架构示意图。
图3是初始用户程序的执行流程图。
图4是BootLoader程序的执行流程图。
图5是节点的下载新版本用户程序部分的流程图。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步说明。
本申请公开了一种基于分布式自组网的嵌入式终端设备程序更新方法,由中心节点、区域节点和中继节点进行分布式自组网,然后由通过该网络架构为嵌入式终端设备提供远程的程序更新。中心节点、区域节点和中继节点形成的网络架构如图1所示,网络架构中包括一个中心节点、m个区域节点以及n个中继节点,m和n都为正整数,通常情况下,m≥2且n≥2,图1以m=4、n=5为例,中心节点分别连接m个区域节点,m个区域节点之间分别相连,图1以各个区域节点依次连接为例,实际也可以是每个区域节点分别与其他各个区域节点均相连的结构。每个中继节点都连接区域节点,优选的,每个中继节点连接至少两个区域节点甚至连接所有m个区域节点,如图1所示。嵌入式终端设备连接在图1所示的网络结构的末端,也即每个嵌入式终端设备分别连接到一个中继节点,嵌入式终端设备的结构示意图请参考图2,嵌入式终端设备包括嵌入式微处理器以及与嵌入式微处理器相连的外围硬件电路以及串行通信接口,嵌入式微处理器包括硬件层和软件层,其软件层主要包括BootLoader程序、初始用户程序以及程序缓存区,BootLoader程序由工程师通过JTAG或ISP模式烧入FLASH中固化,初始用户程序也存储在FLASH中,但可以通过JTAG或ISP模式烧入,也支持由BootLoader程序控制烧录。外围硬件电路根据实际情况配置,本申请不作详细介绍,嵌入式终端设备实际还可以包括其他更多的组成部分,嵌入式微处理器的架构实际也比本申请公开的结构更为复杂,但嵌入式微处理器的架构是本领域技术人员都知道的,因此本申请不对其各部分进行详细说明,仅公开本申请设计到的部分。
结合图1和图2,在本申请中,中心节点与区域节点之间、各个区域节点之间,以及区域节点与中继节点之间都可以建立一对多的关系且两两之间基于TCP/IP协议进行通信。中继节点与嵌入式终端设备之间通常是建立一对一的关系,且两者之间基于串行通信协议进行通信,本申请中的各个节点的含义如下:
中心节点一般位于产品开发商处,产品开发商可以在中心节点处发布嵌入式终端设备的用户程序,中心节点通常实现为机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)。
区域节点一般位于嵌入式终端设备的应用者处,其在中心节点与中继节点起到中转站的作用,区域节点通常实现为个人计算机、台式计算机或膝上型计算机,实际也可以是服务器。
中继节点位于该网络架构的末端,是区域节点向嵌入式终端设备进行数据传输的中转设备,可以将网络架构部分的TCP/IP通信以及嵌入式终端设备部分的串行通信进行有效的连通。中继节点通常是市售的中继器。
本申请中的中心节点、区域节点和中继节点在接入网络架构时,会通过固定端口(通常是8900端口)每隔预定时间向自身的所有相邻节点组播自身的节点信息,对于任意一个节点来说,其组播的自身的节点信息至少包括该节点的设备地址、设备类型、设备网络信息以及用户程序版本信息。其中,节点的设备地址包括网络接口地址。节点的设备类型用于指示该节点为中心节点或区域节点或中继节点,在本申请中定义如下:当节点为中心节点时,其对应的设备类型为0;当节点为区域节点时,其对应的设备类型为1;当节点为中继节点时,其对应的设备类型为-1。节点的设备网络信息至少包括该节点的网络链路带宽和网络延迟。节点的用户程序版本信息用于指示相邻节点中当前存储的用户程序的版本信息,用户程序版本信息至少包括用户版本的版本号。
结合图1和图2,本申请公开的基于分布式自组网的嵌入式终端设备程序更新方法如下:
步骤S01,当需要对嵌入式终端设备的用户程序进行更新时,产品开发商在中心节点上发布新版本用户程序,中心节点通过TCP/IP通道向连接的所有区域节点发送标志位信息,该标志位信息用于提示有新版本用户程序供下载,标识位信息的具体形式可以自定义。区域节点在接收到标志位信息后,基于TCP/IP协议从中心节点中下载新版本用户程序,至此,中心节点已经将新版本用户程序发布给了区域节点。
考虑到实际应用时,区域节点的数量是非常庞大的,如果所有的区域节点都从中心节点下载新版本用户程序,那么会给中心节点造成很大的运行负荷,同时可靠性也较低。而且实际上,通常不是所有区域节点都会同时在线下载新版本用户程序的,因此在本申请中,对于先下载完成的区域节点,当其从中心节点上下载完成新版本用户程序后,可以替代中心节点为其他还未下载的区域节点提供新版本用户程序的下载,也即在本申请中,区域节点可能是从中心节点处下载新版本用户程序,也可能是从相连的区域节点处下载新版本用户程序,因此区域节点在下载之前,需要先按照本申请预设的分布传输更新算法确定自己的更新源,方法如下:
如上所述,各个节点在运行过程中会向相邻节点组播自身的节点信息,那么对应的,每个节点同样会收集到相邻节点的节点信息。因此对于任意一个当前节点来说,可以根据收集到的相邻节点的节点信息和当前节点自身的节点信息按照预设算法计算与各个相邻节点之间的路径开销,计算过程如下:
(1)、当前节点根据相邻节点的用户程序版本信息以及当前节点自身的用户程序版本信息检测相邻节点中存储的用户程序是否不旧于自身存储的用户程序。如上所述,用户程序版本信息至少包括用户程序的版本号,而版本号的命名方式则是有固定的格式的,因此通过比较两个版本号就能确定用户程序的新旧。比如按照版本号的通用命名格式来说,版本号为1.0的用户程序旧于版本号为1.1的用户程序。
(2)、若相邻节点中存储的用户程序旧于自身存储的用户程序,则直接确定该相邻节点不是当前节点的更新源,不再进行路径开销的计算并结束流程。
(3)、若相邻节点中存储的用户程序不旧于自身存储的用户程序,则当前节点根据相邻节点的设备网络信息计算当前节点与相邻节点之间的网络链路权重。计算公式为D(x,n)=1000/Wn+dn。其中,D(x,n)表示当前节点x与相邻节点n之间的网络链路权重,Wn表示相邻节点n的网络链路带宽且参数单位为Mb/s,dn表示相邻节点n的网络延迟且参数单位为μs,1000表示以千兆网络为参考进行计算。
(4)、当前节点根据相邻节点的设备类型以及用户程序版本信息以及自身的设备类型以及用户程序版本信息计算当前节点与相邻节点之间的设备及程序权重。计算公式为其中,f(x,ns,nt)表示当前节点x与相邻节点n之间的设备及程序权重,ns表示相邻节点n的用户程序版本信息,nt表示相邻节点n的设备类型,xs表示当前节点x的用户程序版本信息,xt表示当前节点x的设备类型。xs-ns表示相邻节点n与当前节点x之间的用户程序版本差异值,这种差异值通常也可以由两个用户程序的版本号进行计算,而主版本号的差异的权重通常大于子版本的差异的权重,子版本号的差异的权重大于修正版本号的差异的权重。比如用户程序的版本号包括主版本号和子版本号,则可以定义用户程序版本差异值=10*主版本号的差异+子版本号的差异,那么版本号1.0与版本号1.1之间的用户程序版本差异值为1,而定义版本号1.0与版本号2.0之间的用户程序版本差异值为10。
当计算得到的设备及程序权重f(x,ns,nt)<0时,直接确定该相邻节点不是当前节点的更新源,不再进行路径开销的计算并结束流程。当计算得到的设备及程序权重f(x,ns,nt)≥0时,执行下列(5)。
(5)、计算D(x,n)*f(x,ns,nt)确定当前节点与相邻节点之间的路径开销。
利用上述(1)-(5)可以计算得到与各个相邻节点之间的路径开销,路径开销越小优先级越高,也即选择最小的路径开销对应的相邻节点作为当前节点的更新源。
区域节点在使用上述方法确定了自己的更新源后,从更新源下载新版本用户程序,区域节点的更新源是中心节点或其他区域节点。这样减轻了中心节点的负担,同时也缩短了下载时间。
步骤S02,中继节点根据预设的分布传输更新算法在相连的区域节点中选择自己的更新源,并基于TCP/IP协议从自身的更新源中下载新版本用户程序。中继节点选择自身更新源的方法与区域节点选择自身更新源的方法是类似的,详细内容见上,此处不再赘述。
中继节点下载完成新版本用户程序后,通过通用串行接口向连接的嵌入式终端设备发送程序更新标识,该程序更新标识用于提示嵌入式终端设备需要进行用户程序的更新。
步骤S03,嵌入式终端设备启动时执行BootLoader程序,BootLoader程序自动执行嵌入式微处理器寄存器和硬件接口的初始化,然后跳转到初始用户程序执行。嵌入式终端设备在接收到中继节点发送的程序更新标识后,通过串行通信接口从中继节点中下载新版本用户程序并存储至程序缓存区。在下载完成新版本用户程序后,初始用户程序在RAM的预定区域写入预定标志,预定区域和预定标志都可以自定义,本申请利用了嵌入式微处理器的RAM在通电情况下数据不丢失的原理,在RAM的特定的地址写预定标志留出了预定区域,本申请中的预定标志为0xA55A,因此RAM留出的预定区域由两字节组成。若新版本用户程序接收不完整则不写入预定标志,确保设备正常运行。然后初始用户程序可以继续执行其他功能逻辑,同时嵌入式终端向中继节点返回下载完成应答,下载完成应答表示新版本用户程序已经下载完成。初始用户程序的执行流程请参考图3。
步骤S04,中继节点接收到嵌入式终端设备返回的下载完成应答后,通过串行通信接口向嵌入式终端设备发送重启指令,重启指令指示嵌入式终端设备重启。嵌入式终端设备在接收到重启指令后,在检测到无任务运行时进行自重启,同样的,重启后执行BootLoader程序,BootLoader程序自动执行嵌入式微处理器寄存器和硬件接口的初始化,此时BootLoader程序会检测到RAM的预定区域写有预定标志,则判断用户程序更新已就绪,此时BootLoader程序将初始用户程序从FLASH中擦除,然后BootLoader程序对程序缓存区中的新版本用户程序进行解析并将解析后的新版本用户程序写入用户程序FLASH地址空间,解析并写入完成后,BootLoader程序就已经把初始用户程序更新为程序缓存区中的新版本用户程序了,此时BootLoader程序清除RAM的预定区域的预定标志,避免下次复位重启时再次进入更新状态。BootLoader程序还会执行一些诸如重新定义中断向量表寄存器之类的配套操作,本申请不详细赘述。然后BootLoader程序就会跳转至新版本用户程序执行,完成用户程序的更新,新版本用户程序开始进行功能逻辑的控制。BootLoader程序的执行流程请参考图4。需要说明的是,实际BootLoader程序在每次初始化完成后都会去检测RAM的预定区域是否写有预定标志,本申请省略了检测这一步骤。
另外,在本申请中,无论嵌入式终端设备是否更新成功,其都可以向中继节点反馈应答信号提示更新完成或更新失败,中继节点将应答信号转发给区域节点,区域节点再转发给中心节点,从而就能使中心节点确定各个嵌入式终端设备的更新结果。
中继节点与嵌入式终端设备之间利用数据帧进行数据传输,数据帧包括依次包括目标地址字段、控制信息字段、数据长度字段、有效数据字段以及校验码字段。其中,目标地址字段占1字节长度,因此可以支持最多256个不同设备之间的串行通信,目标地址字段包含数据帧的接收端的设备地址,接收端在接收到数据帧后会判断该地址与自身的设备地址是否一致。控制信息字段占1字节长度且包含数据帧的数据类型,数据类型用于指示数据帧传输的有效数据为握手信号、程序更新标识、应答信号或新版本用户程序,控制信息字段的格式如下所示:
其中,控制类型和数据类型的定义如下:
数据长度字段占2字节长度且包含有效数据字段占用的字节数,不包含目标地址字段、控制信息字段、数据长度字段和校验码字段所占用的字节。按先低字节后高字节顺序排列,支持最多65536个字节长度的数据传输,满足多数嵌入式终端设备的软件容量需求,特殊情况可以扩展数据长度字段占用的字节数。有效数据字段占可变字节长度且包含待传输的有效数据,多字节的数据按先低字节后高字节的顺序排列。校验码字段占2字节长度且包含待传输的有效数据的CRC(循环冗余校验)校验结果,为了校验数据在传输过程中是否出现错误,仅仅有效数据部分参数CRC校验运算,目标地址字段、控制信息字段、数据长度字段和校验码字段中的内容不参与校验运算。
可选的,本申请还进一步提供如下方案,对于区域节点或中继节点来说,其在确定自身的更新源时会确定一个主更新源和一个备更新源,具体的,在应用上述分布传输更新算法计算得到与各个相邻节点的路径开销后,确定最小的路径开销对应的相邻节点为当前节点的主更新源,确定次小的路径开销对应的相邻节点为当前节点的备更新源。则参考图5,节点在下载新版本用户程序时,首选从自身的主更新源下载,也即当节点与主更新源之间的通信连接可靠时,从主更新源中下载新版本用户程序。当与主更新源之间的通信连接断开时,比如主更新源掉线或死机时,将备更新源提升为主更新源,然后从备更新源下载新版本用户程序。若节点没有备更新源或者节点检测到与备更新源之间的通信连接也断开了,则节点进入查询模式:节点向相邻节点发送查询信号,查询信号用于向相邻节点查询是否有可供下载的新版本用户程序,相邻节点若此时已经下载完成了新版本用户程序则会向节点返回更新准备响应,节点接收到更新准备响应后,重新根据预设的分布传输更新算法从返回更新准备响应的相邻节点选择更新源然后下载,流程与上述方法类似。节点若未接收到更新准备响应,则确定不存在更新源,等待主更新源/备更新源恢复或者等待新的更新源出现。
以上所述的仅是本申请的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。
Claims (6)
1.一种基于分布式自组网的嵌入式终端设备程序更新方法,其特征在于,所述方法包括:
区域节点与中心节点建立通信连接,所述中心节点在检测到有新版本用户程序时基于TCP/IP协议向所述区域节点发送标志位信息,所述标志位信息用于提示有新版本用户程序供下载;所述区域节点根据接收到的所述标志位信息基于TCP/IP协议从所述中心节点中下载所述新版本用户程序;
中继节点连接至少一个区域节点,所述中继节点根据预设的分布传输更新算法在相连的区域节点中选择更新源,所述更新源中下载有所述新版本用户程序,所述中继节点基于TCP/IP协议从所述中继节点的更新源中下载所述新版本用户程序;所述中继节点下载完成所述新版本用户程序后,向连接的嵌入式终端设备发送程序更新标识,所述嵌入式终端设备包括嵌入式微处理器以及与所述嵌入式微处理器相连的外围硬件电路以及串行通信接口,所述嵌入式微处理器中包括BootLoader程序、初始用户程序以及程序缓存区,所述嵌入式终端设备通过所述串行通信接口与所述中继节点相连,所述中继节点与所述嵌入式终端设备之间基于串行通信协议进行通信;
所述嵌入式终端设备启动时执行BootLoader程序,BootLoader程序进行初始化并跳转至所述初始用户程序执行,所述初始用户程序检测到所述中继节点发送的所述程序更新标识时,通过所述串行通信接口从所述中继节点中下载所述新版本用户程序并存储至所述程序缓存区;在下载完成所述新版本用户程序后,所述初始用户程序在RAM的预定区域写入预定标志,并向所述中继节点返回下载完成应答;
所述中继节点接收到所述嵌入式终端设备返回的所述下载完成应答后,通过所述串行通信接口向所述嵌入式终端设备发送重启指令,所述嵌入式终端设备根据接收到的所述重启指令进行重启后执行BootLoader程序,BootLoader程序检测到RAM的预定区域写有所述预定标志时,将所述初始用户程序擦除,BootLoader程序对所述程序缓存区中的所述新版本用户程序进行解析并将解析后的所述新版本用户程序写入FLASH,解析并写入完成后清除RAM的所述预定区域的所述预定标志,并跳转至所述新版本用户程序执行。
2.根据权利要求1所述的方法,其特征在于,所述区域节点还连接有至少一个更新节点,所述更新节点是下载有所述新版本用户程序的其他的区域节点,则所述方法还包括:
所述区域节点根据预设的分布传输更新算法在相连的所述中心节点和各个所述更新节点中选择更新源;
若所述区域节点的更新源为所述中心节点,则执行所述区域节点根据接收到的所述标志位信息基于TCP/IP协议从所述中心节点中下载所述新版本用户程序的步骤;
若所述区域节点的更新源为所述更新节点,则所述区域节点根据接收到的所述标志位信息基于TCP/IP协议从所述更新节点中下载所述新版本用户程序。
3.根据权利要求1或2所述的方法,其特征在于,对于任意一个当前节点,所述当前节点执行预设的所述分布传输更新算法选择所述更新源,包括:
所述当前节点获取各个相邻节点的节点信息,所述当前节点是所述中心节点、所述区域节点和所述中继节点中的任意一个设备;所述相邻节点的节点信息至少包括所述相邻节点的设备地址、设备类型、设备网络信息以及用户程序版本信息,所述设备地址包括所述相邻节点的网络接口地址,所述设备类型用于指示所述相邻节点为中心节点或区域节点或中继节点,所述设备网络信息至少包括所述相邻节点的网络链路带宽和网络延迟,所述用户程序版本信息用于指示所述相邻节点中当前存储的用户程序的版本信息;
所述当前节点根据所述相邻节点的节点信息与所述当前节点自身的节点信息按照预设算法计算与所述相邻节点之间的路径开销;
确定最小的路径开销对应的相邻节点为所述当前节点的更新源。
4.根据权利要求3所述的方法,其特征在于,所述当前节点根据所述相邻节点的节点信息与所述当前节点自身的节点信息按照预设算法计算与所述相邻节点之间的路径开销,包括对于所述当前节点的任意一个相邻节点:
所述当前节点根据所述相邻节点的用户程序版本信息以及所述当前节点自身的用户程序版本信息检测所述相邻节点中存储的用户程序是否不旧于自身存储的用户程序,若所述相邻节点中存储的用户程序旧于自身存储的用户程序,则直接确定所述相邻节点不是所述当前节点的更新源并结束流程;
若所述相邻节点中存储的用户程序不旧于自身存储的用户程序,则所述当前节点根据所述相邻节点的设备网络信息计算所述当前节点与所述相邻节点之间的网络链路权重,计算公式为D(x,n)=1000/Wn+dn,其中,D(x,n)表示当前节点x与相邻节点n之间的网络链路权重,Wn表示相邻节点n的网络链路带宽且参数单位为Mb/s,dn表示相邻节点n的网络延迟且参数单位为μs;
所述当前节点根据所述相邻节点的设备类型以及用户程序版本信息以及自身的设备类型以及用户程序版本信息计算所述当前节点与所述相邻节点之间的设备及程序权重,计算公式为其中,f(x,ns,nt)表示当前节点x与相邻节点n之间的设备及程序权重,ns表示相邻节点n的用户程序版本信息,nt表示相邻节点n的设备类型,xs表示当前节点x的用户程序版本信息,xt表示当前节点x的设备类型;xs-ns表示相邻节点n与当前节点x之间的用户程序版本差异值;其中,节点为中心节点时对应的的设备类型为0,节点为区域节点时对应的设备类型为1,节点为中继节点时对应的设备类型为-1;
若所述当前节点与所述相邻节点之间的设备及程序权重f(x,ns,nt)<0,则直接确定所述相邻节点不是所述当前节点的更新源并结束流程;
若所述当前节点与所述相邻节点之间的设备及程序权重f(x,ns,nt)≥0,则计算D(x,n)*f(x,ns,nt)确定所述当前节点与所述相邻节点之间的路径开销。
5.根据权利要求3所述的方法,其特征在于,所述确定最小的路径开销对应的相邻节点为所述当前节点的更新源,包括:
确定最小的路径开销对应的相邻节点为所述当前节点的主更新源,确定次小的路径开销对应的相邻节点为所述当前节点的备更新源;
则所述中继节点基于TCP/IP协议从所述中继节点的更新源中下载所述新版本用户程序,包括:
所述中继节点检测到与所述中继节点的主更新源之间的通信连接可靠时,从所述中继节点的主更新源中下载所述新版本用户程序;
所述中继节点检测到与所述中继节点的主更新源之间的通信连接断开时,检测所述中继节点与中继节点的备更新源之间的通信连接是否可靠;
当所述中继节点检测到包括备更新源且与所述中继节点的备更新源之间的通信连接可靠时,所述中继节点从所述中继节点的备更新源中下载所述新版本用户程序;
当所述中继节点检测到不包括备更新源,或者,检测到与所述中继节点的备更新源之间的通信连接不可靠时,所述中继节点重新根据预设的分布传输更新算法在相连的区域节点中确定更新源。
6.根据权利要求1所述的方法,其特征在于,所述中继节点与所述嵌入式终端设备之间通过数据帧进行数据传输,所述数据帧包括依次包括目标地址字段、控制信息字段、数据长度字段、有效数据字段以及校验码字段;所述目标地址字段占1字节长度且包含所述数据帧的接收端的设备地址;所述控制信息字段占1字节长度且包含所述数据帧的数据类型,所述数据类型用于指示所述数据帧传输的有效数据为握手信号、程序更新标识、应答信号或所述新版本用户程序;所述数据长度字段占2字节长度且包含所述有效数据字段占用的字节数,所述有效数据字段占可变字节长度且包含待传输的有效数据,所述校验码字段占2字节长度且包含待传输的所述有效数据的CRC校验结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811562836.5A CN110362323B (zh) | 2018-12-20 | 2018-12-20 | 基于分布式自组网的嵌入式终端设备程序更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811562836.5A CN110362323B (zh) | 2018-12-20 | 2018-12-20 | 基于分布式自组网的嵌入式终端设备程序更新方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110362323A true CN110362323A (zh) | 2019-10-22 |
CN110362323B CN110362323B (zh) | 2022-04-19 |
Family
ID=68214795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811562836.5A Active CN110362323B (zh) | 2018-12-20 | 2018-12-20 | 基于分布式自组网的嵌入式终端设备程序更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110362323B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111010423A (zh) * | 2019-11-20 | 2020-04-14 | 远景智能国际私人投资有限公司 | 更新包的下载系统、方法、装置、设备及可读存储介质 |
CN111209059A (zh) * | 2020-01-14 | 2020-05-29 | 中国北方车辆研究所 | 一种嵌入式软件多版本控制系统及方法 |
CN112039736A (zh) * | 2020-08-14 | 2020-12-04 | 深圳市欧瑞博科技股份有限公司 | 智能设备的升级方法、装置、智能家居系统及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104007996A (zh) * | 2014-06-16 | 2014-08-27 | 南京融教科技有限公司 | 一种分布式控制系统的可靠固件升级实现方法 |
CN104850422A (zh) * | 2014-05-21 | 2015-08-19 | 北汽福田汽车股份有限公司 | 一种远程更新终端设备程序的方法及系统 |
CN105117253A (zh) * | 2015-08-27 | 2015-12-02 | 常州大学 | 一种基于BootLoader的UV LED固化系统远程升级方法 |
CN106406954A (zh) * | 2016-09-22 | 2017-02-15 | 杭州迪普科技有限公司 | 一种升级BootLoader程序的方法及装置 |
-
2018
- 2018-12-20 CN CN201811562836.5A patent/CN110362323B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104850422A (zh) * | 2014-05-21 | 2015-08-19 | 北汽福田汽车股份有限公司 | 一种远程更新终端设备程序的方法及系统 |
CN104007996A (zh) * | 2014-06-16 | 2014-08-27 | 南京融教科技有限公司 | 一种分布式控制系统的可靠固件升级实现方法 |
CN105117253A (zh) * | 2015-08-27 | 2015-12-02 | 常州大学 | 一种基于BootLoader的UV LED固化系统远程升级方法 |
CN106406954A (zh) * | 2016-09-22 | 2017-02-15 | 杭州迪普科技有限公司 | 一种升级BootLoader程序的方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111010423A (zh) * | 2019-11-20 | 2020-04-14 | 远景智能国际私人投资有限公司 | 更新包的下载系统、方法、装置、设备及可读存储介质 |
CN111209059A (zh) * | 2020-01-14 | 2020-05-29 | 中国北方车辆研究所 | 一种嵌入式软件多版本控制系统及方法 |
CN111209059B (zh) * | 2020-01-14 | 2023-03-03 | 中国北方车辆研究所 | 一种嵌入式软件多版本控制系统及方法 |
CN112039736A (zh) * | 2020-08-14 | 2020-12-04 | 深圳市欧瑞博科技股份有限公司 | 智能设备的升级方法、装置、智能家居系统及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110362323B (zh) | 2022-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110362323A (zh) | 基于分布式自组网的嵌入式终端设备程序更新方法 | |
US9444611B2 (en) | Network system and method of synchronizing path information | |
US9235408B2 (en) | Non-disruptive software updates for servers processing network traffic | |
US8448162B2 (en) | Hitless software upgrades | |
US8052528B2 (en) | Game program and game device | |
CN105204880B (zh) | 计算机系统及基本输入输出系统的设定方法 | |
CN107589952A (zh) | 智能升级方法、装置和系统 | |
US20080155157A1 (en) | Hot-swappable multi-configuration modular network service system | |
CN101478446B (zh) | 网络设备版本加载方法、装置和系统 | |
CN103281346A (zh) | 断线重连方法、网络系统和代理服务器 | |
WO2012113196A1 (zh) | 一种实现主备单板升级的方法及装置 | |
CN111273924B (zh) | 软件更新方法及装置 | |
CN110535776A (zh) | 网关限流方法、装置、网关、系统及存储介质 | |
CN103404135A (zh) | 用于传输实时图像的系统和方法 | |
CN104320347A (zh) | 一种主动更新lldp的方法及设备 | |
CN109379239B (zh) | 一种OpenStack环境中配置接入交换机的方法及装置 | |
CN107786350B (zh) | 一种恢复网络设备的出厂配置的方法、装置及网络设备 | |
WO2017124741A1 (zh) | 一种设备版本同步方法及装置 | |
JP2016181795A (ja) | ネットワークシステム及びネットワーク設定方法 | |
CN108874410A (zh) | 补丁管理方法及装置 | |
CN107210945B (zh) | 用于运行计算机网络的方法和计算机网络 | |
US20130124715A1 (en) | Applet synchronization across multiple routers | |
CN116418791A (zh) | 固件升级方法、固件升级系统、服务器及存储介质 | |
KR100524588B1 (ko) | 무선인터넷에서 다운로드 중단된 데이터를 이어받는 방법 | |
WO2021203384A1 (zh) | 设备升级的方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230423 Address after: Xuanwu Science and Technology Park, No. 9 Bancang Street, Xuanwu District, Nanjing City, Jiangsu Province, 210042 Patentee after: Nanjing Xunbang Electronic Technology Co.,Ltd. Address before: No. 1600, gaolang West Road, Binhu District, Wuxi City, Jiangsu Province Patentee before: WUXI INSTITUTE OF TECHNOLOGY |
|
TR01 | Transfer of patent right |