基于UWB通信的程序在线升级系统和方法与流程

文档序号:22123743发布日期:2020-09-04 16:56阅读:575来源:国知局
基于UWB通信的程序在线升级系统和方法与流程

本发明涉及一种基于uwb通信的程序在线升级系统和方法,尤其适用于使用uwb通信的多个室内定位节点设备程序在线升级。



背景技术:

超宽带传输技术uwb具有极大的带宽,能实现短距离高速率的数据传输,是未来的主流无线通信技术之一[1]。当前uwb技术主要应用在短距离小数据无线通信、雷达、监视与跟踪、室内定位四个领域[2]。而室内定位是目前应用最成熟广泛的领域,其基本原理是在例如某栋大楼、某个室内场馆或某个大型超市内布局若干个具有uwb通信功能的节点设备[3],并使其相互间保持高实时性且持续性的小数据包通信。然而,随着业务的扩展以及用户需求的变更,必然要对个节点设备进行功能更迭,需要通过程序升级来实现。但由于本身通信机制的影响,在某个局域空间布局了若干个节点设备的情况下,很少会利用uwb进行稳定可靠前提下的大数据量通信,因此目前主要的程序升级方式有以下几种:

1、使用升级所需工具,人为的在现场进行升级。显然,面对数量众多的节点设备,此程序升级方法效率低下且不够灵活方便;

2、使用已升级的若干设备区更换现场节点。此方法会涉及设备的替换,可能导致某些应用场景下的系统设备需要重新调试与布局,显然会大大增加工作量,降低效率;

3、为每个uwb节点设备上增加例如4g模块的无线通信组件,通过以太网获取更新数据。这样虽然解决了前两种方法的缺点,但会提高硬件成本同时也提高了软件的复杂度。

参考文献:

[1]仲江涛.基于uwb室内定位算法的研究与实现[d].深圳:深圳大学,2017:1;

[2]薛冰.基于uwb的plus跟踪定位系统软件设计与研究[d].济南:山东大学,2012:16-17;

[3]季晓杰.关于通过移动基站进行室内定位研究[j].科技风,2011,2(3):264。



技术实现要素:

本发明所要解决的技术问题是:针对上述存在的问题,提供一种基于uwb通信的程序在线升级系统和方法。

本发明提供的一种基于uwb通信的程序在线升级系统,包括:云服务器、中心主控设备bc和n个子节点设备rt;所述云服务器连接有一个具有人机交互界面的上位机,所述中心主控设备bc包括第一mcu,以及与第一mcu连接的第一sdram运存模块、第一flash存储器、第一uwb收发器模块和无线通信模块;所述中心主控设备bc通过无线通信模块与云服务器进行网络连接;每个所述子节点设备rt包括第二mcu,以及与第二mcu连接的第二sdram运存模块、第二flash存储器和第二uwb收发器模块;每个所述子节点设备rt通过第二uwb收发器模块与所述中心主控设备bc的第一uwb收发器模块进行uwb通信连接;每个所述子节点设备rt具有唯一的id号。

进一步地,所述第一flash存储器和第二flash存储器均包括:

引导程序区,用于执行引导程序bootloader;

程序a区,用于存放当前运行的程序;

程序b区,用于存放最近一次可正常运行的程序;

程序参数区,用于存放程序启动参数、程序版本信息和程序的校验码;

进一步地,所述第一uwb收发器模块和第二uwb收发器模块均连接有t/r模块。

本发明还公开了一种基于uwb通信的程序在线升级方法,包括如下步骤:

s1,上位机选择升级程序文件和需要升级的子节点设备rt的id号,并通过云服务器下发至中心主控设备bc;

s2,中心主控设备bc接收来自云服务器的升级程序文件和需要升级的子节点设备rt的id号,并将升级程序文件通过uwb发送至与所述需要升级的子节点设备rt的id号对应的子节点设备rt,由接收到升级程序文件的子节点设备rt进行在线升级。

进一步地,中心主控设备bc的执行流程包括如下子步骤:

s211,接收来自云服务器的升级程序文件和需要升级的子节点设备rt的id号;

