掌桥专利:专业的专利平台
掌桥专利
首页

一种远程升级方法、系统、存储介质及终端

文献发布时间:2024-04-18 19:59:31


一种远程升级方法、系统、存储介质及终端

技术领域

本发明涉及嵌入式软件和铁路接触网智能坠砣领域,尤其涉及一种远程升级方法、系统、存储介质及终端。

背景技术

接触网智能坠砣是铁路接触网供电设施监测检测系统的关键核心设备,随着铁路智慧化建设的深入推进,需要对智能坠砣终端的功能、性能进行持续的更新升级。尤其在川藏铁路等高寒、高海拔、无人区应用中,更需要对部署应用的接触网智能坠砣终端软件进行实时、高效的远程更新升级。然而,现有铁路接触网坠砣通常基于单片机轮询系统开发,其软硬件功能耦合性强、监测采样周期固定、可扩展性弱,很少考虑远程配置更新和系统功能、性能升级方案。在升级改造时,需要更新所有固件并重启,甚至重新开发部署,存在更新升级困难、流程复杂、效率低等问题。因此,如何实现对铁路接触网智能坠砣终端系统进行配置更新和升级,满足智能化应用灵活配置、实时更新、轻量化升级的需求,是亟待解决的问题。

发明内容

本发明的目的在于针对上述问题,提供了一种远程升级方法、系统、存储介质及终端,以满足低成本、低功耗、灵活更新的要求。

本发明的目的是通过以下技术方案来实现的:

第一方面,提供一种远程升级方法,用于基于嵌入式的铁路接触网智能坠砣系统,所述系统包括终端、中心节点以及后端系统,所述方法包括:

根据终端不同的升级需求,采取不同的升级策略;其中,对于终端任务调度配置相关的更新,使用在线配置更新升级策略;对于终端系统功能组件的升级需求,采取差分升级策略。

第二方面,提供一种远程升级方法,用于基于嵌入式的铁路接触网智能坠砣系统,所述系统包括终端、中心节点以及后端系统,所述方法包括以下步骤:

S1、后端系统封装配置更新数据包和/或生成差分升级文件;

S2、后端系统向终端发送配置更新数据包和/或差分升级文件;

S3、后端系统接收终端上传的配置更新完成信号或升级完成信号。

第三方面,提供一种远程升级方法,用于基于嵌入式的铁路接触网智能坠砣系统,所述系统包括终端、中心节点以及后端系统,所述方法包括以下步骤:

S1、终端接收后端系统发送的配置更新数据包和/或差分升级文件;

S2、终端根据配置更新数据包完成任务调度配置相关的更新,终端根据差分升级文件完成功能组件的升级;

S3、终端向后端系统发送配置更新完成信号或升级完成信号。

优选地,所述生成差分升级文件,包括:

通过后端系统文件服务器上的create_lite_diff接口,使用HPatchLite+TinyUz算法对待升级应用程序进行差分、压缩处理。

优选地,所述后端系统向终端发送差分升级文件,包括:

对所述差分升级文件进行分包处理,将差分压缩文件分割成多个字节级容量的数据包,同时为每个数据包添加一定字节的元数据;将数据包按照一定顺序发送给终端。

优选地,所述终端接收后端系统发送的差分升级文件,包括:

终端通过通信模块接收差分升级文件;

调用差分升级接口对差分升级文件进行预处理,所述预处理包括重组、整合;

使用TinyUz解压缩算法对预处理后的差分升级文件解压;

使用HPatchLite解差分算法对解压后的差分升级文件进行解差分,最终形成待升级的系统程序。

优选地,所述终端根据差分升级文件完成功能组件的升级,包括:

使用乒乓升级方式将待升级的系统程序存放在对应的APP区域,由Bootloader程序引导跳转到指定位置,运行待升级系统程序。

