CN110716727A - 软件升级方法及*** - Google Patents
软件升级方法及*** Download PDFInfo
- Publication number
- CN110716727A CN110716727A CN201910822054.9A CN201910822054A CN110716727A CN 110716727 A CN110716727 A CN 110716727A CN 201910822054 A CN201910822054 A CN 201910822054A CN 110716727 A CN110716727 A CN 110716727A
- Authority
- CN
- China
- Prior art keywords
- upgrade
- segmented
- upgrading
- software
- packages
- 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
Images
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出一种软件升级方法及***,该方法包括以下步骤:对软件升级包进行预处理,得到多个分段升级包;将多个分段升级包存入服务器中,并记录分段升级包的相关信息;接收软件升级请求,并根据软件升级请求确认是否进行升级;当确定升级时,逐段传输请求的多个分段升级包的内容,并写入升级缓存区;当多个分段升级包的内容全部传输完成时,加载多个分段升级包的内容,实现软件升级。本发明能够减少软件升级过程中的通信次数、设备缓存内存中占用的空间和设备对数据的处理过程,有效减少下载缓冲区空间大小的限制,提高软件升级的可靠性和效率,可用于存储空间有限的设备,适用性强。
Description
技术领域
本发明涉及软件技术领域,特别涉及一种软件升级方法及***。
背景技术
由于嵌入式设备在实验室环境或者在真实环境测试条件有限,尽管出厂前做了很详尽的模拟测试,但是最终到达真实用户的手中,遇到的环境会更复杂,可能会出现一些轻微的差异,也可能出现阻塞的问题,造成用户体验不理想,或者因为功能的不断更新,设备软件更新不及时导致用户体验差。这时候,就需要一种远程升级***或者软件的手段,更新嵌入式设备中的***或者软件。
FOTA(Firmware Over-The-Air,移动终端的空中下载软件升级),是通过空中下载的方式,对***或者软件升级的一种升级手段,从服务端获取软件,替换原***或者软件以完成***修复和优化。
对于嵌入式设备而言,主要是因为成本限制,储存空间非常有限,特别是低成本的嵌入式设备,运行内存和Flash内存更加有限。目前一般的升级方法是将新的内存直接整块下载到缓存空间中,然后开机复制整块内存到主内存中。对于存储空间充足的设备来说,这种方式是比较可靠和有效率的;但是对于存储空间有限的设备,如内存达不到1倍剩余空间的设备来说,这样升级方式就无法适用,导致升级的可靠性和效率不高。
发明内容
本发明旨在至少解决上述技术问题之一。
为此,本发明的一个目的在于提出一种软件升级方法,该方法能够减少软件升级过程中的通信次数、设备缓存内存中占用的空间和设备对数据的处理过程,有效减少下载缓冲区空间大小的限制,提高软件升级的可靠性和效率,可用于存储空间有限的设备,适用性强。
本发明的第二个目的在于提出一种软件升级***。
为了实现上述目的,本发明第一方面的实施例提出了一种软件升级方法,包括以下步骤:对软件升级包进行预处理,得到多个分段升级包;将多个所述分段升级包存入服务器中,并记录所述分段升级包的相关信息;接收软件升级请求,并根据所述软件升级请求确认是否进行升级;当确定升级时,逐段传输请求的多个所述分段升级包的内容,并写入升级缓存区;当多个所述分段升级包的内容全部传输完成时,加载多个所述分段升级包的内容,实现软件升级。
根据本发明实施例的软件升级方法,对软件升级包进行预处理,得到多个分段升级包,在确定对设备软件升级时,逐段传输多个分段升级包的内容,并写入升级缓存区,传输完成后加载运行多个分段升级包实现软件升级,从而能够减少软件升级过程中的通信次数、设备缓存内存中占用的空间和设备对数据的处理过程,有效减少下载缓冲区空间大小的限制,提高软件升级的可靠性和效率,可用于存储空间有限的设备,适用性强。
另外,根据本发明上述实施例的软件升级方法还可以具有如下附加的技术特征:
在一些示例中,所述对软件升级包进行预处理,包括:按照连续的地址对所述软件升级包进行分段,依次将每段内容、对应的写入地址、内容长度及校验和合成为一个所述分段升级包。
在一些示例中,所述每个分段升级包的内容长度为8的倍数。
在一些示例中,所述每个分段升级包的相关信息至少包括:产品名称、固件版本、软件版本号、软件版本代号、升级包文件大小、每页大小、总页数及升级包文件校验。
在一些示例中,所述软件升级请求包括:查询请求及设备的产品名称和固件版本的升级包版本信息,所述接收软件升级请求,并根据所述软件升级请求确认是否进行升级,包括:服务器根据所述查询请求,判断是否存在对应于产品名称和固件版本的升级包版本信息的分段升级包;如果存在,则向设备回复对应的版本信息,以确定升级;否则,回复设备请求的版本号,且将分段升级包其他信息置零,不进行升级。
在一些示例中,逐段传输多个所述分段升级包的内容,包括:如果所述产品名称和固件版本不匹配,则丢弃本次请求的结果。
在一些示例中,逐段传输多个所述分段升级包的内容,还包括:如果收到的当前最新软件版本代号发生变动,则清除升级缓冲区的全部内容,丢弃历史下载内容,退出本次升级;如果收到的当前最新软件版本代号一致,但是当前页内容长度为0,则清除升级缓冲区的全部内容,丢弃历史下载内容,退出本次升级;如果收到的当前最新软件版本代号一致,且内容长度正常,则保存该内容到所述升级缓冲区。
在一些示例中,所述写入升级缓存区,包括:当接收到的新的版本信息和记录的版本信息有变动时,清除所述升级缓存区,记录新的版本信息;在所述新的版本信息的起始位置,使用一个标志位表示是否下载完成,初始状态为0;按顺序获取分段升级包,校验该分段升级包的校验和,并在分段升级包内容正常时,将该段分段升级包写入升级缓存区;当全部分段升级包都获取并完整写入升级缓存区时,修改完成标志位为1。
在一些示例中,所述加载多个所述分段升级包的内容,包括:读取完成标志位,如果完成标志位为0,则不加载多个所述分段升级包的内容;根据软件升级包的总长度,确认计算所有内容的校验和,和预存的校验和进行比对,如果一致,则加载多个所述分段升级包的内容,如果不一致,则不加载多个所述分段升级包的内容;读取每行的内容,复制到对应的地址;全部复制完成后,重新加载运行。
为了实现上述目的,本发明第二方面的实施例提出了一种软件升级***,包括:预处理模块,用于对软件升级包进行预处理,得到多个分段升级包;存储模块,用于将多个所述分段升级包存入服务器中,并记录所述分段升级包的相关信息;请求判断模块,用于接收软件升级请求,并根据所述软件升级请求确认是否进行升级;请求应答模块,用于当确定升级时,逐段传输请求的多个所述分段升级包的内容;写入模块,用于将多个所述分段升级包的内容写入升级缓存区;加载模块,用于当多个所述分段升级包的内容全部传输完成时,加载多个所述分段升级包的内容,实现软件升级。
根据本发明实施例的软件升级***,对软件升级包进行预处理,得到多个分段升级包,在确定对设备软件升级时,逐段传输多个分段升级包的内容,并写入升级缓存区,传输完成后加载运行多个分段升级包实现软件升级,从而能够减少软件升级过程中的通信次数、设备缓存内存中占用的空间和设备对数据的处理过程,有效减少下载缓冲区空间大小的限制,提高软件升级的可靠性和效率,可用于存储空间有限的设备,适用性强。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是根据本发明一个实施例的软件升级方法的流程图;
图2是根据本发明一个具体实施例的软件升级过程中设备通讯示意图;
图3是根据本发明一个具体实施例的设备采用无线通讯方式示意图;
图4是根据本发明一个具体实施例的设备采用有线通讯方式示意图;
图5是根据本发明一个具体实施例的嵌入式设备软件在内存中的位置示意图;
图6是根据本发明一个实施例的每个分段升级包的基本格式示意图;
图7是根据本发明一个具体实施例的一个分段升级包的示例图;
图8是根据本发明一个具体实施例的嵌入式设备向服务器查询版本信息的过程示意图;
图9是根据本发明一个具体实施例的嵌入式设备向服务器获取分段升级包的内容的过程示意图;
图10是根据本发明一个具体实施例的FOTA缓存区结构示意图;
图11是根据本发明一个具体实施例的版本确认加载整体流程示意图;
图12是根据本发明一个实施例的软件升级***的结构框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
以下结合附图描述根据本发明实施例的软件升级方法及***。
本发明实施例的软件升级方法可以在一定的程度上减少下载缓冲区空间大小的限制或提供一种有用的FOTA选择方式,允许设备通过空中下载的方式,并利用有限的内存空间,完成***修复和优化,特别的,允许进行断点续传。
在具体实施例中,该方法实现过程中所涉及的硬件主要包括嵌入式设备和主机(即服务器)。如图2所示,嵌入式设备通过定时请求或者由服务器下发命令触发请求,向服务器请求新的版本信息。当版本信息与服务器应答的版本信息有变动的时候,就会开始请求新的软件内容。具体的,将预处理的升级包至于服务器中,嵌入式设备通过传输载体,请求并获取升级包。
进一步的,嵌入式设备和服务器之间,可以通过有线的载体进行通信,也可以通过无线的方式进行通信。
如图3所示,嵌入式设备和服务器通过无线的方式进行直连,如GPRS、4G等方式。只要设备和服务器间能正常进行交互,即可进行。
如图4所示,嵌入式设备和服务器通过有线的方式进行直连,如串口RS232或者RS485等方式。只要设备和主机间能正常进行交互,即可进行。
总的来说,本发明实施例的软件升级方法首先需要先对需要远程升级到嵌入式设备的软件进行预处理,得到升级包,并放置于FOTA服务器中;然后嵌入式设备定时或者按需向服务器请求最新的版本信息,根据获取到的版本信息确认是否需要进一步获取升级包的内容;当需要更新时,通过按页分段不断请求升级包的内容,写入升级缓存区;最后在完整下载整个升级包之后,加载运行新的软件,从而实现软件升级。
具体的,图1是根据本发明一个实施例的软件升级方法的流程图。如图1所示,该软件升级方法控制方法,包括以下步骤:
步骤S1:对软件升级包进行预处理,得到多个分段升级包。
具体的说,一般待写入嵌入式设备的软件,在内存中的形式如图5所示。嵌入式设备的软件包主要具有以下特性:
1.存在一定的地址连续空间;
2.可能存在不连续的地址空间,中间为未初始化内容0x00或者0xFF;
3.地址连续的空间,长度不是特定的倍数。
因此,为了减少通信过程、在嵌入式设备缓存内存中占用的空间和减少嵌入式对接收到的数据的处理步骤,在本发明的一个实施例中,对软件升级包进行预处理的过程,包括:按照连续的地址对软件升级包进行分段,依次将每段内容、对应的写入地址、内容长度及校验和合成为一个分段升级包。进而,当终端收到该段升级包后,直接整段写入FOTA缓存区。
在具体实施例中,每段升级包的格式如图6所示,依次为写入地址、内容长度、内容和校验和。
在具体实施例中,首先将软件升级包(即源包),按照约定的长度N进行分段,得到分段内容。如图7所示,展示了对软件升级包进行分段后得到多个分段升级包的示例。
具体如何选择分割长度,可以根据实际的需求进行自由选择。在本发明的一个实施例中,为了提高传输和存储的过程中的便利,合成的每段升级包的内容长度为8的倍数。
分割长度N具体如何确定,可以根据具体的情况进行选择,例如可以根据flash特性进行选择。一般来说,flash都是按页擦除的,如4KB,都是8的整数倍,可以选择8的倍数进行分割,如每行升级包长度定为128字节,地址选择4个字节,内容长度选择2字节,检验和选择1字节,则N为128-4-2-1=121字节,这样每段内容都不会分开存于不同内存页,擦除起来也比较方便。也可以根据通信带宽进行选择分割长度N,如使用4G网络进行通信,可以把N选得特别大。
进一步地,如图6所示,每段升级包的最前面的为该段内容待写入嵌入式设备运行空间的相对地址,即地址偏移量。其中,参考地址可根据实际嵌入式软件代码空间进行约定,如某型号的嵌入式代码空间从0x8000开始,则参考地址可选择为0x8000,升级包的某段内容需要写入0x802F开始的地方,则地址偏移量为0x802F-0x8000即0x2F。当参考地址为0x00,升级包的某段内容需要写入0x802F开始的地方,则地址偏移量为0x802F-0x000即0x802F。具体如何选择参考地址,可以根据实际的需求自由选择,选择的原则主要:需要且仅需要覆盖后续需要升级的空间。
也就是说,本发明的实施例通过选择不同的参考地址,开放或者保护所需要的内存空间。当需要确保升级的过程不会影响到升级部分的逻辑,可以将升级处理代码固定在较前面的地址空间,然后参考地址选择从该地址空间以后的地址。当需要升级的过程,可以直接覆盖升级更多的空间,可以选择靠前的空间地址作为参考地址。
另外,参考地址的范围大小,根据实际的空间进行选择,这样,能够最大限度的利用有限的空间。如嵌入式存储空间比较小,为了减少分段包对FOTA缓存区的占用,可以选择16位的相对地址,即2字节;有些嵌入式型号,内存大小可能达到MB级别或者是32位的***,为了覆盖更多的空间,可以直接选择32位的相对地址,4字节。
进一步地,如图6所示,每个分段升级包第二部分的内容为该段源包内容的长度,其范围可以根据源包分段长度N进行选择,如果N<256,可以选择1字节无符号整型表示,只要范围覆盖分段长度N即可。
进一步地,计算每个分段升级包的校验和。其中校验和为本行前面所有内容的校验和,包括地址、长度和内容。根据嵌入式运算速度,选择合适的校验和计算公式。如,简单的按字符异或,或者CRC16等。
步骤S2:将多个分段升级包存入服务器中,并记录分段升级包的相关信息。
具体的,每个分段升级包的相关信息至少包括:产品名称、固件版本、软件版本号、软件版本代号、升级包文件大小、每页大小、总页数及升级包文件校验。详细说明如下:
产品名称(product):表示该升级包只用于某种产品名的升级请求。
固件版本FV(firmware version):表示该升级包适用的不同的固件版本。不同的FV,表示兼容性,用于区分不同的硬件或者不同的升级特性。
软件版本号SV(software version):表示该升级包对应的版本。
软件版本代号SVC(software version Code):表示该升级包对应的版本,用非0x00和非0xFF的整数表示,相邻的几个版本的代码应该取不同的值表示,便于后续步骤,根据代号值区分各分段包版本是否一致。
升级包文件大小TL(total length):表示升级包文件总大小。
每页大小CPP(count peer page):表示升级包分段的长度。
总页数PC(page counts):表示升级包分段的数量。
升级包文件校验CS(file checksum):表示升级包文件的校验和。
步骤S3:接收软件升级请求,并根据软件升级请求确认是否进行升级。
在本发明的一个实施例中,软件升级请求包括:查询请求及设备的产品名称和固件版本的升级包版本信息。基于此,接收软件升级请求,并根据软件升级请求确认是否进行升级,包括:服务器根据查询请求,判断是否存在对应于产品名称和固件版本的升级包版本信息的分段升级包;如果存在,则向设备回复对应的版本信息,以确定升级;否则,回复设备请求的版本号,且将分段升级包其他信息置零,不进行升级。
换言之,即首先,嵌入式设备向服务器发送查询请求CHECK,获取匹配当前设备产品名称和固件版本的升级包版本信息。其中,查询请求至少包含以下内容:设备唯一标识sn、产品名称product、固件版本FV、当前软件版本号SV。服务器根据查询请求,查询产品名称和固件版本是否存在对应的升级包,然后给设备回复查询到的升级包版本信息。其中,服务器应答至少包括以下内容:服务器当前最新软件版本号SV、服务器当前最新软件版本代号SVC、升级包文件大小TL、每页大小CPP、总页数PC、升级包文件校验CS。
例如图8所示,展示了嵌入式设备向服务器发送查询请求,获取到相应的版本信息的过程。具体的说,当设备(即嵌入式设备)向服务器请求的版本存在预处理升级包文件,服务器应回复对应的版本信息,确认升级;当查询的版本不存在预处理升级包文件时,服务器应该回复设备请求的版本号,升级包其他信息用0,表示不存在改升级版本。
举例说明:设备向平台请求查询版本号A,从服务器拿到新的版本号B,存在以下几种情况:
a)当版本B等于A,则认为版本未更新。
b)当版本B不等于A,且存在版本信息不为0,则认为版本变动。
c)当版本B不等于A,且版本信息为0,应该认为版本未更新。
当版本发生变动时,清除全部缓冲区内容。
步骤S4:当确定升级时,逐段传输请求的多个分段升级包的内容,并写入升级缓存区。
在本发明的一个实施例中,逐段传输多个分段升级包的内容,包括:如果产品名称和固件版本不匹配,则丢弃本次请求的结果。
在本发明的一个实施例中,逐段传输多个分段升级包的内容,还包括:如果收到的当前最新软件版本代号发生变动,则清除升级缓冲区的全部内容,丢弃历史下载内容,退出本次升级;如果收到的当前最新软件版本代号一致,但是当前页内容长度为0,则清除升级缓冲区的全部内容,丢弃历史下载内容,退出本次升级;如果收到的当前最新软件版本代号一致,且内容长度正常,则保存该内容到升级缓冲区。
具体的说,嵌入式设备根据获取到的版本信息,判断是否有更新或者未完成,然后按需发送获取内容请求CONTENT,从服务器请求升级包的内容。其中,该请求至少包含以下内容:设备唯一标识sn、产品名称product、固件版本FV(firmware version)、当前软件版本号SV(software version)、请求页page。需注意的是:CHECK和CONTENT只是表示使用不同的命令请求,可以简单的使用关键词A和B,也可以使用不同的字符串进行区分,甚至可以使用类似WEBURL进行表示,如/ota/check?sn=1234&product=one&fv=K1&sv=1.2.3表示查询版本信息。
进一步地,服务器接收到设备内容请求,回复相应的分段包。其中,服务器应答至少包括以下内容:请求页page、服务器当前最新软件版本代号SVC(software versionCode)、当前页内容长度length、当前页内容content、当前页校验CS(file checksum),例如图9所示。
当服务器收到设备的内容请求时,需要匹配product和FV,如果product,和FV不存在对应的预处理升级包,则返回的的请求结果,全部为0x00。
当设备收到服务器应答时,存在以下几种情况:1、校验不匹配,丢弃该次请求的结果。2、当版本代号SVC发生变动时,需要清除全部缓冲区内容,丢弃历史下载,退出本次升级。3、收到的应答SVC一致,但是当前页内容长度length为0,需要清除全部缓冲区内容,丢弃历史下载,退出本次升级。4、当收到的应答SVC一致,长度正常时,保存改内容到缓冲器page*PC地址。
在本发明的一个实施例中,写入升级缓存区的过程,包括:当接收到的新的版本信息和记录的版本信息有变动时,清除升级缓存区,记录新的版本信息;在新的版本信息的起始位置,使用一个标志位表示是否下载完成,初始状态为0;按顺序获取分段升级包,校验该分段升级包的校验和,并在分段升级包内容正常时,将该段分段升级包写入升级缓存区;当全部分段升级包都获取并完整写入升级缓存区时,修改完成标志位为1。
具体的说,结合图10所示,首先,嵌入式设备从服务器查询新版本信息后,当版本信息和记录的版本信息有变动时,清除整块FOTA缓存空间,记录新的版本信息。其中,记录的版本信息包括:升级包文件大小TL(total length)、每页大小CPP(count peer page)、总页数PC(page counts)、升级包文件校验CS(file checksum)。
进一步地,版本信息最开始地方(即起始位置),使用一个标志位表示是否下载完成,标志位的初始状态为0,表示未完成。
进一步地,嵌入式设备从服务器按顺序获取分段包,校验该分段包的校验和,内容正常的,直接将该段分段包写入page*PC地址。
进一步地,当全部分段包都获取并完整写入FOTA缓存区,则修改完成标志位为1,表示该升级包可用。
步骤S5:当多个分段升级包的内容全部传输完成时,加载多个分段升级包的内容,实现软件升级。
在本发明的一个实施例中,加载多个分段升级包的内容的过程,包括:读取完成标志位,如果完成标志位为0,则不加载多个分段升级包的内容;根据软件升级包的总长度,确认计算所有内容的校验和,和预存的校验和进行比对,如果一致,则加载多个分段升级包的内容,如果不一致,则不加载多个分段升级包的内容;读取每行的内容,复制到对应的地址;全部复制完成后,重新加载运行。
具体的,结合图11所示,即首先读取取完成标志位,如果标志位为0,则认为下载未完成,不加载,直接从原版本运行。进一步地,如果标志位为1,则根据文件总长度,确认计算整块内容的checksum,和预存的checksum进行比对,如果一致,则文件可用,如果不一致,则不加载,直接从原版本运行。然后,读取每行内容,复制到对应的地址;最后,全部复制完成后,重新加载运行。
综上,本发明实施例的软件升级方法,先对需要远程升级到嵌入式设备的软件进行预处理,得到分段升级包,并放置于FOTA服务器中;然后嵌入式设备定时或者按需向服务器请求最新的版本信息,根据获取到的版本信息确认是否需要进一步获取升级包的内容;当需要更新时,通过按页分段不断请求升级包的内容,写入升级缓存区;最后在完整下载整个升级包之后,加载运行新的软件,从而实现软件升级。
根据本发明实施例的软件升级方法,对软件升级包进行预处理,得到多个分段升级包,在确定对设备软件升级时,逐段传输多个分段升级包的内容,并写入升级缓存区,传输完成后加载运行多个分段升级包实现软件升级,从而能够减少软件升级过程中的通信次数、设备缓存内存中占用的空间和设备对数据的处理过程,有效减少下载缓冲区空间大小的限制,提高软件升级的可靠性和效率,可用于存储空间有限的设备,适用性强。
本发明的进一步实施例还提出了一种软件升级***。
图12是根据本发明一个实施例的软件升级***的结构框图。如图12所示,该软件升级***100包括:预处理模块110、存储模块120、请求判断模块130、请求应答模块140、写入模块150和加载模块160。
其中,预处理模块110用于对软件升级包进行预处理,得到多个分段升级包。
具体的,预处理模块110用于按照连续的地址对软件升级包进行分段,依次将每段内容、对应的写入地址、内容长度及校验和合成为一个分段升级包,从而减少了通信过程、在嵌入式设备缓存内存中占用的空间和减少嵌入式对接收到的数据的处理步骤。
进一步地,每个分段升级包的内容长度为8的倍数,从而提高了传输和存储的过程中的便利。
存储模块120用于将多个分段升级包存入服务器中,并记录分段升级包的相关信息。
具体的,每个分段升级包的相关信息至少包括:产品名称、固件版本、软件版本号、软件版本代号、升级包文件大小、每页大小、总页数及升级包文件校验。
请求判断模块130用于接收软件升级请求,并根据软件升级请求确认是否进行升级。
在本发明的一个实施例中,软件升级请求包括:查询请求及设备的产品名称和固件版本的升级包版本信息。请求判断模块130接收软件升级请求,并根据软件升级请求确认是否进行升级,包括:根据查询请求,判断是否存在对应于产品名称和固件版本的升级包版本信息的分段升级包;如果存在,则向设备回复对应的版本信息,以确定升级;否则,回复设备请求的版本号,且将分段升级包其他信息置零,不进行升级。
请求应答模块140用于当确定升级时,处理内容传输请求,逐段传输请求的多个分段升级包的内容至升级设备。
在本发明的一个实施例中,请求应答模块140处理内容传输请求,逐段传输请求的多个分段升级包的内容,包括:如果产品名称和固件版本不匹配,则返回为0x00的请求结果。
写入模块150用于当确定升级时,将多个分段升级包的内容写入升级缓存区。
在本发明的一个实施例中,写入模块150用于当产品名称和固件版本不匹配时,丢弃本次请求的结果。
在本发明的一个实施例中,写入模块150还用于:当收到的当前最新软件版本代号发生变动时,清除升级缓冲区的全部内容,丢弃历史下载内容,退出本次升级;当收到的当前最新软件版本代号一致,但是当前页内容长度为0时,清除升级缓冲区的全部内容,丢弃历史下载内容,退出本次升级;当收到的当前最新软件版本代号一致,且内容长度正常时,保存该内容到升级缓冲区。
在本发明的一个实施例中,写入模块150写入升级缓存区,包括:当接收到的新的版本信息和记录的版本信息有变动时,清除升级缓存区,记录新的版本信息;在新的版本信息的起始位置,使用一个标志位表示是否下载完成,初始状态为0;按顺序获取分段升级包,校验该分段升级包的校验和,并在分段升级包内容正常时,将该段分段升级包写入升级缓存区;当全部分段升级包都获取并完整写入升级缓存区时,修改完成标志位为1。
加载模块160用于当多个分段升级包的内容全部传输完成时,加载多个分段升级包的内容,实现软件升级。
在本发明的一个实施例中,加载模块160加载多个分段升级包的内容,包括:读取完成标志位,如果完成标志位为0,则不加载多个分段升级包的内容;根据软件升级包的总长度,确认计算所有内容的校验和,和预存的校验和进行比对,如果一致,则加载多个分段升级包的内容,如果不一致,则不加载多个分段升级包的内容;读取每行的内容,复制到对应的地址;全部复制完成后,重新加载运行。
需要说明的是,本发明实施例的软件升级***的具体实现方式与本发明实施例的软件升级方法的具体实现方式类似,具体请参见方法部分的描述,为了减少冗余,此处不再赘述。
根据本发明实施例的软件升级***,对软件升级包进行预处理,得到多个分段升级包,在确定对设备软件升级时,逐段传输多个分段升级包的内容,并写入升级缓存区,传输完成后加载运行多个分段升级包实现软件升级,从而能够减少软件升级过程中的通信次数、设备缓存内存中占用的空间和设备对数据的处理过程,有效减少下载缓冲区空间大小的限制,提高软件升级的可靠性和效率,可用于存储空间有限的设备,适用性强。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同限定。
Claims (10)
1.一种软件升级方法,其特征在于,包括以下步骤:
对软件升级包进行预处理,得到多个分段升级包;
将多个所述分段升级包存入服务器中,并记录所述分段升级包的相关信息;
接收软件升级请求,并根据所述软件升级请求确认是否进行升级;
当确定升级时,逐段传输请求的多个所述分段升级包的内容,并写入升级缓存区;
当多个所述分段升级包的内容全部传输完成时,加载多个所述分段升级包的内容,实现软件升级。
2.根据权利要求1所述的软件升级方法,其特征在于,所述对软件升级包进行预处理,包括:
按照连续的地址对所述软件升级包进行分段,依次将每段内容、对应的写入地址、内容长度及校验和合成为一个所述分段升级包。
3.根据权利要求2所述的软件升级方法,其特征在于,所述每个分段升级包的内容长度为8的倍数。
4.根据权利要求1所述的软件升级方法,其特征在于,所述每个分段升级包的相关信息至少包括:产品名称、固件版本、软件版本号、软件版本代号、升级包文件大小、每页大小、总页数及升级包文件校验。
5.根据权利要求1所述的软件升级方法,其特征在于,所述软件升级请求包括:查询请求及设备的产品名称和固件版本的升级包版本信息,所述接收软件升级请求,并根据所述软件升级请求确认是否进行升级,包括:
服务器根据所述查询请求,判断是否存在对应于产品名称和固件版本的升级包版本信息的分段升级包;
如果存在,则向设备回复对应的版本信息,以确定升级;
否则,回复设备请求的版本号,且将分段升级包其他信息置零,不进行升级。
6.根据权利要求5所述的软件升级方法,其特征在于,逐段传输多个所述分段升级包的内容,包括:
如果所述产品名称和固件版本不匹配,则丢弃本次请求的结果。
7.根据权利要求6所述的软件升级方法,其特征在于,逐段传输多个所述分段升级包的内容,还包括:
如果收到的当前最新软件版本代号发生变动,则清除升级缓冲区的全部内容,丢弃历史下载内容,退出本次升级;
如果收到的当前最新软件版本代号一致,但是当前页内容长度为0,则清除升级缓冲区的全部内容,丢弃历史下载内容,退出本次升级;
如果收到的当前最新软件版本代号一致,且内容长度正常,则保存该内容到所述升级缓冲区。
8.根据权利要求5所述的软件升级方法,其特征在于,所述写入升级缓存区,包括:
当接收到的新的版本信息和记录的版本信息有变动时,清除所述升级缓存区,记录新的版本信息;
在所述新的版本信息的起始位置,使用一个标志位表示是否下载完成,初始状态为0;
按顺序获取分段升级包,校验该分段升级包的校验和,并在分段升级包内容正常时,将该段分段升级包写入升级缓存区;
当全部分段升级包都获取并完整写入升级缓存区时,修改完成标志位为1。
9.根据权利要求1所述的软件升级方法,其特征在于,所述加载多个所述分段升级包的内容,包括:
读取完成标志位,如果完成标志位为0,则不加载多个所述分段升级包的内容;
根据软件升级包的总长度,确认计算所有内容的校验和,和预存的校验和进行比对,如果一致,则加载多个所述分段升级包的内容,如果不一致,则不加载多个所述分段升级包的内容;
读取每行的内容,复制到对应的地址;
全部复制完成后,重新加载运行。
10.一种软件升级***,其特征在于,包括:
预处理模块,用于对软件升级包进行预处理,得到多个分段升级包;
存储模块,用于将多个所述分段升级包存入服务器中,并记录所述分段升级包的相关信息;
请求判断模块,用于接收软件升级请求,并根据所述软件升级请求确认是否进行升级;
请求应答模块,用于当确定升级时,逐段传输请求的多个所述分段升级包的内容;
写入模块,用于将多个所述分段升级包的内容写入升级缓存区;
加载模块,用于当多个所述分段升级包的内容全部传输完成时,加载多个所述分段升级包的内容,实现软件升级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910822054.9A CN110716727B (zh) | 2019-09-02 | 2019-09-02 | 软件升级方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910822054.9A CN110716727B (zh) | 2019-09-02 | 2019-09-02 | 软件升级方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110716727A true CN110716727A (zh) | 2020-01-21 |
CN110716727B CN110716727B (zh) | 2023-07-21 |
Family
ID=69209640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910822054.9A Active CN110716727B (zh) | 2019-09-02 | 2019-09-02 | 软件升级方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110716727B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111623476A (zh) * | 2020-04-27 | 2020-09-04 | 海信(山东)空调有限公司 | 一种空调器室外eeprom中的数据更新方法、装置及存储介质 |
CN111679843A (zh) * | 2020-04-27 | 2020-09-18 | 海信(山东)空调有限公司 | 一种空调器室外eeprom中的数据更新方法、装置及存储介质 |
CN112732318A (zh) * | 2021-01-12 | 2021-04-30 | 武汉光庭信息技术股份有限公司 | 一种单片机固件升级方法 |
CN112835759A (zh) * | 2021-02-01 | 2021-05-25 | 百度在线网络技术(北京)有限公司 | 测试数据处理方法、装置、电子设备以及存储介质 |
CN113419903A (zh) * | 2021-06-30 | 2021-09-21 | 一汽奔腾轿车有限公司 | 一种ota升级过程中的故障修复方法及*** |
CN113645316A (zh) * | 2021-10-15 | 2021-11-12 | 广东皓耘科技有限公司 | 升级数据处理方法、上位机、下位机、设备及存储介质 |
CN113760332A (zh) * | 2021-08-30 | 2021-12-07 | 青岛信芯微电子科技股份有限公司 | 软件升级方法和电子设备 |
CN113961212A (zh) * | 2021-10-29 | 2022-01-21 | 重庆长安汽车股份有限公司 | 一种基于以太网的ota安装包部署方法及***、升级车辆控制器的方法 |
CN114567628A (zh) * | 2022-02-28 | 2022-05-31 | 中汽创智科技有限公司 | 一种ota升级方法和装置 |
CN115658120A (zh) * | 2022-12-27 | 2023-01-31 | 成都万创科技股份有限公司 | 微电脑通用的ota升级方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050058800A (ko) * | 2003-12-12 | 2005-06-17 | 에스케이텔레텍주식회사 | 이동통신단말기의 소프트웨어 업그레이드 방법 |
WO2007118405A1 (fr) * | 2006-04-19 | 2007-10-25 | Huawei Technologies Co., Ltd. | Dispositif, système et procédé d'exécution de la mise à niveau à distance d'un logiciel |
CN102662697A (zh) * | 2012-03-27 | 2012-09-12 | 深圳市开立科技有限公司 | 一种软件升级方法及装置 |
US20150268944A1 (en) * | 2014-03-20 | 2015-09-24 | Motorola Mobility Llc | Methods and Devices for Wireless Device-To-Device Software Upgrades |
WO2016127587A1 (zh) * | 2015-02-13 | 2016-08-18 | 中兴通讯股份有限公司 | 一种实现软件版本升级的方法和装置 |
CN106250192A (zh) * | 2016-08-04 | 2016-12-21 | 芯讯通无线科技(上海)有限公司 | 上位机的软件升级方法及*** |
CN107301058A (zh) * | 2017-08-28 | 2017-10-27 | 四川长虹电器股份有限公司 | 基于版本号分段控制实施电视***ota升级的方法 |
WO2018076755A1 (zh) * | 2016-10-25 | 2018-05-03 | 西安中兴新软件有限责任公司 | 一种升级包下发方法及装置 |
CN108170460A (zh) * | 2017-12-15 | 2018-06-15 | 杭州中天微***有限公司 | 一种嵌入式***增量升级的方法及装置 |
CN109039779A (zh) * | 2018-09-20 | 2018-12-18 | 珠海格力电器股份有限公司 | 设备升级方法、数据传输单元、控制器局域网络设备和网络 |
-
2019
- 2019-09-02 CN CN201910822054.9A patent/CN110716727B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050058800A (ko) * | 2003-12-12 | 2005-06-17 | 에스케이텔레텍주식회사 | 이동통신단말기의 소프트웨어 업그레이드 방법 |
WO2007118405A1 (fr) * | 2006-04-19 | 2007-10-25 | Huawei Technologies Co., Ltd. | Dispositif, système et procédé d'exécution de la mise à niveau à distance d'un logiciel |
CN102662697A (zh) * | 2012-03-27 | 2012-09-12 | 深圳市开立科技有限公司 | 一种软件升级方法及装置 |
US20150268944A1 (en) * | 2014-03-20 | 2015-09-24 | Motorola Mobility Llc | Methods and Devices for Wireless Device-To-Device Software Upgrades |
WO2016127587A1 (zh) * | 2015-02-13 | 2016-08-18 | 中兴通讯股份有限公司 | 一种实现软件版本升级的方法和装置 |
CN106250192A (zh) * | 2016-08-04 | 2016-12-21 | 芯讯通无线科技(上海)有限公司 | 上位机的软件升级方法及*** |
WO2018076755A1 (zh) * | 2016-10-25 | 2018-05-03 | 西安中兴新软件有限责任公司 | 一种升级包下发方法及装置 |
CN107301058A (zh) * | 2017-08-28 | 2017-10-27 | 四川长虹电器股份有限公司 | 基于版本号分段控制实施电视***ota升级的方法 |
CN108170460A (zh) * | 2017-12-15 | 2018-06-15 | 杭州中天微***有限公司 | 一种嵌入式***增量升级的方法及装置 |
CN109039779A (zh) * | 2018-09-20 | 2018-12-18 | 珠海格力电器股份有限公司 | 设备升级方法、数据传输单元、控制器局域网络设备和网络 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111623476B (zh) * | 2020-04-27 | 2022-05-17 | 海信(山东)空调有限公司 | 一种空调器室外eeprom中的数据更新方法、装置及存储介质 |
CN111679843A (zh) * | 2020-04-27 | 2020-09-18 | 海信(山东)空调有限公司 | 一种空调器室外eeprom中的数据更新方法、装置及存储介质 |
CN111679843B (zh) * | 2020-04-27 | 2022-08-23 | 海信空调有限公司 | 一种空调器室外eeprom中的数据更新方法、装置及存储介质 |
CN111623476A (zh) * | 2020-04-27 | 2020-09-04 | 海信(山东)空调有限公司 | 一种空调器室外eeprom中的数据更新方法、装置及存储介质 |
CN112732318A (zh) * | 2021-01-12 | 2021-04-30 | 武汉光庭信息技术股份有限公司 | 一种单片机固件升级方法 |
CN112835759A (zh) * | 2021-02-01 | 2021-05-25 | 百度在线网络技术(北京)有限公司 | 测试数据处理方法、装置、电子设备以及存储介质 |
CN113419903A (zh) * | 2021-06-30 | 2021-09-21 | 一汽奔腾轿车有限公司 | 一种ota升级过程中的故障修复方法及*** |
CN113760332A (zh) * | 2021-08-30 | 2021-12-07 | 青岛信芯微电子科技股份有限公司 | 软件升级方法和电子设备 |
CN113645316A (zh) * | 2021-10-15 | 2021-11-12 | 广东皓耘科技有限公司 | 升级数据处理方法、上位机、下位机、设备及存储介质 |
CN113961212A (zh) * | 2021-10-29 | 2022-01-21 | 重庆长安汽车股份有限公司 | 一种基于以太网的ota安装包部署方法及***、升级车辆控制器的方法 |
CN113961212B (zh) * | 2021-10-29 | 2024-05-10 | 重庆长安汽车股份有限公司 | 一种基于以太网的ota安装包部署方法及***、升级车辆控制器的方法 |
CN114567628A (zh) * | 2022-02-28 | 2022-05-31 | 中汽创智科技有限公司 | 一种ota升级方法和装置 |
CN114567628B (zh) * | 2022-02-28 | 2024-03-08 | 中汽创智科技有限公司 | 一种ota升级方法和装置 |
CN115658120A (zh) * | 2022-12-27 | 2023-01-31 | 成都万创科技股份有限公司 | 微电脑通用的ota升级方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110716727B (zh) | 2023-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110716727B (zh) | 软件升级方法及*** | |
US7873956B2 (en) | Communication terminal and communication network for partially updating software, software update method, and software creation device and method therefor | |
US7836444B2 (en) | Mobile communication terminal having embedded system for software download and method for software download | |
US7136748B2 (en) | Map data processing apparatus and center system | |
US7644406B2 (en) | Update system capable of updating software across multiple FLASH chips | |
KR101654957B1 (ko) | 모바일 애플리케이션의 디바이스 의존적인 온 디맨드 컴파일링 및 설치 기법 | |
KR100584448B1 (ko) | 바이너리 위치정보를 이용한 임베디드 소프트웨어 원격다운로드방법 및 시스템 | |
CN110032339B (zh) | 数据迁移方法、装置、***、设备和存储介质 | |
CN108170460A (zh) | 一种嵌入式***增量升级的方法及装置 | |
US7136982B2 (en) | Apparatus and method for allocating memory blocks | |
CN110618903A (zh) | 电子设备测试方法与装置 | |
CN102422265A (zh) | Bios映像管理器 | |
CN111190629B (zh) | 一种嵌入式终端升级软件包及其解析方法 | |
US7039796B2 (en) | Method and system of locating a position in memory at which to store incoming firmware image | |
CN102904878A (zh) | 用于数据包的高效下载的方法及*** | |
CN111752583A (zh) | 固件升级方法、装置、电子设备和计算机可读存储介质 | |
CN115421745A (zh) | 设备远程升级方法、装置、终端及存储介质 | |
JP5202230B2 (ja) | データ操作装置及びデータ操作システム及びコンピュータプログラム及びデータ操作方法 | |
CN112346771B (zh) | 升级文件生成方法及装置 | |
CN110769030A (zh) | 下载文件的方法、终端、服务器和存储介质 | |
KR100827172B1 (ko) | 휴대단말기 펌웨어를 업그레이드하기 위한 장치와 방법 | |
CN101197959A (zh) | 一种终端的控制方法、***和设备 | |
US20080123659A1 (en) | Arrangement and method for loading data into a memory | |
CN116057925A (zh) | 一种数据传输方法、数据下载方法及终端 | |
CN114567628B (zh) | 一种ota升级方法和装置 |
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 |