s212,生成更新数据指令包,并将更新数据指令包通过uwb发送至与所述需要升级的子节点设备rt的id号对应的子节点设备rt;所述更新数据指令包包含需要升级的子节点设备rt的id号,以及升级程序文件的校验码、分包号和分包总数;

s213,等待该子节点设备rt反馈第一ack包;

s214,在接收到该子节点设备rt反馈的第一ack包后,通过uwb向该子节点设备rt发送升级程序文件;

s215,等待该子节点设备rt反馈第二ack包;

s216,在接收到该子节点设备rt反馈的第二ack包后,判断升级程序文件是否发送完成,若未完成则跳转步骤s214,否则执行步骤s217;

s217,生成更新数据发送完成指令包并将更新数据发送完成指令包通过uwb发送至该子节点设备rt;所述更新数据发送完成指令包包括升级程序文件的校验码、程序启动参数和程序版本信息;

s218,等待该子节点设备rt反馈第三ack包;

s219,在接收到该子节点设备rt反馈的第三ack包后,将第三ack包中的升级结果发送至云服务器。

进一步地,所述中心主控设备bc设置有第一ack包、第二ack包和第三ack包的等待时间,若超过相应的等待时间,则重新执行其对应的前一步骤发送相应的数据包,且当重新执行的次数达到设定次数时,终止本次升级。

进一步地,所述中心主控设备bc在接收到第一ack包、第二ack包和第三ack包时,会判断第一ack包、第二ack包和第三ack包是否异常,在判断为正常时进行下一步骤,否则重新执行等待相应ack包对应的前一步骤发送相应的数据包,且当重新执行的次数达到设定次数时,终止本次升级。

进一步地,s2中,子节点设备rt的执行流程包括如下子步骤:

s221,解析更新数据指令包,判断该更新数据指令包中包含的id号与自身的id号是否一致,若一致,则将校验结果封装为第一ack包发送至中心主控设备bc;

s222,接收中心主控设备bc发送的升级程序文件;

s223,解析该升级程序文件,通过校验算法对校验码进行校验,如果校验通过,则根据分包号和分包总数对升级程序文件进行缓存,并将校验结果封装为第二ack包发送至中心主控设备bc;

s224,接收中心主控设备bc发送的更新数据发送完成指令包;

s225,解析更新数据发送完成指令包,通过校验算法对校验码进行校验,如果校验通过,则进行程序升级,并将校验结果封装为第三ack包发送至中心主控设备bc。

进一步地,子节点设备rt进行程序升级的方法为:

s2251,将程序启动参数和程序版本信息写入第二flash存储器中的程序参数区;

s2252,将子节点设备rt当前运行的程序写入第二flash存储器中的程序b区;

s2253,将升级程序文件写入第二flash存储器中的程序a区。

进一步地,中心主控设备bc可根据需要实时上报升级进度和升级结果。

综上所述,由于采用了上述技术方案,本发明的有益效果是:

1、本发明引入中心主控设备bc主动通信与子节点设备rt被动响应的思想进行系统布局,并采用mcu+uwb收发器模块进行数据交互,以此实现了基于uwb通信的程序在线升级。

2、本发明在基于uwb通信的程序在线升级中,通过设备唯一id号的一致性验证,针对验证结果执行响应流程,从而建立了一个简易的信令系统通信环境,以此防止uwb设备间通信的串扰。

3、本发明在基于uwb通信的程序在线升级中,通过引入了升级程序文件的校验码来提高程序升级的可靠性,并通过建立重发机制避免多径效应、地面反射、金属遮挡等原因的影响,提高了程序升级的成功率和鲁棒性。

4、本发明仅对一个中心主控设备bc增加了无线通信模块,相比传统方案中对每个设备增加无线通信模块来说,降低了硬件成本。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明的基于uwb通信的程序在线升级系统的结构示意图。

图2为本发明一个实施例的中心主控设备bc和子节点设备rt的结构示意图。

图3为本发明一个实施例的flash存储器的结构示意图。

图4为本发明一个实施例的中心主控设备bc在程序升级时执行的流程框图。

图5为本发明一个实施例的子节点设备rt在程序升级时执行的流程框图。

图6为本发明另一个实施例的中心主控设备bc在程序升级时执行的流程框图。