第四方面,提供一种远程升级系统即基于嵌入式操作系统的智能坠砣系统,包括终端、中心节点以及后端系统,确保终端、中心站与后端系统的数据传输、监控和协作的无缝集成,提高坠砣系统的效率、安全性和可靠性。所述后端系统用于根据终端不同的升级需求,制定不同的升级策略;所述中心节点用于终端与后端系统之间通信;其中,所述后端系统对于终端任务调度配置相关的更新,使用在线配置更新升级策略;对于终端系统功能组件的升级需求,采取差分升级策略。

第五方面,提供一种计算机存储介质,其上存储有计算机指令,所述计算机指令运行时执行任意一项所述一种远程升级方法中相关步骤。

第六方面,提供一种终端,包括存储器和处理器,存储器上存储有可在处理器上运行的计算机指令,处理器运行计算机指令时执行任意一项所述一种远程升级方法中相关步骤。

需要进一步说明的是,上述各选项对应的技术特征在不冲突的情况下可以相互组合或替换构成新的技术方案。

与现有技术相比,本发明有益效果是:

(1)本发明通过在线配置更新和远程差分升级方法,及时修复配置的错误和漏洞,以及升级系统以适应新需求,可以提高系统的稳定性和可靠性。即使在智能坠砣系统运行期间对配置进行更新升级,也能保持系统的连续运行,减少系统停机时间。满足智能化应用灵活配置、实时更新、轻量化升级的需求。同时,系统管理员可以远程管理和更新设备的配置。这样可以减少维护人员的巡检、维修和升级成本,提高工作效率,降低系统管理的人力资源成本。

(2)由于在川藏铁路等高寒、高海拔、无人区应用中,网络不稳定,网络传输时极易出现掉包、连接断开的情况,导致升级中断。对此,在一个示例中,采用乒乓升级技术,即使升级中断,系统也可以继续运行原始应用程序;采用断点续传机制,即使升级中断,下次可以从断开处继续传输,无需重新传输所有数据包,减少网络资源浪费。

(3)降低系统功耗:坠砣系统终端和中心站均采用电池供电,尽量保持其低功耗是延长寿命的基本措施。而系统远程升级时,数据量庞大,空中数据传输的有限速率导致耗电量进一步增加,采用差分升级算法,减小传输数据量,从而降低系统的功耗。

(4)优化带宽和存储资源:在系统实际运行中,部署的坠砣终端设备数量庞大,所采用的开发板RAM、FLASH等存储资源有限,在终端系统解压缩、解差分时极易出现RAM资源不足导致系统崩溃的情况。系统更新通过配置更新和远程差分升级两种方法,配置更新仅需传递配置更新命令数据包即可;远程差分升级只传输升级文件的增量部分,而不是全量升级,节省了网络带宽和存储资源,并且本发明选用的差分算法,配置的工作参数,使解差分、解压缩时,占用的存储资源尽可能最少。

(5)提高安全性:传输差分升级包时,仅传输待升级应用程序与原始应用程序的差异部分,而非完整程序,提高了升级的安全性。

附图说明

图1为本发明实施例示出的系统结构示意图;

图2为本发明实施例示出的数据传递图;

图3为本发明实施例示出的终端系统框架图;

图4为本发明实施例示出的终端的存储区域划分图。

具体实施方式

下面结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。

实施例1

在一示例性实施例中,提供一种远程升级方法,用于基于嵌入式的铁路接触网智能坠砣系统,所述系统包括终端、中心节点以及后端系统,所述方法包括:

根据终端不同的升级需求,采取不同的升级策略;其中,对于终端任务调度配置相关的更新,使用在线配置更新升级策略;对于终端系统功能组件的升级需求,采取差分升级策略。

具体地,该方法根据铁路接触网智能坠砣升级需求的不同,采取不同的升级策略:对于任务调度配置相关的更新,通过设计操作系统内核在线编程接口,接收和解析控制台发送的配置更新数据包,在不中断系统运行的情况下在线更新操作系统线程管理策略,动态加载和应用新的配置参数,从而实现坠砣终端监测数据采样频率等更新升级;对于系统功能组件升级需求,针对硬件资源受限的智能坠砣终端,引入了一种轻量化的差分升级算法,算法本身占用少量Flash空间,在执行patch时能够节省RAM空间,同时补丁大小、patch速度与常规差分算法接近,保证坠砣终端系统快速、高效地实现系统更新,尽可能减少系统停止运行的时间。

