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

稳定的远程升级方法

文献发布时间:2023-06-19 11:29:13


稳定的远程升级方法

技术领域

本申请涉及软件升级技术领域,特别涉及一种稳定的远程软件升级方法。

背景技术

随着技术的快速发展,各种测温设备广泛应用于生活中。

为了响应不同市场的需求,申请人作为测温设备的设备厂商,其市场布局不断扩大,相关测温设备不仅在全国各地在使用,甚至全世界各个地方亦有布局。

但是,随着市场不断扩大,产品维护成为的痛点问题,申请人作为设备厂商需要前往全国乃至全球不同的地区进行设备维护,或者将测温设备返厂维护,维护成本高,影响用户体验。

发明内容

本申请实施例提供一种稳定的远程升级方法,以实现对测温设备的远程升级,且升级过程稳定可靠。

本申请实施例提供了一种稳定的远程升级方法,该方法响应于用户一键升级操作指令,使测温模块端执行的步骤包括:

S1:接收APK发送的升级控制指令;

S2:判断所述升级控制指令是否正确;

S3:当所述升级控制指令正确时,重启测温模块端;

S4:重启后,判断所述升级控制指令的升级标志是否已经写入,若是,则清空APP代码区域并进入升级模式。

进一步,所述升级控制指令的数据结构为前导字、长度、控制位、升级包长度、升级包校验和校验位。

进一步,所述步骤S2具体为:

若所述该升级控制指令符合全部的升级指令条件,则判定该升级控制指令正确;

若所述该升级控制指令不符合任一的升级指令条件,则判定该升级控制指令不正确。

进一步,所述升级指令条件至少包括以下其中一项:

所述升级控制指令的前导字与协议中固定的前导字相同;

所述升级控制指令的长度等于接收到的升级控制指令总长度减前导字长度;

所述升级控制指令的控制位为升级模块任务的标志;

所述升级控制指令的校验位与根据长度、控制位、升级包长度和升级包检验按位异或计算得到的结果相同;

所述升级控制指令的升级包长度在预设的升级包长度范围内。

进一步,在进入升级模式后,该方法还包括:

向Android端发送模块状态上报指令,以通知Android端所述测温模块已经进入升级模式。

进一步,接收APK发送的升级包,其中,所述升级包是在Android端接收到测温模块端的模块状态上报指令后由APK分包发送的。

进一步,在重启测温模块端之前,还包括:

将该升级控制指令的升级标志、升级包长度、升级包校验保存到Flash中。

进一步,在所述升级包接收完毕后,该方法还包括:

判断接收到的升级包的升级包长度与升级控制指令中的升级包长度是否一致;若否,则返回错误升级报文,并返回步骤S1。

进一步,在所述升级包接收完毕后,该方法还包括:

计算APP代码区域中每一帧数据的CRC校验和;

判断所述APP代码区域中每一帧数据的CRC校验和与升级控制指令中的CRC校验和是否一致;

若否,则返回错误升级报文,并返回步骤S1。

进一步,该方法还包括:

在升级完成后清空Flash中保存的升级包长度、CRC校验和、以及升级标志;返回升级成功确认报文。

在本申请实施例中,响应于用户一键升级操作指令,测温模块端接收APK发送的升级控制指令,并且在所述升级控制指令正确时,重启测温模块端,待测温模块端重启后清空APP代码区域并进入升级模式,提高了远程升级的稳定性。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例的远程升级方法的流程图。

具体实施方式

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

在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。

取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

如图1所示,为本申请实施例的稳定的远程升级方法的方法流程图,该方法响应于用户一键升级操作指令,使测温模块端执行的以下步骤:

S1:接收APK发送的升级控制指令。

所述APK为Android应用程序安装包,在本申请实施例中,尤指用于对测温模块进行远程升级的程序安装包。

开发人员在修改好测温模块的驱动程序或者测温算法程序之后,编译生成测温模块的升级文件project.bin,进一步将生成的project.bin,打包到APK里。

所述APK被存储在本申请实施例的Android端,用户在Android端能够打开所述APK,并在打开该APK后点击“一键升级”,响应于用户的一键升级操作指令,APK向测温模块端发送升级控制指令。响应于用户的一键升级操作指令,APK负责将project.bin解析为一个大的unsigned char型大数组,进而将数组分包发送到测温模块中。

其中,所述测温模块端与Android端通讯连接,可选地,可通过USB或远程连接。在用户点击“一键升级”后,所述测温模块端响应于用户一键升级操作指令,执行申请实施例的方法步骤。

所述测温模块的模块代码区域包括Boot loader代码区域和App代码区域,其中,所述Boot loader代码区域用于远程升级和引导进入app代码区域,App代码区域保存的代码是测温模块的核心,包含了测温模块的驱动和测温算法等。

S2:判断所述升级控制指令是否正确。

在本申请实施例中,通过判断所述升级控制指令是否正确,以校验升级控制指令的完整性和正确性,显著提高了远程升级的稳定性。

其中,所述升级控制指令的数据结构为前导字、长度、控制位、升级包长度、升级包校验和校验位。

在本申请实施例中,所述判断所述升级控制指令是否正确具体为:

若所述该升级控制指令符合全部的升级指令条件,则判定该升级控制指令正确;

若所述该升级控制指令不符合任一的升级指令条件,则判定该升级控制指令不正确。

所述升级指令条件至少包括以下其中一项:

(1)所述前导字与协议中固定的前导字相同。所述协议为测温模块端与Android端的通讯协议。

当前导字与协议中固定的前导字不相同时,则会判定该控制指令为干扰指令或错误指令。

(2)所述长度等于接收到的升级控制指令总长度减前导字长度;所述长度等于控制位+升级包长度+升级包检验+校验位的总长度。

(3)所述控制位为升级模块任务的标志;如上表所示,80,20则代表升级标志。如果没接收到这个标志即本次任务并非升级任务。

(4)所述校验位与根据长度、控制位、升级包长度和升级包检验按位异或计算得到的结果相同;

(5)所述升级包长度在预设的升级包长度范围内。其中,测温模块中分别设置了升级包长度的最小和最大的阀值,当长度比设定的最小阀值小或比最大阀值大,该数据帧都会被丢弃。

优选地,所述升级指令条件包括上述条件(1)-(5)。

优选地,在判断所述升级控制指令是否正确时,按照一定顺序先后对所述升级指令条件(1)-(5)的进行判断,且当上一个条件符合时,则进行下一个条件的判断。当其中一个条件不符合时,则结束判断。例如:按照(1)-(5)的顺序进行判断,如果条件(1)符合,则继续判断条件(2),直至某个条件不符合或者全部符合结束。或者按照(3)、(1)(2)(4)(5)的顺序进行判断。

S3:当所述升级控制指令正确时,重启测温模块端。

其中,在重启测温模块端之前,还包括:将该升级控制指令的升级标志、升级包长度、升级包校验保存到Flash中。

在本申请实施例中,所述Flash为闪存。所述升级包校验为CRC校验和,也即循环冗余校验码。优选地为CRC16校验和,其通过计算公式计算得到。

通过将升级包长度、升级包校验保存到Flash中,方便后续步骤对传送的数据帧进行完整性和正确性的校验,以进一步提高升级的稳定性。

S4:重启后,判断所述升级控制指令的升级标志是否已经写入,若是,则清空APP代码区域并进入升级模式。

进一步,本申请实施例的升级方法,在进入升级模式后,还包括步骤S5:

向Android端发送模块状态上报指令,以通知Android端所述测温模块已经进入升级模式。

进一步,本申请实施例的升级方法,还包括步骤S6:

接收APK发送的升级包,其中,所述升级包是在Android端接收到测温模块端的模块状态上报指令后由APK分包发送的。

具体地,在Android端接收到测温模块端的模块状态上报指令后,APK分包发送unsigned char型大数组。每一包发送完成,测温模块端会回复一条确认报文,通知Android端本次数据已经接收完毕并写入到Flash里。

进一步,本申请实施例的升级方法,在所述升级包接收完毕后,还包括步骤S7:

判断接收到的升级包的升级包长度与升级控制指令中的升级包长度是否一致;若否,则返回错误升级报文,并返回步骤S1。

通过升级包长度校验机制,从而可以保证数据传输的过程中是否存在缺帧,丢帧等接收数据丢失的问题。

进一步,本申请实施例的升级方法,在所述升级包接收完毕后,还包括步骤S8:

计算APP代码区域中每一帧数据的CRC校验和;

判断所述APP代码区域中每一帧数据的CRC校验和与升级控制指令中的CRC校验和是否一致;

若否,则返回错误升级报文,并返回步骤S1。

如此操作,能够有效检测到接收到的数据帧是否存在错误,例如需要传输的是0x12实际传输的是0x10。

进一步,本申请实施例的方法还包括步骤S9:

在升级完成后,清空Flash中保存的升级包长度、CRC校验和、以及升级标志;

返回升级成功确认报文。

本申请实施例,通过上述步骤S7和步骤S8,能够有效的将升级遇到的错误规避。

为了进一步规避存在数据帧错误的问题。优选地,本申请实施例的方法,在步骤S8之后,还包括步骤:

S101:判定升级状态为“升级预成功”;其中,具体地,由Bootloader代码区域进行判断。

S102:清空Flash中保存的升级包长度、CRC校验和、以及升级标志。

S103:向Flash中写入标志位,定义为完成升级标志。

具体地,所述标志位标志本次升级是由应用远程升级完成,定义为完成升级标志。

进一步,本申请实施例的方法,还包括:

重启测温模块,进入bootloader模式;

在判断到完成升级标志时,初始化数据接收通道。具体地,在进入bootloader模式后,初始化预设时间,如在本申请实施例中,初始化3秒。

进入app代码区域,判断是否读取到测温模块的版本号,

若是,则清空所述完成升级标志,完成整个升级过程。

若否,则控制测温模块端重新上下电,并重新发送升级命令,让模块重新升级。其中,当应用读到模块版本即app正常跑起来。当应用发送查询模块版本读不到版本号,判断测温模块的App没跑起来。

进一步,本申请实施例的方法,还包括:在初始化数据接收通道后,实时监控是否有升级命令传入,且在接收到升级命令时,重新开始升级。

在本申请实施例中,响应于用户一键升级操作指令,测温模块端接收APK发送的升级控制指令,并且在所述升级控制指令正确时,重启测温模块端,待测温模块端重启后清空APP代码区域并进入升级模式,提高了远程升级的稳定性。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

相关技术
  • 一种远程升级方法、远程升级的终端设备以及远程升级系统
  • 稳定的远程升级方法
技术分类

06120112942352