图7为本发明另一个实施例的中心主控设备bc在程序升级时执行的流程框图。

具体实施方式

以下结合实施例对本发明的特征和性能作进一步的详细描述。

如图1所示,一种基于uwb通信的程序在线升级系统,包括:云服务器、中心主控设备bc和n个子节点设备rt;所述云服务器连接有一个具有人机交互界面的上位机,所述中心主控设备bc包括第一mcu,以及与第一mcu连接的第一sdram运存模块、第一flash存储器、第一uwb收发器模块和无线通信模块;所述中心主控设备bc通过无线通信模块与云服务器进行网络连接;每个所述子节点设备rt包括第二mcu,以及与第二mcu连接的第二sdram运存模块、第二flash存储器和第二uwb收发器模块;每个所述子节点设备rt通过第二uwb收发器模块与所述中心主控设备bc的第一uwb收发器模块进行uwb通信连接;每个所述子节点设备rt具有唯一的id号。

一个实施例如图2所示,云服务器可以采用购买现有的企业提供的云服务器来搭建,上位机采用一般pc机以及pc机上运行的软件实现;所述中心主控设备bc比子节点设备rt多出一个无线通信模块,其余结构相同:第一mcu和第二mcu可以采用stm32f103x系列芯片;第一uwb收发器模块和第二uwb收发器模块为超宽带无线通信模块,可以采用dwm1000模块,它是基于decawave的dw1000芯片设计且符合ieee802.15.4-2011标准,本方案中其主要用于通过uwb进行数据收发;第一mcu和第二mcu通过spi接口与dwm1000模块进行数据交互,并对数据处理后存入相应的第一flash存储器和第二flash存储器;第一sdram运存模块和第二sdram运存模块,以及第一flash存储器和第二flash存储器,用于提供程序运行内存和掉电非易失的存放空间。仅存于中心主控设备bc的无线通信模块用于与云服务器通过网络进行数据交互,可以采用市面常见的3g、4g、5g通信模块即可。另外,硬件其他部分可根据应用场景的需要来添加,例如传感器、高精度时钟晶振等。其中,所述第一uwb收发器模块和第二uwb收发器模块均连接有t/r模块,可以提高第一uwb收发器模块和第二uwb收发器模块的数据收发功率。

一个实施例如图3所示,所述第一flash存储器和第二flash存储器均包括:

引导程序区,用于执行引导程序bootloader;

程序a区,用于存放当前运行的程序;

程序b区,用于存放最近一次可正常运行的程序;

程序参数区,用于存放程序启动参数、程序版本信息和程序的校验码。

也就是说,本方案对程序的存储位置进行了合理的布局:引导程序区执行的引导程序bootloader是一段引导小程序,通过程序参数区存放的相关参数,决定如何引导程序运行,同时升级程序的通信流程程序也存放在bootloader中。程序a区和程序b区实现当前程序和备份程序分区,可以在引导程序bootloader的执行过程中,因校验不通过或其他原因可能导致程序a区的程序无法运行时,则将程序b区的程序拷贝到程序a区后,再引导程序a区的程序运行,从而达到程序备份和恢复的目的。这种布局能够大大提高设备的可靠性,即使程序升级失败或者其它非可控因素造成的程序执行数据被破坏,也能通过备份数据进行程序恢复。

利用上述的基于uwb通信的程序在线升级系统可以实现程序在线升级,如图4所示的一种基于uwb通信的程序在线升级方法,包括如下步骤:

s1,上位机选择升级程序文件和需要升级的子节点设备rt的id号,并通过云服务器下发至中心主控设备bc;

s2,中心主控设备bc接收来自云服务器的升级程序文件和需要升级的子节点设备rt的id号,并将升级程序文件通过uwb发送至与所述需要升级的子节点设备rt的id号对应的子节点设备rt,由接收到升级程序文件的子节点设备rt进行在线升级。

一个实施例如图4所示,s2中,中心主控设备bc的执行流程包括如下子步骤:

s211,接收来自云服务器的升级程序文件和需要升级的子节点设备rt的id号;

s212,生成更新数据指令包,并将更新数据指令包通过uwb发送至与所述需要升级的子节点设备rt的id号对应的子节点设备rt;所述更新数据指令包包含需要升级的子节点设备rt的id号,以及升级程序文件的校验码、分包号和分包总数;