进一步地,通过这两种方法共同完成系统的升级操作,减少坠砣系统更新消耗的时间,提高了系统的实时性。其中,在线配置更新升级策略允许在坠砣系统运行期间进行配置更新,并且能够动态地加载和应用新的配置,而不会对系统的正常运行造成影响,此策略包括以下步骤:

S1、封装配置更新数据包:当后端系统需要更新系统配置参数时,依据配置规范,封装配置更新数据包。

S2、发送配置更新数据包:由后端系统服务器下发配置更新数据包至对应的中心节点,再由中心节点转发至对应的坠砣终端节点。

S3、配置更新:坠砣终端调用配置更新接口,根据配置更新数据包的内容,修改相应的模块,进而完成整个系统的配置更新升级。

差分升级策略包含差分升级算法与基于IAP的OTA升级技术两大部分,具体如下:

差分升级算法:针对硬件资源受限的智能坠砣终端,选择最适合于小容量坠砣终端的差分升级算法:能够在小型嵌入式设备上执行patch时节省RAM空间,同时patch算法本身也较小,占用少量Flash空间。除此之外,在节省空间的同时考虑patch速度,输入缓存区较小时会影响升级包的解差分速度,压缩算法过于复杂时会影响解压缩的效率。结合坠砣终端的硬件资源受限情况,设计最合适的差分算法、压缩算法以及配置相关参数,从而达到坠砣终端升级时的时间和空间的整体最优。

基于IAP的OTA升级技术:针对坠砣终端安装地理位置分散,现场升级困难,有时处于环境恶劣,网络状况不稳定的地区,极易出现掉包、连接断开的情况,使用IAP-OTA技术进行升级:通过空中、无接触、远程的方式进行升级。设计在IAP-OTA升级中使用差分升级,缩减传输数据量,提高升级的成功率;在IAP-OTA中增添断点续传机制,出现断电、网络断开等异常情况时,及时保存已接收的数据信息,实现终端从断线的地方继续获取数据;优化IAP-OTA使用乒乓升级方式,使主程序区交替更新,数据包直接保存在更新区中,去掉BootLoader片外Flash更新拷贝时间,设计BootLoader引导程序跳转功能,减少坠砣终端系统停机时间,以确保系统的实时性。

差分升级策略包括以下步骤:

S1、生成差分压缩文件:当后端系统需要对智能坠砣终端进行差分升级时,首先要依据特定算法,对待升级应用程序进行差分、压缩处理,生成差分压缩文件。

S2、传输差分数据包:生成差分压缩文件后,还需要对整个文件进行分包处理,将差分压缩文件分割成较小的数据包,以便在网络传输中更高效地发送和处理。由后端系统服务器依次下发所有差分数据包至对应的中心节点,再由中心节通过通信模块点下发至对应的坠砣终端。

S3、差分升级:坠砣终端调用差分升级接口,依据特定算法对差分数据包进行合并、解压缩、解差分等一系列处理,最终形成待升级系统程序,替换原始系统程序运行。

实施例2

在另一示例性实施例中,为了实现上述方法,设计基于嵌入式操作系统的智能坠砣系统,包括终端、中心节点与后端系统,主要负责为后端系统提供数据支持以及硬件访问接口,确保终端、中心节点(也称中心站)与后端系统的数据传输、监控和协作的无缝集成,提高坠砣系统的效率、安全性和可靠性。其中,所述后端系统用于根据终端不同的升级需求,制定不同的升级策略;所述中心节点用于终端与后端系统之间通信;其中,所述后端系统对于终端任务调度配置相关的更新,使用在线配置更新升级策略;对于终端系统功能组件的升级需求,采取差分升级策略。

