CN114510256A - 固件升级方法、电能表、计算机设备和存储介质 - Google Patents
固件升级方法、电能表、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN114510256A CN114510256A CN202210129315.0A CN202210129315A CN114510256A CN 114510256 A CN114510256 A CN 114510256A CN 202210129315 A CN202210129315 A CN 202210129315A CN 114510256 A CN114510256 A CN 114510256A
- Authority
- CN
- China
- Prior art keywords
- file
- firmware
- block
- blocks
- memory space
- 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
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000012545 processing Methods 0.000 claims abstract description 20
- 230000006835 compression Effects 0.000 claims description 18
- 238000007906 compression Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 16
- 230000006837 decompression Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 15
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005034 decoration Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种固件升级方法、电能表、计算机设备和计算机可读存储介质。其中,该方法包括:在服务器生成用于更新第一固件文件的第三固件文件,在进行固件升级时从存储空间中自前向后地逐个读取第一固件文件和第三固件文件中不属于待删除文件块的文件块到内存空间,并采用与文件块的类型对应的处理方式进行处理得到待拼接文件块,最后将待拼接文件块依次拼接到空文件中得到第二固件文件。通过本申请,解决了现有的增量更新方式对内存资源的占用大的问题,降低了增量更新对内存资源的占用。
Description
技术领域
本申请涉及程序更新领域,尤其是涉及一种固件升级方法、电能表、计算机设备和计算机可读存储介质。
背景技术
设备的固件升级采用增量更新方式可以减少服务器和设备之间传输数据量,提高升级效率。
BSdiff算法是一种被广泛使用的增量更新算法,该算法包括diff过程和patch过程。diff过程中,服务器计算新版本固件与旧版本固件之间的差异,并对该差异进行编码和压缩,生成补丁文件。在patch过程中,设备解压缩补丁文件中指定的数据,并按照相应的解码规则应用补丁文件和旧版本固件,从而构建出新版本固件。
在diff过程中每次对固定或者不固定长度的文件块进行处理,得到一组数据,这组数据包括:diff string(差分文件块)、extra string(增量文件块)以及对应的控制信息。因此最后的补丁文件中包含了多组数据。在设备端的patch过程中,一方面需要将一组数据读入到内存空间中,基于控制信息还原新版固件文件的某个片段;一方面,每组数据的控制信息中的偏移量信息都是局部的偏移量信息,要得到文件片段在新版固件文件中的偏移量信息还需要占用内存资源进行额外的计算,另一方面还需要申请一个更大的内存空间用来存储新版本固件文件的各个片段,当拼接得到完整的新版固件文件后,再将新版固件文件写入到存储空间中。现有的增量更新方法对设备的内存资源占用较高。
发明内容
本申请提供一种固件升级方法、电能表、计算机设备和计算机可读存储介质,以解决现有的增量更新方式对内存资源的占用大的问题。
第一方面,本申请实施例提供了一种固件升级方法,包括:
获取用于将第一固件文件升级为第二固件文件的升级压缩包;
解压所述升级压缩包,将解压得到的第三固件文件和控制信息存储到存储空间,其中,所述第三固件文件包括差分文件块和增量文件块,且所述第三固件文件与所述第二固件文件的长度相等,所述控制信息包括所述增量文件块的偏移量信息和待删除文件块的偏移量信息,所述存储空间中还预先存储有第一固件文件;
从所述存储空间中自前向后地逐个读取所述第一固件文件和所述第三固件文件中不属于待删除文件块的文件块至内存空间,将所述控制信息读取至所述内存空间;
对所述文件块按照文件块类型和所述控制信息中的偏移量信息确定的处理方式进行处理,其中,所述处理方式包括以下之一:将两个文件块合并为待拼接文件块、选择所述第三固件文件的文件块作为待拼接文件块;
在所述存储空间创建空文件,并将所述待拼接文件块依次拼接到所述空文件,得到第二固件文件。
在其中的一些实施例中,所述内存空间包括第一内存空间、第二内存空间和第三内存空间,所述第一内存空间用于存放所述第一固件文件的文件块,所述第二内存空间用于存放所述第三固件文件的文件块,所述第三内存空间用于存放所述控制信息中的至少一个偏移量信息及其对应的文件块的类型信息;其中,所述第一内存空间与所述第二内存空间的大小相等且均不小于所述第一固件文件和所述第三固件文件的文件块的最大值。
在其中的一些实施例中,读取到内存空间中的两个文件块的大小相等且为固定值。
在其中的一些实施例中,读取到内存空间中的两个文件块的大小为可变值,该可变值根据预先设置的文件块的最大值或所述控制信息中的偏移量信息确定。
在其中的一些实施例中,对所述文件块按照文件块类型和所述控制信息中的偏移量信息确定的处理方式进行处理包括:
在所述文件块类型为差分文件块的情况下,将两个文件块合并为待拼接文件块;
在所述文件块类型为增量文件块的情况下,选择所述第三固件文件的文件块作为待拼接文件块。
在其中的一些实施例中,在将所述待拼接文件块依次拼接到所述空文件,得到第二固件文件之后,所述方法还包括:
将所述第一固件文件和所述第二固件文件存储到所述存储空间中的不同文件目录;
在重启设备后,从所述第二固件文件存储的文件目录加载固件文件并运行。
第二方面,本申请实施例提供了一种固件升级方法,包括:
获取第一固件文件和所述第二固件文件,其中,所述第二固件文件为所述第一固件文件的升级版本;
比较所述第一固件文件和所述第二固件文件,得到差分文件块、增量文件块、待删除文件块和控制信息,其中,所述控制信息包括所述增量文件块的偏移量信息和待删除文件块的偏移量信息;
创建空文件,并将所述差分文件块和所述增量文件块依次拼接到所述空文件,得到第三固件文件,其中,所述第三固件文件与所述第二固件文件的长度相等;
将所述第三固件文件和所述控制信息压缩为升级压缩包;
将所述升级压缩包发送给待更新设备,以供所述待更新设备根据所述升级压缩包进行固件升级。
第三方面,本申请实施例提供了一种电能表,所述电能表包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器运行时执行上述第一方面所述的固件升级方法。
第四方面,本申请实施例提供了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器运行时执行上述第二方面所述的固件升级方法。
第五方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面所述的固件升级方法,或者第二方面所述的固件升级方法。
综上所述,本申请实施例提供的固件升级方法、电能表、计算机设备和计算机可读存储介质,通过在服务器生成用于更新第一固件文件的第三固件文件,在进行固件升级时从存储空间中自前向后地逐个读取第一固件文件和第三固件文件中不属于待删除文件块的文件块到内存空间,并采用与文件块的类型对应的处理方式进行处理得到待拼接文件块,最后将待拼接文件块依次拼接到空文件中得到第二固件文件,解决了现有的增量更新方式对内存资源的占用大的问题,降低了增量更新对内存资源的占用。
附图说明
图1是本实施例提供的固件升级方法的流程图。
图2是本实施例提供的固件升级方法的示意图。
图3是本实施例提供的另一固件升级方法的流程图。
具体实施方式
为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。
为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。然而,本领域的普通技术人员应该明白,可以在没有这些细节的情况下实施本申请。在一些情形下,为了避免不必要的描述使本申请的各方面变得晦涩难懂,对已经在较高的层次上描述了众所周知的方法、过程、系统、组件和/或电路将不作过多赘述。对于本领域的普通技术人员来说,显然可以对本申请所公开的实施例作出各种改变,并且在不偏离本申请的原则和范围的情况下,本申请中所定义的普遍原则可以适用于其他实施例和应用场景。因此,本申请不限于所示的实施例,而是符合与本申请所要求保护的范围一致的最广泛范围。
除另作定义外,本申请所涉及的技术术语或者科学术语应具有本申请所属技术领域具备一般技能的人所理解的一般含义。本申请所使用的术语仅出于描述特定实施例的目的,而不旨在于对本申请的限制。如本申请所使用的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本申请中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。
在本申请中所涉及的“多个”是指两个或两个以上。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本申请中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
本申请所涉及的术语“系统”、“引擎”、“单元”、“模块”和/或“块”是一种用于按级别区分不同级别的不同组件、元件、零件、部件、装配件、或功能的一种方法。这些术语可以被其他能够达到相同目的的表达替换。通常,本申请涉及的“模块”、“单元”或“块”是指硬件或者固件中体现的逻辑或软件指令的集合。本申请描述的“模块”、“单元”或“块”可以作为软件和/或硬件实现,并且在作为软件实现的情形下,他们可以被存储在任何类型的非易失性计算机可读存储介质或存储设备中。
在一些实施例中,软件模块/单元/块可以被编译并被链接到可执行程序中。将意识到,软件模块可以是可从其他模块/单元/块或从其自身调用的,和/或可以响应于检测到的事件或中断而被调用。配置为在计算设备上执行的软件模块/单元/块可以设置在计算机可读存储介质上,例如光盘、数字视频盘、闪存驱动器、磁盘、或任何其他有形媒体,或作为数字下载(并且可以最初以压缩或可安装的格式存储,该格式需要在执行之前进行安装、解压或解密)。这样的软件代码可以部分地或全部地存储在正在执行的计算设备的存储设备上,并应用在计算设备的操作之中。软件指令可以被嵌入到固件,例如EPROM中。还将意识到,硬件模块/单元/块可以被包括在连接的逻辑组件中,例如门和触发器,和/或可以被包括在可编程单元中,例如可编程门阵列或处理器。本文描述的模块/单元/块或计算设备功能可以被实现为软件模块/单元/块,还可以以硬件或固件来表示。通常,本文描述的模块/单元/块,它们可以与其他模块/单元/块组合,或者尽管它们是物理组织或存储的,但也可以被划分为子模块/子单元/子块。该描述可以适用于系统、引擎或其一部分。
将理解的是,当单元、引擎、模块或块被称为在另一单元、引擎、模块或块“上”、“连接”或“耦合至”另一单元、引擎、模块或块时,其可以直接在其它单元、引擎、模块或块上,与其连接或耦合或与之通信,或者可以存在中间单元、引擎、模块或块,除非上下文另有明确说明。在本申请中,术语“和/或”可包括任何一个或以上相关所列条目或其组合。
智能电能表与服务器的通信通常采用成本低廉、传输速度较慢以及部署简单的通信方式,例如电力线载波通信等;因此,智能电能表进行固件升级时通常采用增量更新方式。
然而,智能电能表通常为嵌入式设备,通常其计算能力弱且内存资源有限。另外,由于智能电能表中运行的程序所需要占用的各类系统资源通常而言是固定的,从经济节约角度考虑,智能电能表中除去运行自身程序之外剩余的可用内存资源不多,例如剩余可用内存资源为数十k。然而,采用传统的BSdiff算法时,在智能电能表端进行patch时所需的内存资源占用大,有的智能电能表剩余的内存资源甚至不足以完成patch过程。
为此,在本实施例中提供了一种适用于内存资源受限的设备的固件升级方法,可以应用于上述的智能电能表。图1是本实施例提供的固件升级方法的流程图,如图1所示,该流程包括如下步骤:
步骤S101,获取用于将第一固件文件升级为第二固件文件的升级压缩包。
步骤S102,解压升级压缩包,将解压得到的第三固件文件和控制信息存储到存储空间,其中,第三固件文件包括差分文件块和增量文件块,且第三固件文件与第二固件文件的长度相等,控制信息包括增量文件块的偏移量信息和待删除文件块的偏移量信息,存储空间中还预先存储有第一固件文件。
步骤S103,从存储空间中自前向后地逐个读取第一固件文件和第三固件文件中不属于待删除文件块的文件块至内存空间,将控制信息读取至内存空间;
步骤S104,对文件块按照文件块类型和控制信息中的偏移量信息确定的处理方式进行处理。
步骤S105,在存储空间创建空文件,并将待拼接文件块依次拼接到空文件,得到第二固件文件。
在上述实施例中,第一固件文件和第二固件文件是指某个固件的不同版本,其中,第一固件文件的版本号低于第二固件文件的版本号,即第二固件文件为较新的固件文件,而第一固件文件为较旧的固件文件。通常而言,第一固件文件和第二固件文件的版本号是相邻的,但是也可以不相邻。
其中,第一固件文件在待更新的设备的存储空间中预先存储,既可以是待更新的设备当前加载的固件文件,也可以是待更新的设备历史更新过的固件文件,在此不作限定。通常而言,服务器和待更新的设备进行固件升级之前会进行通讯,待更新的设备通知服务器当前加载的固件文件的版本号或者待更新的设备的存储空间中已存储的固件文件的版本号;以及服务器通知待更新的设备将要发送的升级压缩包对应的两个固件文件的版本号,即第一固件文件和第二固件文件的版本号。
升级压缩包中解压得到的第三固件文件和控制信息可以基于BSdiff算法生成。其中,第三固件文件包括差分文件块和增量文件块,他们分别为diff过程生成的diff string和extra string。其中,由于diff string包含很多重复的字符,因而能够被高压缩率地压缩。与相关技术中生成多组数据不同之处在于,本实施例的第三固件文件具有与第二固件文件相同的长度。例如,以第一固件文件的字符串为ABCDEFGHIJKLMN,第二固件文件的字符串为ABCDFFGHIJKLMNabc为例,其中第一固件文件和第二固件文件的前14个字符相似,将这14个字符进行差分处理,得到00001000000000,即为diff string。第二固件文件的后3个字符是相对于第一固件文件新增的,分别为abc,即为extra string。按照字符原本的顺序将所有的diff string和extra string拼接起来,得到的00001000000000abc即为第三固件文件。
为了能够区分第三固件文件中diff string和extra string的起止位置,在控制信息中包括有相关的偏移量信息,例如,该偏移量信息表示每个extra string在第三固件文件中的起止位置,或者每个extra string应当插入到第一固件文件中的起始位置及每个extra string的长度。
例如,该控制信息中的偏移量信息包括:第一个extra string的起始偏移量和结束偏移量;第二个extra string的起始偏移量和结束偏移量,……,以此类推。或者,第一个extra string的起始偏移量和长度;第二个extra string的起始偏移量和长度,……,以此类推。
假设第一固件文件为ABCDEFGHIJKLMN,第二固件文件为ACCDEFHIJKLMO,则第三固件文件为010000和0000001这两个diff string拼接而成的0100000000001。现有技术中,控制信息中存储有这两个diff string在第一固件文件中的偏移量信息,根据这些偏移量信息,待更新的设备能够知道第一固件文件中的字符“G”被删除了,因此,根据这些偏移量信息得以能够将第二固件文件还原出来。
与现有技术不同的,在本实施例中,控制信息可以不包括diff string的偏移量信息,而是存储了待删除文件块在第一固件文件中的偏移量信息,从而节约了diff string的偏移量信息的存储空间。相较而言,在前后两个版本的固件文件中,通常的情况是进行代码段的增加和修改,而删除代码段的情形较少,这就意味着,如果不记录diff string的偏移量信息而仅记录待删除文件块的偏移量信息,能够缩小控制信息的大小,从而进一步减小升级压缩包的文件大小,提升升级效率。
本实施例中申请到的内存空间包括第一内存空间、第二内存空间和第三内存空间。其中,第一内存空间用于存放第一固件文件的文件块,第二内存空间用于存放第三固件文件的文件块,第三内存空间用于存放控制信息中的至少一个偏移量信息及其对应的文件块的类型信息。
在上述的步骤S103中,从存储空间中自前向后地逐个读取第一固件文件和第三固件文件中不属于待删除文件块的文件块至内存空间时,每次读取文件块的大小根据所申请到的用于存储文件块的内存空间的大小确定,而可以不是预设的大小。这样的方式,使得待更新的设备能够根据自身可以被使用的内存空间的大小申请可用内存空间,避免采用固定的文件块大小导致的内存空间不足。
为了简化偏移量的计算,第一内存空间与第二内存空间的大小相等,每次读取到内存空间中的第一固件文件和第三固件文件的文件块的大小也相等。这样能够保证每次读取出来的两个文件块的偏移量和分块大小是对应的,在两个文件块均为diff string的情况下,可以便于diff string与第一固件文件的文件块的合并处理。
并且,第一固件文件和第三固件文件的文件块的大小可以是固定值或可变值。当第一固件文件和第三固件文件的文件块的大小为可变值的情况下,其最大值等于第一内存空间或第二内存空间的大小,该可变值可以根据预先设置的文件块的最大值或控制信息中的偏移量信息确定,即各文件块可以基于控制信息内的偏移量信息确定其起始和结束的边界,使得每次读取到内存空间中的文件块仅属于其中一种文件块类型,简化处理过程。
在步骤S104中,处理方式包括以下之一:(1)将两个文件块合并为待拼接文件块。(2)选择第三固件文件的文件块作为待拼接文件块。
其中,在文件块类型为差分文件块的情况下,则将第一内存空间和第二内存空间当前存放的两个文件块合并为待拼接文件块。在文件块类型为增量文件块的情况下,则选择第三固件文件的文件块作为待拼接文件块。
在一些实施例中,当读取到内存空间中的两个文件块的大小相等且为固定值的情况下,每次从第三固件文件中读取到内存空间中的文件块也可以属于两种或者两种以上的文件块类型。例如从第三固件文件中读取到内存空间的文件块中,前一部分属于差分文件块,后一部分属于增量文件块。此时可以对两种文件块类型的文件块部分分别按照上述处理方式(1)和处理方式(2)进行处理。对于从第一固件文件中读取到的相应文件块将会被重新读取,重新读取的位置是以已经被合并处理的部分文件块的下一个偏移量为起始偏移量。类似的,对于从第三固件文件中读取到内存空间的文件块中,前一部分属于增量文件块,后一部分属于差分文件块的情形,则可以参照上述的方式在进行增量文件块部分的处理后,重新读取差分文件块。通过上述的处理方式可以保证下一次对差分文件块和第三固件文件中读取的文件块进行合并处理时,两个文件块的大小保持相同。
在本实施例中,可以通过存放在第三内存空间中的偏移量信息,以及在从存储空间中读取第一固件文件的文件块时的指针当前的偏移量信息,来判断当前指针所指的文件块是否属于待删除文件块和增量文件块。如果指针当前的偏移量落入第三内存空间中的偏移量信息表示的位置范围内,则该文件块命中了第三内存空间中的偏移量信息对应的文件块类型。否则,表示指针所指的文件块属于差分文件块。
通过上述方式可以对当前读取到第一内存空间和第二内存空间中的文件块的文件块类型进行识别,进而决定是合并得到待拼接文件块,还是指定其中之一作为待拼接文件块。
其中,表示待删除文件块的偏移量信息是以第一固件文件的偏移量为基准确定的,这样避免了偏移量的计算,而可以直接根据读取第一固件文件中待删除文件块的指针的偏移量和控制信息中待删除文件块的偏移量信息来判断当前读取的文件块是否属于待删除文件块。
图2是本实施例提供的固件升级方法的示意图,在图2中第一固件文件、第二固件文件、第三固件文件以及控制信息均存储在存储空间中,在进行固件升级时,将会从第一固件文件、第三固件文件中读取一部分至内存空间中,同时从控制信息中读取待删除文件块和增量文件块的偏移量信息。最后生成的待拼接文件块被拼接到存储空间中的相应位置,形成第二固件文件。
固件升级往往需要重启设备,并在进入操作系统之前通过嵌入式设备的bootloader程序进行固件升级。然而,对于诸如智能电能表等需要不间断工作的设备,固件升级过程中将会导致服务长期被中断,从而导致智能电能表计费不准确或者断电时间过长等问题。为了解决这个问题,在本实施例中,由于固件升级方案可以占用极少的内存空间,因此可以在设备正常工作的同时进行固件升级,得到第二固件文件。并且,将第一固件文件和第二固件文件将被存储到存储空间中的不同文件目录;保证固件升级过程中设备提供的服务不会中断。此后,对设备进行重启,重启过程中bootloader程序从第二固件文件存储的文件目录加载固件文件并运行,从而完成固件升级。采用这种方式,使得设备服务中断时间能够缩短,避免影响正常业务。
在其中一些实施例中,为保障固件升级成功,在得到第二固件文件之后,将会对第二固件文件进行MD5校验,以保证第二固件文件是完整且正确的。如果在重启后第二固件文件加载失败,则设备将会再次重启并从第一固件文件存储的文件目录加载固件文件并运行,避免固件升级失败导致设备故障。
本实施例还提供了一种固件升级方法,应用于服务器。图3是本实施例提供的另一固件升级方法的流程图。如图3所示,该流程包括如下步骤:
步骤S301,获取第一固件文件和第二固件文件,其中,第二固件文件为第一固件文件的升级版本。
步骤S302,比较第一固件文件和第二固件文件,得到差分文件块、增量文件块、待删除文件块和控制信息,其中,控制信息包括增量文件块的偏移量信息和待删除文件块的偏移量信息。
步骤S303,创建空文件,并将差分文件块和增量文件块依次拼接到空文件,得到第三固件文件,其中,第三固件文件与第二固件文件的长度相等。
步骤S304,将第三固件文件和控制信息压缩为升级压缩包。
步骤S305,将升级压缩包发送给待更新设备,以供待更新设备根据升级压缩包进行固件升级。
其中,待更新设备的固件升级方法与图1和图2所示的固件升级方法相同,在此不再赘述。
本实施例还提供了一种电能表,该电能表包括存储器和处理器,存储器中存储有计算机程序,计算机程序被处理器运行时执行上述应用于电能表的固件升级方法。
本实施例还提供了一种计算机设备,该计算机设备包括存储器和处理器,存储器中存储有计算机程序,计算机程序被处理器运行时执行上述应用于服务器的固件升级方法。本实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本实施例提供的任一固件升级方法。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种固件升级方法,其特征在于,包括:
获取用于将第一固件文件升级为第二固件文件的升级压缩包;
解压所述升级压缩包,将解压得到的第三固件文件和控制信息存储到存储空间,其中,所述第三固件文件包括差分文件块和增量文件块,且所述第三固件文件与所述第二固件文件的长度相等,所述控制信息包括所述增量文件块的偏移量信息和待删除文件块的偏移量信息,所述存储空间中还预先存储有第一固件文件;
从所述存储空间中自前向后地逐个读取所述第一固件文件和所述第三固件文件中不属于待删除文件块的文件块至内存空间,将所述控制信息读取至所述内存空间;
对所述文件块按照文件块类型和所述控制信息中的偏移量信息确定的处理方式进行处理,其中,所述处理方式包括以下之一:将两个文件块合并为待拼接文件块、选择所述第三固件文件的文件块作为待拼接文件块;
在所述存储空间创建空文件,并将所述待拼接文件块依次拼接到所述空文件,得到第二固件文件。
2.根据权利要求1所述的方法,其特征在于,所述内存空间包括第一内存空间、第二内存空间和第三内存空间,所述第一内存空间用于存放所述第一固件文件的文件块,所述第二内存空间用于存放所述第三固件文件的文件块,所述第三内存空间用于存放所述控制信息中的至少一个偏移量信息及其对应的文件块的类型信息;其中,所述第一内存空间与所述第二内存空间的大小相等且均不小于所述第一固件文件和所述第三固件文件的文件块的最大值。
3.根据权利要求1所述的方法,其特征在于,读取到内存空间中的两个文件块的大小相等且为固定值。
4.根据权利要求1所述的方法, 其特征在于,读取到内存空间中的两个文件块的大小为可变值,该可变值根据预先设置的文件块的最大值或所述控制信息中的偏移量信息确定。
5.根据权利要求1所述的方法,其特征在于,对所述文件块按照文件块类型和所述控制信息中的偏移量信息确定的处理方式进行处理包括:
在所述文件块类型为差分文件块的情况下,将两个文件块合并为待拼接文件块;
在所述文件块类型为增量文件块的情况下,选择所述第三固件文件的文件块作为待拼接文件块。
6.根据权利要求1至5中任一项所述的方法,其特征在于,在将所述待拼接文件块依次拼接到所述空文件,得到第二固件文件之后,所述方法还包括:
将所述第一固件文件和所述第二固件文件存储到所述存储空间中的不同文件目录;
在重启设备后,从所述第二固件文件存储的文件目录加载固件文件并运行。
7.一种固件升级方法, 其特征在于,包括:
获取第一固件文件和第二固件文件,其中,所述第二固件文件为所述第一固件文件的升级版本;
比较所述第一固件文件和所述第二固件文件,得到差分文件块、增量文件块、待删除文件块和控制信息,其中,所述控制信息包括所述增量文件块的偏移量信息和待删除文件块的偏移量信息;
创建空文件,并将所述差分文件块和所述增量文件块依次拼接到所述空文件,得到第三固件文件,其中,所述第三固件文件与所述第二固件文件的长度相等;
将所述第三固件文件和所述控制信息压缩为升级压缩包;
将所述升级压缩包发送给待更新设备,以供所述待更新设备根据所述升级压缩包进行固件升级。
8.一种电能表,所述电能表包括存储器和处理器,所述存储器中存储有计算机程序,其特征在于,所述计算机程序被所述处理器运行时执行上述权利要求1至6中任一项所述的固件升级方法。
9.一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,其特征在于,所述计算机程序被所述处理器运行时执行上述权利要求7所述的固件升级方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述权利要求1至6所述的固件升级方法,或者权利要求7所述的固件升级方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111614173 | 2021-12-27 | ||
CN2021116141739 | 2021-12-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114510256A true CN114510256A (zh) | 2022-05-17 |
CN114510256B CN114510256B (zh) | 2024-09-03 |
Family
ID=81550864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210129315.0A Active CN114510256B (zh) | 2021-12-27 | 2022-02-11 | 固件升级方法、电能表、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114510256B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110647497A (zh) * | 2019-07-19 | 2020-01-03 | 广东工业大学 | 一种基于hdfs的高性能文件存储与管理系统 |
CN111240722A (zh) * | 2020-01-07 | 2020-06-05 | 翱捷科技(上海)有限公司 | 空中升级固件的方法及其所应用的终端、服务器及系统 |
CN111796856A (zh) * | 2020-08-26 | 2020-10-20 | 北京紫光展锐通信技术有限公司 | 差分升级方法及装置、存储介质、计算机设备 |
CN113485736A (zh) * | 2021-06-17 | 2021-10-08 | 厦门亿联网络技术股份有限公司 | 一种系统增量更新方法及装置 |
CN113821245A (zh) * | 2021-09-10 | 2021-12-21 | 摩拜(北京)信息技术有限公司 | 差分升级方法、装置及车锁 |
-
2022
- 2022-02-11 CN CN202210129315.0A patent/CN114510256B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110647497A (zh) * | 2019-07-19 | 2020-01-03 | 广东工业大学 | 一种基于hdfs的高性能文件存储与管理系统 |
CN111240722A (zh) * | 2020-01-07 | 2020-06-05 | 翱捷科技(上海)有限公司 | 空中升级固件的方法及其所应用的终端、服务器及系统 |
CN111796856A (zh) * | 2020-08-26 | 2020-10-20 | 北京紫光展锐通信技术有限公司 | 差分升级方法及装置、存储介质、计算机设备 |
CN113485736A (zh) * | 2021-06-17 | 2021-10-08 | 厦门亿联网络技术股份有限公司 | 一种系统增量更新方法及装置 |
CN113821245A (zh) * | 2021-09-10 | 2021-12-21 | 摩拜(北京)信息技术有限公司 | 差分升级方法、装置及车锁 |
Non-Patent Citations (2)
Title |
---|
Y. JIA等: "Research on Vehicle OTA Upgrade Technology Based on BSDIFF Difference Algorithm", 《NTERNATIONAL CONFERENCE ON ADVANCES IN ELECTRICAL ENGINEERING AND COMPUTER APPLICATIONS》, 28 August 2021 (2021-08-28), pages 1113 - 1117, XP034006367, DOI: 10.1109/AEECA52519.2021.9574325 * |
刘波: "物联网设备空中固件升级技术研究与系统实现", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 2, 15 February 2021 (2021-02-15), pages 136 - 418 * |
Also Published As
Publication number | Publication date |
---|---|
CN114510256B (zh) | 2024-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103455354B (zh) | 一种防止固件升级失败的方法和设备 | |
US10642596B2 (en) | Embedded device and program updating method | |
CN108614718B (zh) | 启动操作系统的方法、装置和实现装置 | |
US8719810B2 (en) | Program upgrade system and method for over the air-capable mobile terminal | |
CN102830984B (zh) | 固件更新的方法、芯片以及通信终端 | |
US20070294685A1 (en) | Program upgrade system and method for ota-capable portable device | |
CN108228224B (zh) | 一种嵌入式系统差分升级的方法及装置 | |
US20140310698A1 (en) | Apparatus and method for upgrading firmware of mobile terminal | |
US20070055969A1 (en) | System and method for updating firmware | |
US20110283274A1 (en) | Firmware image update and management | |
KR20120063455A (ko) | 펌웨어 업데이트 장치 및 방법 | |
US8578359B2 (en) | Method and apparatus for reliable in-place update | |
CN112182010B (zh) | 脏页刷新方法和装置、存储介质和电子设备 | |
CN111008034A (zh) | 一种补丁生成方法及装置 | |
CN115098190A (zh) | 一种提高ssd系统启动速度的方法、装置、终端及存储介质 | |
CN105740017A (zh) | 云电视系统的升级方法及装置 | |
US8413132B2 (en) | Techniques for resolving read-after-write (RAW) conflicts using backup area | |
US20120151005A1 (en) | Image file download method | |
CN114510256B (zh) | 固件升级方法、电能表、计算机设备和存储介质 | |
CN113032183A (zh) | 系统管理方法、装置、计算机设备和存储介质 | |
CN106933604B (zh) | 一种系统升级方法及装置 | |
CN105278993B (zh) | 一种基于Linux系统的驱动模块升级方法及装置 | |
CN104516757A (zh) | 固件更新方法 | |
CN111356982A (zh) | 程序处理方法、设备及存储介质 | |
CN115543225A (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 |