s213,等待该子节点设备rt反馈第一ack包;

s214,在接收到该子节点设备rt反馈的第一ack包后,通过uwb向该子节点设备rt发送升级程序文件;

s215,等待该子节点设备rt反馈第二ack包;

s216,在接收到该子节点设备rt反馈的第二ack包后,判断升级程序文件是否发送完成,若未完成则跳转步骤s214,否则执行步骤s217;

s217,生成更新数据发送完成指令包并将更新数据发送完成指令包通过uwb发送至该子节点设备rt;所述更新数据发送完成指令包包括升级程序文件的校验码、程序启动参数和程序版本信息;

s218,等待该子节点设备rt反馈第三ack包;

s219,在接收到该子节点设备rt反馈的第三ack包后,将第三ack包中的升级结果发送至云服务器。

一个实施例如图5所示,s2中,子节点设备rt的执行流程包括如下子步骤:

s221,解析更新数据指令包,判断该更新数据指令包中包含的id号与自身的id号是否一致,若一致,则将校验结果封装为第一ack包发送至中心主控设备bc;

s222,接收中心主控设备bc发送的升级程序文件;

s223,解析该升级程序文件,通过校验算法对校验码进行校验,如果校验通过,则根据分包号和分包总数对升级程序文件进行缓存,并将校验结果封装为第二ack包发送至中心主控设备bc;

s224,接收中心主控设备bc发送的更新数据发送完成指令包;

s225,解析更新数据发送完成指令包,通过校验算法对校验码进行校验,如果校验通过,则进行程序升级,并将校验结果封装为第三ack包发送至中心主控设备bc。

通过上述s2中,中心主控设备bc和子节点设备rt的执行流程可以看出,所有任务指令都是由中心主控设备bc主动发起,子节点设备rt被动响应,且每次的任务指令和升级程序文件的发送都必须等待子节点设备rt的ack包。

现有技术中,uwb通信技术目前有两个主要缺陷,即缺乏可靠的安全性以及组网通信中所需成熟的信令技术体系,因此基于uwb通信技术对室内定位的节点设备进行程序在线升级时会面临两个关键的技术问题:

1、由于uwb通信缺少成熟的信令技术,若有一个uwb设备进行了数据发送,所有uwb设备都会参与接收,容易造成uwb设备间通信的串扰,从而影响数据通信流程的正常进行;

2、uwb通信若在比较复杂且有众多节点设备布局的室内环境中,很有可能受到例如多径效应、地面反射、金属遮挡等原因的影响,会对通信质量造成不同程度的影响,所以uwb设备在实际应用中往往都是保持高持续性且小数据量的通信,uwb设备间会持续的进行数据同步与通信,因而即使缺乏可靠的安全性,依然不足以对定位结果产生致命的影响。但是,在数据量相对较大的程序升级数据包中,在通信中若有不可靠安全的数据包产生,则会导致升级后有的程序无法运行,这个显然是致命问题。

针对第1个问题,本方案在s2中,中心主控设备bc和子节点设备rt的执行流程中引入了子节点设备rt的id号,在进行更新数据指令包传输时进行id号的一致性验证,针对验证结果执行响应流程,从而建立了一个简易的信令系统通信环境。

针对第2个问题,本方案在s2中,中心主控设备bc和子节点设备rt的执行流程中引入了升级程序文件的校验码来提高程序升级的可靠性。但是要避免多径效应、地面反射、金属遮挡等原因的影响,还需要进一步提高uwb的安全性,由此本方案还采用了一种重发机制:

(1)如图6所示,所述中心主控设备bc设置有第一ack包、第二ack包和第三ack包的等待时间,若超过相应的等待时间,则重新执行其对应的前一步骤发送相应的数据包,且当重新执行的次数达到设定次数时,终止本次升级。

具体地:

a、在步骤s213中,等待该子节点设备rt反馈第一ack包,若超过相应的等待时间t1,则返回步骤s212再执行一次,发送更新数据指令包至与所述需要升级的子节点设备rt的id号对应的子节点设备rt;然后再一次等待该子节点设备rt反馈第一ack包,以此往复a1次后,依然等待该子节点设备rt反馈第一ack包超时,则终止本次升级;