具体地,智能坠砣终端周期性采集离地距离、环境温度、加速度等环境数据,通过通信模块发送至中心站,进而由中心站通过通信模块转发至后端系统。用户通过后端系统对嵌入式设备进行远程配置更新和系统升级。

为了实现上述功能,分别从硬件层、内核层、驱动层、接口层与应用层,对智能坠砣系统展开设计。硬件层包括开发板的选择、传感器的选择与布局、通信设备选择以及电源管理等。内核层是智能坠砣系统的核心部分,根据坠砣需求进行裁剪,提供中断管理、线程管理、时间管理、异常处理等服务,协调不同任务之间的执行顺序和优先级,确保系统运行的实时性和稳定性。驱动层包含创建I2C、SPI等标准设备驱动模块与超声波传感器、LoRa等坠砣应用设备驱动模块。接口层包含了通信接口、在线配置更新接口、远程升级接口。应用层的现有应用为接触网坠砣监测,后续可根据系统需求进行扩展。

进一步地,智能坠砣终端的功能实现,采用模块化思想设计,基于硬件平台以及实时操作系统之上设计配置更新模块、差分升级模块、通信模块和设备控制模块,以支持坠砣终端远程升级。各模块具体功能如下:

1.配置更新模块:坠砣终端的配置更新模块负责管理和处理系统的配置信息,它存储当前系统配置、接收新的配置、完成配置更新等操作。该模块使得坠砣终端能够在系统运行时加载和应用新的配置,确保配置的一致性和持久性。

2.差分升级模块:升级处理模块是坠砣终端中的关键部分,负责处理升级请求和执行相应的升级操作。该模块通过与中心节点和后端系统进行通信,接收并处理由中心节点转发的差分升级文件,将其与原始系统程序进行合并,生成待升级系统程序,并存放在相应位置。升级处理模块涉及到差分升级文件处理、数据解析、升级算法等功能,确保坠砣终端能够有效地实现系统升级。

3.通信模块:坠砣终端通过通信模块与中心节点进行通信,它负责接收来自中心节点的配置更新数据包以及差分升级文件,并将相应的数据提供给配置更新模块和升级处理模块。通信接口模块还将系统日志记录发送给中心节点,包括操作日志、状态变化、事件记录等,用于故障分析、系统优化和后续的运维工作。

4.设备控制模块:坠砣终端还包括其他与设备硬件相关的模块,设备控制模块负责管理和控制坠砣终端所连接的外部设备或接口。它负责处理传感器数据的采集、控制执行器的动作等。设备控制模块与坠砣终端其他模块的协作,实现坠砣系统的实时控制和操作。

综上所述,智能坠砣远程升级方法,是基于嵌入式操作系统的智能坠砣系统的基础实现的,需要具备硬件平台支持,运行RTOS,通过配置更新模块、差分升级模块、通信接口和设备控制模块的配合工作,实现在线配置更新升级和差分升级的功能。

实施例3

在另一示例性实施例中,给出实施例2中基于嵌入式操作系统的智能坠砣系统的通信过程。

具体地,通信模块中各个节点信息的传递如图1所示,坠砣终端是分布在不同地理位置上的嵌入式终端设备(对应图1中不同的分支节点),执行系统一部分的功能,如周期性采集坠砣环境数据、定时上报系统日志等功能;中心节点负责数据的传输与命令的传递;后端系统负责系统的整体控制,如在线配置更新升级和远程差分升级等。后端系统包括服务器,服务器与多个中心节点通过4G模块相互通信,每个中心节点又管辖着若干个坠砣终端,通过LoRa模块相互通信。

进一步地,数据传递流程如图2所示,具体包括:

1)上传环境数据:坠砣终端根据具体接触网智能坠砣系统设置多个周期线程,通过设备控制模块,利用指定硬件完成数据采集等具体操作,采集完成后通过LoRa通信模块发送给所属的中心节点,中心节点对数据进行清洗和规范化后通过4G通信模块发送给服务器,再由后端系统对数据进行存储、分析等。除此之外坠砣终端还设有定时任务,定时向中心节点发送系统日志记录,便于后续的后端系统的控制决策制定。

