CN117850858A - 固件升级方法和装置、存储介质及电子设备 - Google Patents
固件升级方法和装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN117850858A CN117850858A CN202410022829.5A CN202410022829A CN117850858A CN 117850858 A CN117850858 A CN 117850858A CN 202410022829 A CN202410022829 A CN 202410022829A CN 117850858 A CN117850858 A CN 117850858A
- Authority
- CN
- China
- Prior art keywords
- firmware
- information
- partition
- version
- target
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000005192 partition Methods 0.000 claims abstract description 423
- 230000015654 memory Effects 0.000 claims abstract description 141
- 238000004590 computer program Methods 0.000 claims description 16
- 239000000758 substrate Substances 0.000 claims 5
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000009977 dual effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种固件升级方法和装置、存储介质及电子设备,该方法包括:获取固件的第二固件版本,第二固件版本用于对当前固件的第一固件版本进行更新,第一固件版本存储在一组分区中,固件存储器包括一组分区和目标分区,一组分区中的每个分区分别存储了第一固件版本中的部分信息;获取固件分区地址表中记录的升级方式信息,固件分区地址表中还记录了固件的当前固件版本中的各个部分信息的存储地址;根据升级方式信息,使用第二固件版本对固件存储器中存储的第一固件版本进行更新,并在第二固件版本中的至少部分信息被存储到目标分区中时,使用目标分区中用于存储至少部分信息的地址,更新固件分区地址表中记录各个部分信息的存储地址。
Description
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种固件升级方法和装置、存储介质及电子设备。
背景技术
为了提高BMC(Baseboard Management Controller,基板管理控制器)固件的可靠性,现有技术中一般会设置两个独立的固件存储器分别作为主备固件,或者在一个较大的存储器上规划两个镜像的分区,分别存储两个独立的镜像。当一个存储器或者镜像启动失败时,启动另一个存储器或者镜像。
然而,在现有的固件存储模式下,在固件升级时,需要完全覆盖备用镜像或者完全覆盖另一个存储器,升级过程中需要耗费大量的时间进行固件信息的写入,升级速度较慢。因此,现有技术中的固件升级方式,存在固件升级效率较低的问题。
发明内容
本申请实施例提供了一种固件升级方法和装置、存储介质及电子设备,以至少解决现有技术中固件升级方式存在固件升级效率较低的问题。
根据本申请的一个实施例,提供了一种固件升级方法,包括:获取目标固件的第二固件版本,其中,所述第二固件版本用于对所述目标固件当前的第一固件版本进行更新,所述第一固件版本存储在所述目标固件的固件存储器中的一组分区中,所述固件存储器包括所述一组分区和与所述一组分区不同的目标分区,所述一组分区中的每个分区当前存储了所述第一固件版本中的部分固件信息;获取固件分区地址表中记录的升级方式信息,其中,所述固件分区地址表存储在所述一组分区中的一个分区中,所述升级方式信息用于指示所述一组分区中的每个分区的升级方式,所述固件分区地址表中还记录了所述目标固件的当前固件版本中的各个部分固件信息的存储地址,在所述当前固件版本为所述第一固件版本的情况下,所述当前固件版本中的各个部分固件信息的存储地址包括所述一组分区中的每个分区中用于存储的所述第一固件版本中对应的部分固件信息的地址;根据所述升级方式信息,使用所述第二固件版本对所述固件存储器中存储的所述第一固件版本进行更新,并在所述第二固件版本中的至少部分固件信息被存储到所述目标分区中的情况下,使用所述目标分区中用于存储所述至少部分固件信息的地址,对所述固件分区地址表中记录的所述目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新,其中,在使用所述第二固件版本完成对所述固件存储器中存储的所述第一固件版本进行更新的情况下,所述当前固件版本为所述第二固件版本。
在一个示例性的实施例中,所述根据所述升级方式信息,使用所述第二固件版本对所述固件存储器中存储的所述第一固件版本进行更新,包括:在所述升级方式信息指示所述一组分区中的第一分区的升级方式为比对升级方式、所述第一分区中当前存储了所述第一固件版本中的第一部分固件信息、所述第二固件版本中包括用于对所述第一部分固件信息进行更新的第二部分固件信息、且差异固件信息的大小小于或等于所述目标分区的空闲存储大小的情况下,将所述差异固件信息存储在所述目标分区中,其中,所述差异固件信息包括所述第二部分固件信息与所述第一部分固件信息之间存在差异的固件信息。
在一个示例性的实施例中,所述使用所述目标分区中用于存储所述至少部分固件信息的地址,对所述固件分区地址表中记录的所述目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新,包括:在将所述第二部分固件信息存储在所述目标分区中、且所述固件分区地址表中记录了第一存储地址的情况下,在所述固件分区地址表中用第二存储地址对所述第一存储地址进行更新,其中,所述第一存储地址是所述第一分区中用于存储所述第一部分固件信息的地址,所述第二存储地址是所述目标分区中用于存储所述差异固件信息的地址。
在一个示例性的实施例中,所述根据所述升级方式信息,使用所述第二固件版本对所述固件存储器中存储的所述第一固件版本进行更新,包括:在所述升级方式信息指示所述一组分区中的第一分区的升级方式为比对升级方式、所述第一分区中当前存储了所述第一固件版本中的第一部分固件信息、所述第二固件版本中包括用于对所述第一部分固件信息进行更新的第二部分固件信息、且差异固件信息的大小大于所述目标分区的空闲存储大小的情况下,将所述第一分区中当前存储的所述第一部分固件信息更新为所述第二部分固件信息,其中,所述差异固件信息包括所述第二部分固件信息与所述第一部分固件信息之间存在差异的固件信息。
在一个示例性的实施例中,所述根据所述升级方式信息,使用所述第二固件版本对所述固件存储器中存储的所述第一固件版本进行更新,包括以下至少之一:在所述升级方式信息指示所述一组分区中的第二分区的升级方式为强制升级方式、所述第二分区中当前存储了所述第一固件版本中的第三部分固件信息、所述第二固件版本中包括用于对所述第三部分固件信息进行更新的第四部分固件信息的情况下,将所述第二分区中当前存储的所述第三部分固件信息更新为所述第四部分固件信息;在所述升级方式信息指示所述一组分区中的第三分区的升级方式为不升级方式的情况下,保持所述第三分区中当前存储的部分固件信息不变。
在一个示例性的实施例中,在根据所述升级方式信息,使用所述第二固件版本对所述固件存储器中存储的所述第一固件版本进行更新,并在所述第二固件版本中的至少部分固件信息被存储到所述目标分区中的情况下,使用所述目标分区中用于存储所述至少部分固件信息的地址,对所述固件分区地址表中记录的所述目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新之后,所述方法还包括:获取所述固件分区地址表中的所述目标固件的所述当前固件版本中的各个部分固件信息的存储地址,得到一组存储地址,其中,在使用所述第二固件版本完成对所述固件存储器中存储的所述第一固件版本进行更新的情况下,所述当前固件版本为所述第二固件版本;从所述一组存储地址中读取所述第二固件版本中的各个部分固件信息,并按照所述第二固件版本中的各个部分固件信息的读取顺序,将所述第二固件版本中的各个部分固件信息写入内存中,以使得处理器按照所述内存中的所述第二固件版本中的各个部分固件信息启动所述目标固件。
在一个示例性的实施例中,在将所述第二固件版本中的各个部分固件信息写入内存中之后,所述方法还包括:在所述处理器按照所述内存中的所述第二固件版本中的各个部分固件信息无法启动所述目标固件的情况下,将所述固件分区地址表中记录的所述目标固件的当前固件版本中的各个部分固件信息的存储地址恢复为与所述第一固件版本中的各个部分固件信息的存储地址。
根据本申请的另一个实施例,提供了一种固件升级装置,包括:第一获取单元,用于获取目标固件的第二固件版本,其中,所述第二固件版本用于对所述目标固件当前的第一固件版本进行更新,所述第一固件版本存储在所述目标固件的固件存储器中的一组分区中,所述固件存储器包括所述一组分区和与所述一组分区不同的目标分区,所述一组分区中的每个分区当前存储了所述第一固件版本中的部分固件信息;第二获取单元,用于获取固件分区地址表中记录的升级方式信息,其中,所述固件分区地址表存储在所述一组分区中的一个分区中,所述升级方式信息用于指示所述一组分区中的每个分区的升级方式,所述固件分区地址表中还记录了所述目标固件的当前固件版本中的各个部分固件信息的存储地址,在所述当前固件版本为所述第一固件版本的情况下,所述当前固件版本中的各个部分固件信息的存储地址包括所述一组分区中的每个分区中用于存储的所述第一固件版本中对应的部分固件信息的地址;执行单元,用于根据所述升级方式信息,使用所述第二固件版本对所述固件存储器中存储的所述第一固件版本进行更新,并在所述第二固件版本中的至少部分固件信息被存储到所述目标分区中的情况下,使用所述目标分区中用于存储所述至少部分固件信息的地址,对所述固件分区地址表中记录的所述目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新,其中,在使用所述第二固件版本完成对所述固件存储器中存储的所述第一固件版本进行更新的情况下,所述当前固件版本为所述第二固件版本。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本申请,采用在存储器中设置存储完整第一固件版本的一组分区,以及存储与第一固件版本不同的第二固件版本中的信息的目标分区的方式,在需要用第二固件版本对固件进行升级时,按照固件分区地址表中记录的升级方式,将第二固件版本中与第一固件版本的信息不同的至少部分信息存储在目标分区,以完成对存储器的当前版本的升级,由于无需为第二固件版本的信息设置一个单独的存储器或者镜像,升级过程中无需使用第二固件版本对第一固件版本进行完全覆盖,可以有效降低固件存储所需要的空间,提高升级的写入速度,进而提高固件的升级效率,因此,可以解决现有技术中的固件升级方式存在固件升级的效率较低的问题,达到提高固件升级效率的技术效果。
附图说明
图1是根据本申请实施例的一种固件升级方法的硬件环境示意图。
图2是根据本申请实施例的一种固件升级方法的流程示意图。
图3是根据本申请实施例的一种固件升级方法的示意图。
图4是根据本申请实施例的另一种固件升级方法的示意图。
图5是根据本申请实施例的又一种固件升级方法的示意图。
图6是根据本申请实施例的又一种固件升级方法的示意图。
图7是根据本申请实施例的一种固件存储器的示意图。
图8是根据本申请实施例的另一种固件升级方法的流程示意图。
图9是根据本申请实施例的又一种固件升级方法的示意图。
图10是根据本申请实施例的又一种固件升级方法的流程示意图。
图11是根据本申请实施例的一种固件升级装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“目标”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在服务器设备或者类似的运算装置中执行。以运行在服务器设备上为例,图1是本申请实施例的一种固件升级方法的服务器设备的硬件结构框图。如图1所示,服务器设备可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述服务器设备还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述服务器设备的结构造成限定。例如,服务器设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的固件升级方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器1 04可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至服务器设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器设备的通信供应方提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种固件升级方法,图2是根据本申请实施例的一种固件升级方法的流程图,如图2所示,该流程包括如下步骤S202至步骤S206。
步骤S202,获取目标固件的第二固件版本,其中,第二固件版本用于对目标固件当前的第一固件版本进行更新,第一固件版本存储在目标固件的固件存储器中的一组分区中,固件存储器包括一组分区和与一组分区不同的目标分区,一组分区中的每个分区当前存储了第一固件版本中的部分固件信息。
步骤S204,获取固件分区地址表中记录的升级方式信息,其中,固件分区地址表存储在一组分区中的一个分区中,升级方式信息用于指示一组分区中的每个分区的升级方式,固件分区地址表中还记录了目标固件的当前固件版本中的各个部分固件信息的存储地址,在当前固件版本为第一固件版本的情况下,当前固件版本中的各个部分固件信息的存储地址包括一组分区中的每个分区中用于存储的第一固件版本中对应的部分固件信息的地址。
步骤S206,根据升级方式信息,使用第二固件版本对固件存储器中存储的第一固件版本进行更新,并在第二固件版本中的至少部分固件信息被存储到目标分区中的情况下,使用目标分区中用于存储至少部分固件信息的地址,对固件分区地址表中记录的目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新,其中,在使用第二固件版本完成对固件存储器中存储的第一固件版本进行更新的情况下,当前固件版本为第二固件版本。
本实施例中的固件升级方法可以应用到对目标固件进行升级和控制的场景。目标固件可以是BMC固件。目标固件的升级指的是对目标固件的当前固件版本的更新,在目标固件启动时,会按照固件存储器中存储的最新的固件版本进行启动。
目前的固件版本的存储和升级方式主要分为三种,即,单存储单镜像方式,单存储双镜像方式和双存储双镜像方式。其中,可靠性最低的方式是单存储器单镜像方式,如图3所示,该方式只有一个外部存储器,并在该存储器中只存储一个完整的镜像。其升级方式,只能通过全部覆盖单存储器中已存储的固件信息来完成升级。当版本出现问题时,将出现永久性的启动失败,无法自行恢复。
安全性次之的方式是单存储器双镜像的方式,如图4所示,该方式在一个较大的存储器上规划两个镜像的分区,存储两个独立的镜像,当一个镜像启动失败时,切换到另一个镜像启动。其升级方式一般是完全覆盖备用镜像中已存储的固件信息来完成版本的升级。
安全性最高的方案是双存储器双镜像的方式,如图5所示,该方式使用两个独立的固件存储器,每个存储器分别存储一个完整的镜像,其升级方式一般是完全覆盖一个存储器中已存储的固件信息来完成升级。当一个存储器出现问题时,切换到另一个存储器上启动,此种方案成本最高。
上述三种方式中,无论是设置两个独立的固件存储器分别作为主备固件的方式,还是在一个较大的固件存储器上划分两个较大的分区分别存储两份固件的方式,由于在固件启动时根据需要只会选择从两个版本选择其中的一个固件版本中启动固件,会有一个分区或者一个存储器处于完全闲置的状态,浪费宝贵的存储空间或者存储设备。因此,上述三种方式,要么存在固件安全性较低的问题。要么存在固件冗余度过大、占用空间过高的问题,要么存在升级需要的写入次数过多,升级效率较低的问题。
为了至少解决上述部分问题,在本实施例中,如图6所示,可以在固件所对应的一个存储器中划分出存储一个完整的旧固件版本的镜像的区域,以及一个用于存储新固件版本中与旧固件版本的差异部分信息的区域(冷分区)。无需为固件构建两个存储器,也无需为固件存储两个完整的镜像,只需要存储一个完整的镜像和差异部分,使用更小的存储空间换来相同的安全性和更高的升级效率。
需要说明的是,对于固件存储器中用于存储完整固件版本的区域,可以是由一组分区组成的。可以按照一个完整的固件版本中不同固件信息的作用或者功能,将用于存储完整固件版本的区域划分为一组分区。一组分区中的每个分区分别用于存储不同功能的部分固件信息。
可选地,每个分区中存储的部分固件信息,可以是由k条数据组成的信息。对应地,固件分区地址表中记录的各个部分固件信息的存储地址,可以是按照每条数据的存储地址所进行的记录,即,固件分区地址表中记录的一个分区中的数据存储地址,可以包括有k个条目的存储地址。此外,k条数据中的每条数据的数据大小可以是预设的一个最小区块(数据块)的大小,本实施例中涉及到数据读取、写入等相关操作时,均可以是按照最小区块进行的。
上述一组分区中每个分区的名称,可以用于代表每个区域的功能,如图7所示,可以分为boot(用于引导加载程序)分区、kernel(内核)分区、rootfs(对应于rootfsrootfile system,根文件系统)分区、config(configuration,配置)分区等。完整的主分区镜像由上述一组分区构成。上述目标分区,即图7中的冷分区。在boot分区中,存储有固件分区地址表。
需要说明的是,固件分区地址表中存储在固件的boot的末尾区域,与正常的boot代码隔离,其可以维护固件存储器的各个区域的分区名称、分区地址、起始地址、结束地址等信息,还可以记录有每个分区的升级特性(即,上述升级方式)、以及每个分区所存储的部分固件信息的存储地址。
在本实施例中,在获取到目标固件的第二固件版本的情况下,可以先根据固件分区地址表中记录的升级方式信息,确定一组分区中每个分区的升级方式,并按照每个分区的升级方式对当前所存储的第一固件版本进行更新,并根据更新后的各个部分固件信息的存储地址,对固件分区地址表中记录的存储地址进行更新。
上述升级方式可以包括比对升级方式。这里的比对升级方式,可以是指将对应分区中所存储的第一固件版本中的固件信息与第二固件版本中、相同功能的信息进行比对,比对过程可以是按照最小区块进行的。通过比对,对于第二固件版本中与第一固件版本不同的固件信息,可以将其存储在目标分区中。
通过上述步骤,获取目标固件的第二固件版本,其中,第二固件版本用于对目标固件当前的第一固件版本进行更新,第一固件版本存储在目标固件的固件存储器中的一组分区中,固件存储器包括一组分区和与一组分区不同的目标分区,一组分区中的每个分区当前存储了第一固件版本中的部分固件信息;获取固件分区地址表中记录的升级方式信息,其中,固件分区地址表存储在一组分区中的一个分区中,升级方式信息用于指示一组分区中的每个分区的升级方式,固件分区地址表中还记录了目标固件的当前固件版本中的各个部分固件信息的存储地址,在当前固件版本为第一固件版本的情况下,当前固件版本中的各个部分固件信息的存储地址包括一组分区中的每个分区中用于存储的第一固件版本中对应的部分固件信息的地址;根据升级方式信息,使用第二固件版本对固件存储器中存储的第一固件版本进行更新,并在第二固件版本中的至少部分固件信息被存储到目标分区中的情况下,使用目标分区中用于存储至少部分固件信息的地址,对固件分区地址表中记录的目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新,其中,在使用第二固件版本完成对固件存储器中存储的第一固件版本进行更新的情况下,当前固件版本为第二固件版本,解决了现有技术中固件升级方式存在固件升级的效率较低的问题,提高了固件升级的效率。
其中,上述步骤的执行主体可以为服务器、终端等,但不限于此。
在一个示例性实施例中,根据升级方式信息,使用第二固件版本对固件存储器中存储的第一固件版本进行更新,包括:
在升级方式信息指示一组分区中的第一分区的升级方式为比对升级方式、第一分区中当前存储了第一固件版本中的第一部分固件信息、第二固件版本中包括用于对第一部分固件信息进行更新的第二部分固件信息、且差异固件信息的大小小于或等于目标分区的空闲存储大小的情况下,将差异固件信息存储在目标分区中,其中,差异固件信息包括第二部分固件信息与第一部分固件信息之间存在差异的固件信息。
为了提高固件存储器的的存储空间利用率,降低存储器所需的总空间大小,在本实施例中,对于分区中已存储的部分固件信息和第二固件版本中对应的部分固件信息,可以仅存储存在差异的固件信息,即,差异固件信息。
上述差异固件信息,可以是指第二固件版本中与第一固件版本中取值不同的信息,也可以是第二固件版本中与第一固件版本相比新增的信息。
需要说明的是,差异固件信息的存储,可以是以前述最小区块为单位进行的,即,比对第二部分固件信息和第一分区中的第一部分固件信息时,可以按照最小区块进行比对,对于第二部分固件信息中与第一部分固件信息不同的最小区块,可以作为需要存储到目标分区中的信息。
此外,目标分区的大小可以是预先设置的,考虑到第二固件版本和第一固件版本之间的差异部分的大小可能大于目标分区的大小,也可能小于目标分区的大小。因此,在本实施例中,在确定出第二部分固件信息中与第一部分固件信息不同的全部差异部分之后,可以先比较差异固件信息与当前目标分区的空闲存储大小,在确定差异固件信息的大小小于或等于目标分区的空闲存储大小之后,再将差异固件信息存储在目标分区中。
通过本实施例,在目标分区中仅存储新固件版本中与旧固件版本中不同的信息,可以降低存储器所需的空间大小,从而提高存储器的空间利用率,同时,由于无需将全部的新固件版本写入存储器中,可以有效降低写入次数,从而提高升级的效率。
在一个示例性实施例中,使用目标分区中用于存储至少部分固件信息的地址,对固件分区地址表中记录的目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新,包括:
在将第二部分固件信息存储在目标分区中、且固件分区地址表中记录了第一存储地址的情况下,在固件分区地址表中用第二存储地址对第一存储地址进行更新,其中,第一存储地址是第一分区中用于存储第一部分固件信息的地址,第二存储地址是目标分区中用于存储差异固件信息的地址。
需要说明的是,在固件分区地址表中用第二存储地址对第一存储地址进行更新,包括在固件分区地址表中将第一固件版本中、与差异固件信息对应的信息的存储地址替换为第二存储地址,以及在固件分区地址表中将第一固件版本中、与第二固件版本相比多出来的信息的存储地址删除或者标注为旧地址。
通过本实施例,使用目标分区中存储差异固件信息的地址对固件分区地址表中记录的存储地址进行更新,使得固件分区地址表中记录最新的固件版本在一组分区以及目标分区中的最新地址,以便在之后启动目标固件时可以读取到最新的固件版本信息来完成固件的启动,可以提高固件启动的效率。
在一个示例性实施例中,根据升级方式信息,使用第二固件版本对固件存储器中存储的第一固件版本进行更新,包括:
在升级方式信息指示一组分区中的第一分区的升级方式为比对升级方式、第一分区中当前存储了第一固件版本中的第一部分固件信息、第二固件版本中包括用于对第一部分固件信息进行更新的第二部分固件信息、且差异固件信息的大小大于目标分区的空闲存储大小的情况下,将第一分区中当前存储的第一部分固件信息更新为第二部分固件信息,其中,差异固件信息包括第二部分固件信息与第一部分固件信息之间存在差异的固件信息。
考虑到两个固件版本之间的差异可能较大,而目标分区的大小是在获取到的第二固件版本之前就预先设定好的,可能存在差异固件信息的大小小于或等于目标分区的空闲存储大小的情况,在本实施例中,在第一分区中当前存储了第一固件版本中的第一部分固件信息、第二固件版本中包括用于对第一部分固件信息进行更新的第二部分固件信息、且差异固件信息的大小大于目标分区的空闲存储大小时,由于目标分区中无法存储完整的差异固件信息,可以直接使用第二部分固件信息对第一分区中的第一部分固件信息进行覆盖。
上述覆盖,可以是指将第一部分固件信息更新为第二部分固件信息。
需要说明的是,在将第一分区中当前存储的第一部分固件信息更新为第二部分固件信息之后,可以对固件分区地址表中记录的第一部分固件信息的存储地址进行更新。这里的更新,可以是指按照第二部分固件信息的最小区块,对固件分区地址表中记录的第一部分固件信息的存储地址进行替换、删除、增加等操作。
通过本实施例,在目标分区的空闲存储空间小于差异固件信息时,直接使用第二部分固件信息对第一分区中存储的第二部分固件信息进行覆盖,可以避免目标分区对固件信息的存储失败,提高新固件版本的升级成功率。
在一个示例性实施例中,根据升级方式信息,使用第二固件版本对固件存储器中存储的第一固件版本进行更新,包括以下至少之一:
S11,在升级方式信息指示一组分区中的第二分区的升级方式为强制升级方式、第二分区中当前存储了第一固件版本中的第三部分固件信息、第二固件版本中包括用于对第三部分固件信息进行更新的第四部分固件信息的情况下,将第二分区中当前存储的第三部分固件信息更新为第四部分固件信息;
S12,在升级方式信息指示一组分区中的第三分区的升级方式为不升级方式的情况下,保持第三分区中当前存储的部分固件信息不变。
考虑到一组分区中每个分区所存储的固件信息的功能不同,可以将一组分区中的部分分区设置为与前述比对升级方式不同的其他升级方式,以避免对固件的启动产生影响。在本实施例,一组分区中每个分区的升级方式,除了比对升级方式之外,还可以包括强制升级方式和不升级方式。
对于升级特性为强制升级的第二分区,可以直接使用第二固件版本中与该分区所存储的信息的功能对应的部分固件信息,对第二分区内的信息进行全部覆盖。
对于升级特性为不升级的第三分区,可以忽略第二固件版本,保持第三分区中当前存储的部分固件信息不变。
考虑到boot在固件版本正常运行后将完全退出,可认为boot对版本的正常运行没有影响,在本实施例中,可以将boot分区的升级方式设置为强制升级或者不可升级,以便在硬件未完全初始化、程序尚未完全运行起来的时候保证boot地址和内容的连续性,方便后续对其他更重要内容的操作的安全性。而对于固件版本的其他只读分区,如kernel分区、rootfs分区,一般是占用空间最大的,可以将这两部分的升级方式设置为比对升级。此外,配置分区一般是可写的文件系统,一般是根据版本升级逻辑来决定是否进行保留,可以选择强制升级或者不可升级的升级方式。
在本实施例中,固件升级方式可以如图8所示,升级过程包括以下步骤:
步骤1,读取固件分区表,确定每个分区的升级性质。
步骤2,如果分区升级特性为强制覆盖,则使用新版本对应内容覆盖主分区,进入步骤4;如果分区升级特性为不可升级,则跳过该区域,进入步骤4;如果升级特性为比对升级,则进入步骤3。
步骤3,以最小读写块为单位进行比对,在确定内容存储不同的情况下,将新版本中、与旧版本存在差异的读写块写入冷分区,并更新固件分区地址表。
在写入之前,可以先计算所需要的冷分区的大小,如果总大小超过了冷分区的大小,则直接覆盖主分区。如果总大小小于或者等于冷分区大小,则写入冷分区,并修改固件分区表。
步骤4,继续对下一个分区重复上述步骤。
步骤5,所有只读分区更新完毕,结束升级。
需要说明的是,升级时需要先对固件分区表进行读取,经历过一次比对升级后,同一个分区可能会有多个条目,但是同一个分区的多个条目的升级特性是相同的,升级按照分区来决定所需要采取的操作。升级时会使用新版本和主分区对应地址范围内的内容按照最小读写块为单位进行比对,写入冷分区的大小也以最小读写块为单位。
为了提高冷分区的利用率,需要设置合适的冷分区的大小,以达到效率与安全性的平衡,极端情况下,冷分区大小可以为0或者等于主分区只读分区的大小总和。当冷分区大小为0时,将实行强制覆盖主分区的策略,此时的升级,和通常的单存储器单镜像的固件版本升级没有区别,此时最为节省固件空间,但其安全性也最低,某些情况下可能也最浪费升级时间。反之,当冷分区的大小等于主分区只读分区大小的总和时,其最为安全,但同时也最耗费固件存储空间,但即使在此种情况下,也比相关技术中存储两个完整版本的方案(单存储器双镜像或双存储器双镜像方式)节省存储空间。通常在版本差异不大的情况下,比如使用场景是相邻版本升级时,冷分区对固件存储器空间的利用率以及固件的安全性的作用最大。
固件分区地址表中记录有每个分区的升级特性,在对固件进行升级和启动时,均需读取固件分区地址表中记录的升级特性,并根据读取到的每个分区的升级特性,确定在升级或者启动时对每个分区需要进行的操作,如表1所示,对固件进行升级时,对于强制升级的分区,需要使用新版本内容覆盖该地址范围内的内容;对于不可升级的分区,直接跳过;对于比对升级的分区,需要先对比整个分区的内容,并按照可写入的最小区块,将差异写入冷分区,并将该最小区块在冷分区的地址更新到固件分区地址表中的此条目下。在对固件进行启动时,对于强制升级的分区,正常读取其存储的内容并执行其内容;对于不可升级的分区,正常读取其存储的内容并执行其内容;对于比对升级的分区,需要根据地址读取后,与其前后内容在内存中进行连续性地拼接,并按照拼接后的内容执行对应操作。
表1
通过本实施例,按照不同分区所存储的内容的功能,对不同分区的升级方式进行设置,以便于在升级和启动过程中按照与升级方式对应的方式进行版本信息的写入或读取,可以提高固件升级的效率。
在一个示例性实施例中,在根据升级方式信息,使用第二固件版本对固件存储器中存储的第一固件版本进行更新,并在第二固件版本中的至少部分固件信息被存储到目标分区中的情况下,使用目标分区中用于存储至少部分固件信息的地址,对固件分区地址表中记录的目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新之后,上述方法还包括:
S21,获取固件分区地址表中的目标固件的当前固件版本中的各个部分固件信息的存储地址,得到一组存储地址,其中,在使用第二固件版本完成对固件存储器中存储的第一固件版本进行更新的情况下,当前固件版本为第二固件版本;
S22,从一组存储地址中读取第二固件版本中的各个部分固件信息,并按照第二固件版本中的各个部分固件信息的读取顺序,将第二固件版本中的各个部分固件信息写入内存中,以使得处理器按照内存中的第二固件版本中的各个部分固件信息启动目标固件。
在固件发生升级之后,由于部分分区的升级是比对升级,因此存储器内所存储的固件版本的最新固件信息不是连续的,即,虽然主镜像的各个分区虽然都存储了完整的内容,但其未必是最新的,最新的内容可能存储在冷分区。在读取时,根据固件分区地址表,很可能一个分区(比如kernel分区)所对应的信息,部分读写区块与最新的版本信息相同,但部分读写区块与最新的版本信息不同、且最新的内容存储在冷分区中,因此,会出现在本分区读取了前一个最小读写区块,又需要到冷分区中读取最新版本的下一个最小区块,再回到本分区读取最新版本的下下一个区块。
在启动固件时,需要先从boot分区中的固件分区地址表将不连续的地址读取出来,按照地址分别从对应的分区中读取对应的版本信息。如图9所示,先获取到的分区地址A,则按照地址A从kernel分区中读取内容,并写入到内存中,再获取到的分区地址B,由于地址B为冷分区内的地址,则需要从冷分区中读取内容,并写入内存中。
由于BMC固件存储器中存储的版本信息,需要写入到内存中后,才能由CPU正常使用,可以按照第二固件版本中的各个部分固件信息的读取顺序,将第二固件版本中的各个部分固件信息写入内存中,从而可以按照正常的固件存储方式在内存中构建镜像,形成与常规方式相同的内存组织形式,这样,固件本身就不需要因为存储地址的改变而做出任何修改。
以目标固件为BMC为例,目标固件的启动方式,可以如图10所示,可以包括以下步骤:
步骤1,BMC上电启动后,boot先读取固件分区表,确定整个版本的分区。
步骤2,BMC根据固件分区表,计算每个分区(如rootfs分区、kernel分区等)在固件存储器内的地址范围。
步骤3,BMC根据读取到的每个分区的多条地址范围,读取固件存储器相应位置的内容,并将对应的内容写入内存空间里,每个分区的内容按照地址高低顺序拼接为一个完整的固件分区。
步骤4,读取完一个分区后,继续读取下一个分区,按照步骤3同样操作,直到读取完所有的必要分区。
步骤5,boot转向内存,从内存中正常启动,流程结束。
通过本实施例,按照表中记录的地址,先后从不同分区中读取固件信息,可以保证读取到的固件信息是连续的,从而保证按照读取顺序写入内存的信息是连续的,可以在不对固件存储器进行修改的情况下,提高固件的启动成功率。
在一个示例性实施例中,在将第二固件版本中的各个部分固件信息写入内存中之后,上述方法还包括:
在处理器按照内存中的第二固件版本中的各个部分固件信息无法启动目标固件的情况下,将固件分区地址表中记录的目标固件的当前固件版本中的各个部分固件信息的存储地址恢复为与第一固件版本中的各个部分固件信息的存储地址。
当新升级的后的版本因为版本代码自身的原因无法启动时,由于在比对升级方式的影响下,只读分区(如kernel分区、rootfs分区)内存储的内容仍为旧固件版本,因此可以直接恢复固件分区地址表中记录的与旧版本对应的存储地址,从而实现固件回退到上一版本或稳定版本,使得目标固件可以正常启动。
通过本实施例,相比相关技术中在版本无法启动时,需要切换到另一固件存储器或者另一镜像以启动固件,通过将固件分区地址表中记录的目标固件的当前固件版本中的各个部分固件信息的存储地址恢复为与第一固件版本中的各个部分固件信息的存储地址,可以实现将固件分区地址表中的内容恢复到默认值,无需进行存储器或者镜像的切换,即可实现固件版本的正常启动,可以提高固件启动的效率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
在本实施例中还提供了一种固件升级装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
如图11所示,该装置包括:
第一获取单元1102,用于获取目标固件的第二固件版本,其中,第二固件版本用于对目标固件当前的第一固件版本进行更新,第一固件版本存储在目标固件的固件存储器中的一组分区中,固件存储器包括一组分区和与一组分区不同的目标分区,一组分区中的每个分区当前存储了第一固件版本中的部分固件信息;
第二获取单元1104,用于获取固件分区地址表中记录的升级方式信息,其中,固件分区地址表存储在一组分区中的一个分区中,升级方式信息用于指示一组分区中的每个分区的升级方式,固件分区地址表中还记录了目标固件的当前固件版本中的各个部分固件信息的存储地址,在当前固件版本为第一固件版本的情况下,当前固件版本中的各个部分固件信息的存储地址包括一组分区中的每个分区中用于存储的第一固件版本中对应的部分固件信息的地址;
执行单元1106,用于根据升级方式信息,使用第二固件版本对固件存储器中存储的第一固件版本进行更新,并在第二固件版本中的至少部分固件信息被存储到目标分区中的情况下,使用目标分区中用于存储至少部分固件信息的地址,对固件分区地址表中记录的目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新,其中,在使用第二固件版本完成对固件存储器中存储的第一固件版本进行更新的情况下,当前固件版本为第二固件版本。
在一个示例性实施例中,执行单元包括:
存储模块,用于在升级方式信息指示一组分区中的第一分区的升级方式为比对升级方式、第一分区中当前存储了第一固件版本中的第一部分固件信息、第二固件版本中包括用于对第一部分固件信息进行更新的第二部分固件信息、且差异固件信息的大小小于或等于目标分区的空闲存储大小的情况下,将差异固件信息存储在目标分区中,其中,差异固件信息包括第二部分固件信息与第一部分固件信息之间存在差异的固件信息。
在一个示例性实施例中,执行单元包括:
第一更新模块,用于在将第二部分固件信息存储在目标分区中、且固件分区地址表中记录了第一存储地址的情况下,在固件分区地址表中用第二存储地址对第一存储地址进行更新,其中,第一存储地址是第一分区中用于存储第一部分固件信息的地址,第二存储地址是目标分区中用于存储差异固件信息的地址。
在一个示例性实施例中,执行单元包括:
第二更新模块,用于在升级方式信息指示一组分区中的第一分区的升级方式为比对升级方式、第一分区中当前存储了第一固件版本中的第一部分固件信息、第二固件版本中包括用于对第一部分固件信息进行更新的第二部分固件信息、且差异固件信息的大小大于目标分区的空闲存储大小的情况下,将第一分区中当前存储的第一部分固件信息更新为第二部分固件信息,其中,差异固件信息包括第二部分固件信息与第一部分固件信息之间存在差异的固件信息。
在一个示例性实施例中,执行单元包括以下至少之一:
第三更新模块,用于在升级方式信息指示一组分区中的第二分区的升级方式为强制升级方式、第二分区中当前存储了第一固件版本中的第三部分固件信息、第二固件版本中包括用于对第三部分固件信息进行更新的第四部分固件信息的情况下,将第二分区中当前存储的第三部分固件信息更新为第四部分固件信息;
第四更新模块,用于在升级方式信息指示一组分区中的第三分区的升级方式为不升级方式的情况下,保持第三分区中当前存储的部分固件信息不变。
在一个示例性实施例中,上述装置还包括:
第三获取单元,用于在根据升级方式信息,使用第二固件版本对固件存储器中存储的第一固件版本进行更新,并在第二固件版本中的至少部分固件信息被存储到目标分区中的情况下,使用目标分区中用于存储至少部分固件信息的地址,对固件分区地址表中记录的目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新之后,获取固件分区地址表中的目标固件的当前固件版本中的各个部分固件信息的存储地址,得到一组存储地址,其中,在使用第二固件版本完成对固件存储器中存储的第一固件版本进行更新的情况下,当前固件版本为第二固件版本;
写入单元,用于从一组存储地址中读取第二固件版本中的各个部分固件信息,并按照第二固件版本中的各个部分固件信息的读取顺序,将第二固件版本中的各个部分固件信息写入内存中,以使得处理器按照内存中的第二固件版本中的各个部分固件信息启动目标固件。
在一个示例性实施例中,上述装置还包括:
恢复单元,用于在将第二固件版本中的各个部分固件信息写入内存中之后,在处理器按照内存中的第二固件版本中的各个部分固件信息无法启动目标固件的情况下,将固件分区地址表中记录的目标固件的当前固件版本中的各个部分固件信息的存储地址恢复为与第一固件版本中的各个部分固件信息的存储地址。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种固件更新方法,其特征在于,
包括:
获取目标固件的第二固件版本,其中,所述第二固件版本用于对所述目标固件当前的第一固件版本进行更新,所述第一固件版本存储在所述目标固件的固件存储器中的一组分区中,所述固件存储器包括所述一组分区和与所述一组分区不同的目标分区,所述一组分区中的每个分区当前存储了所述第一固件版本中的部分固件信息;
获取固件分区地址表中记录的升级方式信息,其中,所述固件分区地址表存储在所述一组分区中的一个分区中,所述升级方式信息用于指示所述一组分区中的每个分区的升级方式,所述固件分区地址表中还记录了所述目标固件的当前固件版本中的各个部分固件信息的存储地址,在所述当前固件版本为所述第一固件版本的情况下,所述当前固件版本中的各个部分固件信息的存储地址包括所述一组分区中的每个分区中用于存储的所述第一固件版本中对应的部分固件信息的地址;
根据所述升级方式信息,使用所述第二固件版本对所述固件存储器中存储的所述第一固件版本进行更新,并在所述第二固件版本中的至少部分固件信息被存储到所述目标分区中的情况下,使用所述目标分区中用于存储所述至少部分固件信息的地址,对所述固件分区地址表中记录的所述目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新,其中,在使用所述第二固件版本完成对所述固件存储器中存储的所述第一固件版本进行更新的情况下,所述当前固件版本为所述第二固件版本。
2.根据权利要求1所述的方法,其特征在于,
所述根据所述升级方式信息,使用所述第二固件版本对所述固件存储器中存储的所述第一固件版本进行更新,包括:
在所述升级方式信息指示所述一组分区中的第一分区的升级方式为比对升级方式、所述第一分区中当前存储了所述第一固件版本中的第一部分固件信息、所述第二固件版本中包括用于对所述第一部分固件信息进行更新的第二部分固件信息、且差异固件信息的大小小于或等于所述目标分区的空闲存储大小的情况下,将所述差异固件信息存储在所述目标分区中,其中,所述差异固件信息包括所述第二部分固件信息与所述第一部分固件信息之间存在差异的固件信息。
3.根据权利要求2所述的方法,其特征在于,
所述使用所述目标分区中用于存储所述至少部分固件信息的地址,对所述固件分区地址表中记录的所述目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新,包括:
在将所述第二部分固件信息存储在所述目标分区中、且所述固件分区地址表中记录了第一存储地址的情况下,在所述固件分区地址表中用第二存储地址对所述第一存储地址进行更新,其中,所述第一存储地址是所述第一分区中用于存储所述第一部分固件信息的地址,所述第二存储地址是所述目标分区中用于存储所述差异固件信息的地址。
4.根据权利要求1所述的方法,其特征在于,
所述根据所述升级方式信息,使用所述第二固件版本对所述固件存储器中存储的所述第一固件版本进行更新,包括:
在所述升级方式信息指示所述一组分区中的第一分区的升级方式为比对升级方式、所述第一分区中当前存储了所述第一固件版本中的第一部分固件信息、所述第二固件版本中包括用于对所述第一部分固件信息进行更新的第二部分固件信息、且差异固件信息的大小大于所述目标分区的空闲存储大小的情况下,将所述第一分区中当前存储的所述第一部分固件信息更新为所述第二部分固件信息,其中,所述差异固件信息包括所述第二部分固件信息与所述第一部分固件信息之间存在差异的固件信息。
5.根据权利要求1所述的方法,其特征在于,
所述根据所述升级方式信息,使用所述第二固件版本对所述固件存储器中存储的所述第一固件版本进行更新,包括以下至少之一:
在所述升级方式信息指示所述一组分区中的第二分区的升级方式为强制升级方式、所述第二分区中当前存储了所述第一固件版本中的第三部分固件信息、所述第二固件版本中包括用于对所述第三部分固件信息进行更新的第四部分固件信息的情况下,将所述第二分区中当前存储的所述第三部分固件信息更新为所述第四部分固件信息;
在所述升级方式信息指示所述一组分区中的第三分区的升级方式为不升级方式的情况下,保持所述第三分区中当前存储的部分固件信息不变。
6.根据权利要求1所述的方法,其特征在于,
在根据所述升级方式信息,使用所述第二固件版本对所述固件存储器中存储的所述第一固件版本进行更新,并在所述第二固件版本中的至少部分固件信息被存储到所述目标分区中的情况下,使用所述目标分区中用于存储所述至少部分固件信息的地址,对所述固件分区地址表中记录的所述目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新之后,所述方法还包括:
获取所述固件分区地址表中的所述目标固件的所述当前固件版本中的各个部分固件信息的存储地址,得到一组存储地址,其中,在使用所述第二固件版本完成对所述固件存储器中存储的所述第一固件版本进行更新的情况下,所述当前固件版本为所述第二固件版本;
从所述一组存储地址中读取所述第二固件版本中的各个部分固件信息,并按照所述第二固件版本中的各个部分固件信息的读取顺序,将所述第二固件版本中的各个部分固件信息写入内存中,以使得处理器按照所述内存中的所述第二固件版本中的各个部分固件信息启动所述目标固件。
7.根据权利要求6所述的方法,其特征在于,
在将所述第二固件版本中的各个部分固件信息写入内存中之后,所述方法还包括:
在所述处理器按照所述内存中的所述第二固件版本中的各个部分固件信息无法启动所述目标固件的情况下,将所述固件分区地址表中记录的所述目标固件的当前固件版本中的各个部分固件信息的存储地址恢复为与所述第一固件版本中的各个部分固件信息的存储地址。
8.一种固件升级装置,其特征在于,
包括:
第一获取单元,用于获取目标固件的第二固件版本,其中,所述第二固件版本用于对所述目标固件当前的第一固件版本进行更新,所述第一固件版本存储在所述目标固件的固件存储器中的一组分区中,所述固件存储器包括所述一组分区和与所述一组分区不同的目标分区,所述一组分区中的每个分区当前存储了所述第一固件版本中的部分固件信息;
第二获取单元,用于获取固件分区地址表中记录的升级方式信息,其中,所述固件分区地址表存储在所述一组分区中的一个分区中,所述升级方式信息用于指示所述一组分区中的每个分区的升级方式,所述固件分区地址表中还记录了所述目标固件的当前固件版本中的各个部分固件信息的存储地址,在所述当前固件版本为所述第一固件版本的情况下,所述当前固件版本中的各个部分固件信息的存储地址包括所述一组分区中的每个分区中用于存储的所述第一固件版本中对应的部分固件信息的地址;
执行单元,用于根据所述升级方式信息,使用所述第二固件版本对所述固件存储器中存储的所述第一固件版本进行更新,并在所述第二固件版本中的至少部分固件信息被存储到所述目标分区中的情况下,使用所述目标分区中用于存储所述至少部分固件信息的地址,对所述固件分区地址表中记录的所述目标固件的当前固件版本中的各个部分固件信息的存储地址进行更新,其中,在使用所述第二固件版本完成对所述固件存储器中存储的所述第一固件版本进行更新的情况下,所述当前固件版本为所述第二固件版本。
9.一种计算机可读存储介质,其特征在于,
所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法。
10.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,
所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410022829.5A CN117850858A (zh) | 2024-01-05 | 2024-01-05 | 固件升级方法和装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410022829.5A CN117850858A (zh) | 2024-01-05 | 2024-01-05 | 固件升级方法和装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117850858A true CN117850858A (zh) | 2024-04-09 |
Family
ID=90537797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410022829.5A Pending CN117850858A (zh) | 2024-01-05 | 2024-01-05 | 固件升级方法和装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117850858A (zh) |
-
2024
- 2024-01-05 CN CN202410022829.5A patent/CN117850858A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7631174B2 (en) | Method of updating firmware in computer server systems | |
JP5113700B2 (ja) | ファームウェア更新装置及び方法 | |
CN102360298B (zh) | 一种终端设备的软件升级方法 | |
CN110825563B (zh) | 系统恢复方法、装置以及电子设备 | |
US10592354B2 (en) | Configurable recovery states | |
US7512777B2 (en) | Method and system for maintaining system management BIOS | |
CN103365696A (zh) | Bios镜像文件获取方法及装置 | |
CN104915226B (zh) | 一种网络设备软件启动方法、装置及网络设备 | |
CN114443081A (zh) | 终端升级的方法及终端 | |
US8527733B2 (en) | Memory system | |
CN112363739B (zh) | 终端设备的分区镜像在线升级方法、装置、设备及介质 | |
CN111124536B (zh) | 基于数据隔离的双系统的数据共享方法和装置、终端设备 | |
EP3769225B1 (en) | Free space pass-through | |
RU2600101C1 (ru) | Управляющий модуль узла и способ обновления встроенного программного обеспечения для этого управляющего модуля | |
CN117850858A (zh) | 固件升级方法和装置、存储介质及电子设备 | |
CN112860595B (zh) | Pci设备或pcie设备、数据存取方法及相关组件 | |
CN115543225A (zh) | 数据处理方法、系统、装置、计算机存储介质及电子设备 | |
CN104461659A (zh) | 一种高可靠性的计算机启动方法 | |
CN114020308A (zh) | 一种摄像设备升级方法、装置、设备及介质 | |
CN113849494A (zh) | 一种数据更新方法及装置 | |
CN117234544B (zh) | 服务器设备进行系统恢复的方法和装置 | |
KR102142905B1 (ko) | 통신 단말기의 사용자 파일 시스템 자동 복구 방법 | |
CN110333967B (zh) | 一种防止u盘数据丢失和系统损坏的方法和装置以及设备 | |
CN109976940A (zh) | 一种软启动网络设备 | |
CN115562698B (zh) | 基本输入输出系统bios的升级方法和电子设备 |
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 |