b、在步骤s215中,等待该子节点设备rt反馈第二ack包,若超过相应的等待时间t2,则返回步骤s214再执行一次,通过uwb向该子节点设备rt发送升级程序文件;然后再一次等待该子节点设备rt反馈第二ack包,以此往复b1次后,依然等待该子节点设备rt反馈第一ack包超时,则终止本次升级;

c、在步骤s218中,等待该子节点设备rt反馈第三ack包,若超过相应的等待时间t3,则返回步骤s217再执行一次,将更新数据发送完成指令包通过uwb发送至该子节点设备rt;然后再一次等待该子节点设备rt反馈第三ack包,以此往复c1次后,依然等待该子节点设备rt反馈第一ack包超时,则终止本次升级;

需要说明的是,等待时间t1、t2、t3可以相同或不相同,往复次数a1、b1、c1也可以相同或不相同,根据实际需要进行设定即可。

(2)如图7所示,所述中心主控设备bc在接收到第一ack包、第二ack包和第三ack包时,会判断第一ack包、第二ack包和第三ack包是否异常,在判断为正常时进行下一步骤,否则重新执行等待相应ack包对应的前一步骤发送相应的数据包,且当重新执行的次数达到设定次数时,终止本次升级。

具体地:

a、在步骤s214中,在接收到该子节点设备rt反馈的第一ack包后,先要判断第一ack包是否异常,在判断为正常时,通过uwb向该子节点设备rt发送升级程序文件,否则返回步骤s212再执行一次,发送更新数据指令包至与所述需要升级的子节点设备rt的id号对应的子节点设备rt;然后再一次等待该子节点设备rt反馈第一ack包,并再一次在接收到该子节点设备rt反馈的第一ack包后,判断第一ack包是否异常,以此往复a2次后,依然判断为异常时,则终止本次升级;

b、在步骤s216中,在接收到该子节点设备rt反馈的第二ack包后,先要判断第二ack包是否异常,在判断为正常时,再判断升级程序文件是否发送完成,否则返回步骤s214再执行一次,通过uwb向该子节点设备rt发送升级程序文件;然后再一次等待该子节点设备rt反馈第二ack包,并再一次在接收到该子节点设备rt反馈的第二ack包后,判断第二ack包是否异常,以此往复b2次后,依然判断为异常时,则终止本次升级;

c、在步骤s219中,在接收到该子节点设备rt反馈的第三ack包后,先要判断第三ack包是否异常,在判断为正常时,将第三ack包中的升级结果发送至云服务器,否则返回步骤s217再执行一次,将更新数据发送完成指令包通过uwb发送至该子节点设备rt;然后再一次等待该子节点设备rt反馈第三ack包,并再一次在接收到该子节点设备rt反馈的第三ack包后,判断第三ack包是否异常,以此往复c2次后,依然判断为异常时,则终止本次升级。

需要说明的是,往复次数a2、b2、c2可以相同或不相同,根据实际需要进行设定即可。

一个示例:

搭建基于uwb通信的程序在线升级系统:使用3个具有第二uwb收发器模块dwm1000的子节点设备rt1、rt2、rt3;1个具有第一uwb收发器模块dwm1000,以及4g无线通信模块的中心主控设备bc;购买一个花生壳域名账户搭建一个小型的云服务器,并在本地pc机上实现一个具有人机交互界面的上位机软件与云服务器进行通信,如图6所示。

在搭建的在线升级系统上电后,中心主控设备bc会获取所有在线子节点设备rt1、rt2、rt3的id号,并发送至云服务器,并且上位机通过云服务器获取这些在线子节点设备rt1、rt2、rt3的id号,然后选择升级程序文件和需要升级的子节点设备的id号,并下发给中心主控设备bc;然后中心主控设备bc和指定的子节点设备执行程序升级的流程,另外,在中心主控设备bc和指定的子节点设备执行程序升级的流程中,中心主控设备bc可根据需要实时上报升级进度和升级结果。经过数次测试表明,此在线升级系统设计方案可行,能够达到预期的在线程序升级的目的。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1