2)下发升级命令:后端系统使用特定算法对待升级系统程序进行差分、压缩、分包等,生成差分数据包,再由服务器通过4G通信模块发送给各个中心节点,中心节点检查无误后,再下发差分数据包至所管辖的坠砣终端,并监控坠砣终端升级结果,及时向结果汇报给后端系统。

3)下发配置更新数据包:后端系统的分析预警模块对接收到的数据进行分析,依情况做出相应的配置,按照配置命令规范封装配置更新数据包,发送至中心节点,中心节点检查无误后,再将其发送给所管辖的坠砣终端,坠砣终端的配置更新模块依据命令做出相应的更改。

整个分支节点的系统架构如图3所示,底层MCU选用STM32F103RCT6开发板进行开发。内核层选用轻量化的aCoral嵌入式实时操作系统,此内核提供中断服务、线程管理等多种服务,使上层的开发更加简便。在内核层提供的基础服务上,构建设备驱动层,专门用于驱动铁路接触网智能坠砣系统使用的设备,同时也提供一些标准设备驱动,设备控制模块就是通过设备驱动层实现对各个外设的管控。接口层提供了配置更新接口、差分升级接口与通信接口,通过这些接口调用相应的配置更新模块、差分升级模块、通信模块,方便上位机对坠砣终端的控制与监测。应用层的应用可根据系统需求进行扩展,引入新的功能模块或子系统,并与现有组件进行集成,实现多个应用的互联互通、共同开发。

结合坠砣终端每次升级时代码改动量小的特点与确保停机时间尽可能短的高要求,本发明采用基于IAP的OTA设计思路,先通过OTA无线通讯手段接收差分升级固件,再利用IAP技术进行固件搬移、校验和程序跳转,结合差分升级与乒乓升级方法,共同完成升级操作,以确保坠砣终端升级的实时性、稳定性。

预先将Bootloader程序和应用程序通过ISP方式或ICP方式下载到终端Flash对应区域作为初始程序,同时将开发板的BOOT0引脚与BOOT1引脚接地,配置从Flash主存储器启动。其中Bootloader程序存放在Flash起始地址0x08000000处,其它程序存放位置如图4所示,各个区域间隔一段预留空间,防止程序升级时频繁改动地址。当坠砣系统后端系统服务器下发升级命令后,坠砣终端通过通信模块按序接收差分升级包,再通过解压缩、解差分算法恢复待升级用户应用程序,并写入待升级用于应用程序存储区,复位后通过BootLoader引导程序完成系统升级操作。

进一步地,坠砣终端处理后端系统升级命令时,各模块相互协作的具体流程为:

1)系统初始化后,由BootLoader对升级标志位进行判断,引导坠砣终端原始系统应用程序运行。

2)在原始程序中,系统正常运行,坠砣终端的通信模块中的LoRa模块等待接收由中心站转发的数据包,若收到数据包则进入步骤3),否则继续等待。

3)在通信模块中判断收到的数据是否是差分数据包,若是差分数据包,则执行步骤4)-7),否则执行步骤8)。

4)在通信模块中校验收到的所有差分数据包是否准确无误,如果坠砣终端计算所有差分数据包的checksum与升级命令数据包的checksum一致,则执行下一步骤,通过差分升级模块对系统进行升级;将否则继续执行原始系统程序。

5)在差分升级模块中,先按照顺序对验证成功的数据包进行重组、整合,生成原始的差分压缩文件。

6)将升级标志位置1。

7)系统复位,执行Bootloader程序完成系统升级。

