CN110716727B - 软件升级方法及系统 - Google Patents

软件升级方法及系统 Download PDF

Info

Publication number
CN110716727B
CN110716727B CN201910822054.9A CN201910822054A CN110716727B CN 110716727 B CN110716727 B CN 110716727B CN 201910822054 A CN201910822054 A CN 201910822054A CN 110716727 B CN110716727 B CN 110716727B
Authority
CN
China
Prior art keywords
upgrade
segment
software
packages
contents
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.)
Active
Application number
CN201910822054.9A
Other languages
English (en)
Other versions
CN110716727A (zh
Inventor
陈孟轩
游小龙
郑伟强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Leader Technology Hengqin Co ltd
Original Assignee
Leader Technology Hengqin Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Leader Technology Hengqin Co ltd filed Critical Leader Technology Hengqin Co ltd
Priority to CN201910822054.9A priority Critical patent/CN110716727B/zh
Publication of CN110716727A publication Critical patent/CN110716727A/zh
Application granted granted Critical
Publication of CN110716727B publication Critical patent/CN110716727B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (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 (8)

1.一种软件升级方法,其特征在于,包括以下步骤:
对软件升级包进行预处理,得到多个分段升级包;
将多个所述分段升级包存入服务器中,并记录所述分段升级包的相关信息;
接收软件升级请求,并根据所述软件升级请求确认是否进行升级;
当确定升级时,逐段传输请求的多个所述分段升级包的内容,并写入升级缓存区;
当多个所述分段升级包的内容全部传输完成时,加载多个所述分段升级包的内容,实现软件升级;
所述对软件升级包进行预处理,包括:
按照连续的地址对所述软件升级包进行分段,依次将每段内容、对应的写入地址、内容长度及校验和合成为一个所述分段升级包;其中,所述每个分段升级包的内容长度为8的倍数,每段升级包的最前面为所述每段内容待写入嵌入式设备运行空间的地址偏移量,根据嵌入式设备实际的空间进行选择参考地址的范围大小,其中,参考地址选择依据需要且仅需要覆盖后续需要升级的空间的原则。
2.根据权利要求1所述的软件升级方法,其特征在于,所述每个分段升级包的相关信息至少包括:产品名称、固件版本、软件版本号、软件版本代号、升级包文件大小、每页大小、总页数及升级包文件校验。
3.根据权利要求1所述的软件升级方法,其特征在于,所述软件升级请求包括:查询请求及设备的产品名称和固件版本的升级包版本信息,所述接收软件升级请求,并根据所述软件升级请求确认是否进行升级,包括:
服务器根据所述查询请求,判断是否存在对应于产品名称和固件版本的升级包版本信息的分段升级包;
如果存在,则向设备回复对应的版本信息,以确定升级;
否则,回复设备请求的版本号,且将分段升级包其他信息置零,不进行升级。
4.根据权利要求3所述的软件升级方法,其特征在于,逐段传输多个所述分段升级包的内容,包括:
如果所述产品名称和固件版本不匹配,则丢弃本次请求的结果。
5.根据权利要求4所述的软件升级方法,其特征在于,逐段传输多个所述分段升级包的内容,还包括:
如果收到的当前最新软件版本代号发生变动,则清除升级缓冲区的全部内容,丢弃历史下载内容,退出本次升级;
如果收到的当前最新软件版本代号一致,但是当前页内容长度为0,则清除升级缓冲区的全部内容,丢弃历史下载内容,退出本次升级;
如果收到的当前最新软件版本代号一致,且内容长度正常,则保存该内容到所述升级缓冲区。
6.根据权利要求3所述的软件升级方法,其特征在于,所述写入升级缓存区,包括:
当接收到的新的版本信息和记录的版本信息有变动时,清除所述升级缓存区,记录新的版本信息;
在所述新的版本信息的起始位置,使用一个标志位表示是否下载完成,初始状态为0;
按顺序获取分段升级包,校验该分段升级包的校验和,并在分段升级包内容正常时,将该段分段升级包写入升级缓存区;
当全部分段升级包都获取并完整写入升级缓存区时,修改完成标志位为1。
7.根据权利要求1所述的软件升级方法,其特征在于,所述加载多个所述分段升级包的内容,包括:
读取完成标志位,如果完成标志位为0,则不加载多个所述分段升级包的内容;
根据软件升级包的总长度,确认计算所有内容的校验和,和预存的校验和进行比对,如果一致,则加载多个所述分段升级包的内容,如果不一致,则不加载多个所述分段升级包的内容;
读取每行的内容,复制到对应的地址;
全部复制完成后,重新加载运行。
8.一种软件升级系统,其特征在于,包括:
预处理模块,用于对软件升级包进行预处理,得到多个分段升级包;
存储模块,用于将多个所述分段升级包存入服务器中,并记录所述分段升级包的相关信息;
请求判断模块,用于接收软件升级请求,并根据所述软件升级请求确认是否进行升级;
请求应答模块,用于当确定升级时,逐段传输请求的多个所述分段升级包的内容;
写入模块,用于将多个所述分段升级包的内容写入升级缓存区;
加载模块,用于当多个所述分段升级包的内容全部传输完成时,加载多个所述分段升级包的内容,实现软件升级;
所述预处理模块,还用于按照连续的地址对所述软件升级包进行分段,依次将每段内容、对应的写入地址、内容长度及校验和合成为一个所述分段升级包;其中,所述每个分段升级包的内容长度为8的倍数,每段升级包的最前面为所述每段内容待写入嵌入式设备运行空间的地址偏移量,根据嵌入式设备实际的空间进行选择参考地址的范围大小,其中,参考地址选择依据需要且仅需要覆盖后续需要升级的空间的原则。
CN201910822054.9A 2019-09-02 2019-09-02 软件升级方法及系统 Active CN110716727B (zh)

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 CN110716727A (zh) 2020-01-21
CN110716727B true 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)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111679843B (zh) * 2020-04-27 2022-08-23 海信空调有限公司 一种空调器室外eeprom中的数据更新方法、装置及存储介质
CN111623476B (zh) * 2020-04-27 2022-05-17 海信(山东)空调有限公司 一种空调器室外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 青岛信芯微电子科技股份有限公司 软件升级方法和电子设备
CN113645316B (zh) * 2021-10-15 2022-02-08 广东皓耘科技有限公司 升级数据处理方法、上位机、下位机、设备及存储介质
CN113961212B (zh) * 2021-10-29 2024-05-10 重庆长安汽车股份有限公司 一种基于以太网的ota安装包部署方法及系统、升级车辆控制器的方法
CN114567628B (zh) * 2022-02-28 2024-03-08 中汽创智科技有限公司 一种ota升级方法和装置
CN115658120B (zh) * 2022-12-27 2023-05-09 成都万创科技股份有限公司 微电脑通用的ota升级方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050058800A (ko) * 2003-12-12 2005-06-17 에스케이텔레텍주식회사 이동통신단말기의 소프트웨어 업그레이드 방법
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 西安中兴新软件有限责任公司 一种升级包下发方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101060427A (zh) * 2006-04-19 2007-10-24 华为技术有限公司 实现远程软件升级的系统及方法
CN102662697B (zh) * 2012-03-27 2014-03-19 深圳市开立科技有限公司 一种软件升级方法及装置
US9575741B2 (en) * 2014-03-20 2017-02-21 Google Technology Holdings LLC Methods and devices for wireless device-to-device software upgrades
CN105989293A (zh) * 2015-02-13 2016-10-05 中兴通讯股份有限公司 一种实现软件版本升级的方法和装置
CN108170460B (zh) * 2017-12-15 2020-12-11 杭州中天微系统有限公司 一种嵌入式系统增量升级的方法及装置
CN109039779B (zh) * 2018-09-20 2020-09-29 珠海格力电器股份有限公司 设备升级方法、数据传输单元、控制器局域网络设备和网络

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050058800A (ko) * 2003-12-12 2005-06-17 에스케이텔레텍주식회사 이동통신단말기의 소프트웨어 업그레이드 방법
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升级的方法

Also Published As

Publication number Publication date
CN110716727A (zh) 2020-01-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
US7136748B2 (en) Map data processing apparatus and center system
US7089549B2 (en) Updating flash memory
US7836444B2 (en) Mobile communication terminal having embedded system for software download and method for software download
CN105975399B (zh) 用来管理一记忆装置的方法以及其相关的记忆装置
US7774382B2 (en) Method and apparatus for configuring a control device, and corresponding control device
KR100584448B1 (ko) 바이너리 위치정보를 이용한 임베디드 소프트웨어 원격다운로드방법 및 시스템
US20080028387A1 (en) Update data transmission method, computer program for practicing the method, host device and firmware writing system
US20040143828A1 (en) Firmware updating method and related apparatus for checking content of replacing firmware before firmware updating
US6839798B1 (en) Flash memory capable of storing frequently rewritten data
CN111190629B (zh) 一种嵌入式终端升级软件包及其解析方法
CN110032339B (zh) 数据迁移方法、装置、系统、设备和存储介质
WO2003040928A2 (en) Allocating data to memory blocks each block with a sequence number
US20070233750A1 (en) Data control apparatus and method
JP5202230B2 (ja) データ操作装置及びデータ操作システム及びコンピュータプログラム及びデータ操作方法
CN101197959A (zh) 一种终端的控制方法、系统和设备
US20080147966A1 (en) Flash memory device, update method and program search method thereof
CN112346665B (zh) 基于pcie的通信方法、装置、设备、系统及存储介质
CN110888605B (zh) Eeprom的数据写入方法、装置和电子设备
US20050251632A1 (en) Silicon storage media, controller and access method thereof
CN114237654A (zh) 一种ota升级方法及系统
US20080123659A1 (en) Arrangement and method for loading data into a memory
CN113744861A (zh) 一种方便维护的曝光累计值处理方法
CN113590152A (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