8)在配置更新模块中,根据配置命令规范判断收到的数据是否是配置更新命令,若不是则仍继续执行原始用户程序;若是配置更新命令,则根据配置更新数据项执行相应的操作。例如:接收到更新采集周期命令,则通过配置更新模块在aCoral中修改对应的采集线程的TCB,并将采集线程重新挂载到周期延时队列上,等待重新运行;接收到控制设备停止工作命令,则设备控制模块依照配置更新参数控制调用对应设备的关闭接口,完成在线配置更新。

进一步地,复位后程序从Flash存储区0x08000000启动,执行Bootloader程序,Bootloader工作流程如下:

1)首先进行外设初始化工作,将系统初启动需要用到的外设全部初始化。

2)然后检查升级标志是否置1,若为0,则直接跳转到以Origin_Addr为起始位置的原始用户应用程序存储区执行原始系统程序;若为1,则执行以下步骤。

3)使用TinyUz算法解压收到的差分升级文件。

4)读取原始的系统程序。

5)调用hpatch_lite_patch接口,将原始的系统程序与差分升级文件合并,形成新的系统程序。

6)写0xFFFF,清除以Upgrade_Addr为起始位置的待升级系统存储区中的原有数据,将新生成的系统程序覆盖到该区域。

7)清除升级标志。

8)跳转到待升级系统程序存储区,交换Origin_Addr与Upgrade_Addr的值后,执行新系统程序。

实施例4

在另一示例性实施例中,基于上述方法和系统,提供一种远程升级方法,具体实现坠砣终端的在线配置更新升级,此方法满足在线配置更新升级时不影响系统正常运行的实时性要求,具体实施如下步骤:

S1、封装配置更新数据包:当后端系统需要对坠砣终端进行配置更新时,后端系统依据配置规范,封装配置更新数据包,其中配置更新参数包括:

具体描述信息如表1所示。

表1参数具体说明表

数据包封装完成后还需要对配置验证和合规性检查,包括验证配置格式的正确性、参数范围的合法性、配置项的依赖关系等,确保配置信息的一致性和有效性。检查无误后进入步骤S2,否则重新执行步骤S1。

S2、发送配置更新数据包:后端系统的服务器依据配置更新数据包里的central_node_id参数项与对应的中心节点通过4G模块建立通信连接,连接成功后,将配置更新数据包发送给中心节点,中心节点根据MD5算法计算出checksum值,与配置更新数据包里的值相比较,若值相同,依据配置更新数据包里的device_id参数项将数据包发送给对应坠砣终端,否则重新执行步骤S2,直到发送成功或超过最大重传次数后向服务器报告并退出整个更新过程。坠砣终端收到数据包后,仍按照MD5算法进行校验,若校验值相同,通过中心节点向服务器返回接收成功报文,并执行步骤S3,否则重新执行步骤S2,直到发送成功或超过最大重传次数后向服务器报告并退出整个更新过程。

S3、配置更新:坠砣终端调用配置更新接口,对配置更新数据包进行分析,依据配置命令类型(command_type)的值,进行相应的操作。例如当指令类型的值为add时,根据配置项的标识(config_item_id),判断是否已存在该配置项,也就是查询该配置项对应的任务控制块(TCB)是否存在。如果已存在,更新现有任务控制块配置项的值;如果配置项不存在,则通过调用acoral_create_thread()接口,创建一个新的任务控制块,将新的配置项标识(config_item_id)和值(config_value)加入到任务控制块中,完成配置项的添加后,根据配置生效时间(effective_time),确保配置在指定时间生效,也就是任务控制块创建完成后先依据配置生效时间挂载到延时队列上,直到指定时间到达任务控制块才从延时队列链表上取下,添加到就绪队列链表上,等待CPU的调度,完成更新操作。同样地,当指令类型的值为update、delete时,也是对对应的TCB进行增、删、改操作,配置更新完成后,坠砣终端通过中心节点发送配置完成报文至服务器,程序结束。

实施例5

在另一示例性实施例中,基于上述方法和系统,提供一种远程升级方法,具体实现坠砣终端应用程序的在线差分升级。本实施例针对在智能坠砣终端这类硬件资源有限、运行环境恶劣的设备上,差分升级还未能有效应用的问题,将HPatchLite应用在智能坠砣终端上,再加上为超小型嵌入式设备设计的无损压缩算法TinyUz。测试结果表明使用HPatchLite+TinyUz算法,代码编译后仅占约1KB内存,运行时占用RAM大小也大约为1KB,设备增量升级的总时间平均降低到了全量更新的1/10。

其中,HPatchLite是HDiffPatch的一个精简版,专门为在超小型嵌入式设备上执行patch功能而优化,编译后的patch代码非常小,仅占用少量Flash;同时,patch时内存也非常小。HPatchLite的基础原理与HDiffPatch一致,不同之处在于HPatchLite为超小型嵌入式设备做了一些针对性的格式设计,在输出补丁时,使用了更简单的格式,因此智能坠砣系统终端的patch代码就更容易简单实现,同时也降低了patch时的资源消耗。

本实施例的具体实施步骤如下:

S1、生成差分压缩文件:通过后端系统文件服务器上create_lite_diff接口,运用HPatchLite中的hdiffi算法将待升级的系统应用程序的二进制文件与原始系统应用程序的二进制文件作差异比较,生成更小体积的差分升级文件,同时使用TinyUz压缩算法对差分升级文件进行快速而高效的无损压缩。

hdiffi算法差分流程:

1)建立原始系统程序OldData的后缀数组OldStr:将OldData分成不同的块,然后对这些块进行排序以构建OldStr,再对此后缀数组进行排序。

2)遍历待升级系统程序NewData:使用迭代器it遍历NewData,同时查找每个迭代器it在OldStr中的插入位置。

3)寻找最长匹配:对于每个迭代器it找到匹配的位置itfound,然后进一步找到最长的相同前缀,确保这个相同前缀的长度大于一个常数。

4)处理匹配的数据段:如果找到了一个满足条件的匹配,则将匹配的NewData数据段用相应的OldData数据段代替。

5)处理覆盖线集合L:对于找到的所有覆盖线,进行如下处理:

a)删除完全被其他线段覆盖的线段。

b)合并其中可以优化的线段,即将在同一条直线上并且间隔很小的线段联接成一条直线段。

c)删除其中独立且较短的线段。

6)生成最佳路径:在剩下的覆盖线中,找到一条穿过它们的最佳路径。具体可以通过计算各种组合的大小代价(带权值的路径搜索)来实现。

7)生成补丁数据PatchData:根据最佳路径和剩余未被覆盖的NewData数据,构建补丁数据PatchData。具体流程如下:

a)将路径直线段数据保存到PatchData中。

b)将未被直线段覆盖的NewData数据拷贝到PatchData中。

8)差分升级文件为生成的PatchData。

进一步地,为了节省坠砣终端设备上解压缩程序、差分升级包等占用的存储空间,采用了一种压缩算法TinyUz,此算法权衡了解压缩内存占用、压缩率、解压缩代码率、解压缩代码速度,使每一项都满足于智能坠砣系统需要,此算法支持仅在1KB RAM内的设备上快速运行,这对于资源有限的智能坠砣终端来说,十分友好。

TinyUz是一个轻量级的压缩算法库,它基于LZ77压缩算法的变种来实现数据压缩,其压缩流程如下:

1)初始化:初始化压缩器,包括设置压缩参数以及分配内存用于存储压缩后的数据。

2)读取输入数据:从差分升级文件中读取数据块。

3)查找匹配:在当前数据块中查找重复的子字符串,此时,算法会维护一个滑动窗口,用于在先前的数据中查找匹配项。

4)生成压缩标记:当找到匹配项时,生成一个压缩标记,指示压缩器如何重建数据。这个标记包括两部分:匹配长度和距离。

5)输出压缩数据:将压缩标记写入输出流。

6)更新滑动窗口:将滑动窗口向前移动,以包含新的数据。

7)重复步骤2)至步骤6),直到所有数据块都被处理。

8)结束压缩:释放分配的内存,完成压缩过程。

当差分压缩文件生成完毕后,运行步骤S2。

S2、传输差分数据包:生成差分压缩文件后,还需要对整个文件进行分包处理,根据坠砣终端所处的网络环境和设备能力等因素,将差分压缩文件分割成容量为240字节的数据包,除末尾数据包按实际剩余大小进行划分,同时为每个数据包添加16字节的元数据:包括序列号、校验和、数据长度、时间戳等信息,使实际数据与元数据相加正好为256字节,即每个数据包除末尾数据包以外大小恰好为256字节。后端系统服务器按照构建好的数据包序列通过4G网络传输到对应中心节点,中心节点需检查每个数据包的完整性、校验和,以确保数据包在传输过程中未被损坏或篡改。当一个数据包校验确认无误后,将数据包通过LoRa模块依次发送给对应坠砣终端;当没有收到数据包或校验有误时,向服务器端发送请求重传对应数据包报文。当坠砣终端接收到数据包后,检查其校验和,再确认所有数据包接收完毕并且无误后,运行步骤S3,否则向服务器端发送请求重传对应数据包报文,若重传次数超过最大设定值,则向服务器发送传输失败报文,删去所有接收到的数据包并退出整个升级过程。

S3、差分升级:坠砣终端调用差分升级接口,先按照顺序对验证成功的数据包进行重组、整合,生成原始的差分压缩文件。对差分压缩文件进行解压缩:解压缩时,只需按照相应的解压缩算法逆向操作即可还原原始数据,TinyUz解压缩流程如下:

1)初始化:初始化解压缩器,设置解压参数,并分配内存用于存储解压后的数据。

2)读取压缩数据:从压缩的差分升级文件中读取压缩标记。

3)解析压缩标记:解析压缩标记,以获取匹配长度和距离。

4)重建数据:使用匹配长度和距离信息,在滑动窗口中找到匹配项,并将匹配项添加到解压后的数据中。

5)更新滑动窗口:将滑动窗口向前移动,以包含新解压的数据。

6)重复步骤2)至步骤5,直到所有压缩数据都被解压。

7)结束解压缩:释放分配的内存,完成解压缩过程,得到PatchData。

解压缩完成后,读出原始用户程序存储区里的OldData,按照PatchData中的直线段描述,将OldData中的数据拷贝至NewData数据区中,再将PatchData中的差异部分拷贝至NewData中,完成解差分,得到待升级的系统程序。将待升级的系统程序存放在对应的APP区域,由Bootloader程序引导跳转到指定位置,运行待升级系统程序,系统升级完成。

实施例6

在另一示例性实施例中,本发明提供一种计算机存储介质,其上存储有计算机指令,所述计算机指令运行时执行所述一种远程升级方法中相关步骤。

基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

实施例7

在另一示例性实施例中,本发明提供一种终端,包括存储器和处理器,存储器上存储有可在处理器上运行的计算机指令,处理器运行计算机指令时执行所述一种远程升级方法中相关步骤。

处理器可以是单核或者多核中央处理单元或者特定的集成电路,或者配置成实施本发明的一个或者多个集成电路。

本说明书中描述的主题及功能操作的实施例可以在以下中实现:有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。

本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。

适合用于执行计算机程序的处理器包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。

虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。

以上具体实施方式是对本发明的详细说明,不能认定本发明的具体实施方式只局限于这些说明,对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演和替代,都应当视为属于本发明的保护范围。

相关技术
  • 一种板材专用钻孔装置及其使用方法
  • 一种从动圆锥齿轮专用自动螺丝拆卸装置及使用方法
  • 一种堆焊管道专用的水冷却装置及其使用方法
  • 一种专用于报废汽车轮毂的挤压装置及其使用方法
  • 一种肉羊养殖专用饲料造粒装置及其使用方法
  • 一种门板专用一体加工装置及使用方法
  • 一种门板专用一体加工装置
技术分类

06120116521608