CN118567692B - 一种基本输入输出系统固件升级方法、产品、设备及介质 - Google Patents
一种基本输入输出系统固件升级方法、产品、设备及介质 Download PDFInfo
- Publication number
- CN118567692B CN118567692B CN202411045155.7A CN202411045155A CN118567692B CN 118567692 B CN118567692 B CN 118567692B CN 202411045155 A CN202411045155 A CN 202411045155A CN 118567692 B CN118567692 B CN 118567692B
- Authority
- CN
- China
- Prior art keywords
- file
- upgraded
- partition
- original image
- upgrade
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000005192 partition Methods 0.000 claims abstract description 264
- 238000005516 engineering process Methods 0.000 claims description 49
- 238000004590 computer program Methods 0.000 claims description 23
- 230000002159 abnormal effect Effects 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 230000001680 brushing effect Effects 0.000 description 9
- 238000013461 design Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013024 troubleshooting Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基本输入输出系统固件升级方法、产品、设备及介质,涉及计算机硬件技术领域。方案将闪存芯片拆分为用于存储原始镜像文件的第一分区,和用于存储包含原始镜像文件备份的镜像信息综合文件的第二分区。在升级BIOS固件时,获取待升级镜像文件并对第一分区中的原始镜像文件进行刷新升级。如果发生断电,则在重新上电后根据镜像信息综合文件中的升级标志位判断是否升级完成;若确认未升级完成,则根据镜像信息综合文件中的原始镜像文件备份,对第一分区中的待升级镜像文件进行刷新替换,从而保证了BIOS镜像文件的一致性和完整性,确保系统启动的正常引导。同时,无需额外增加闪存芯片,降低了硬件成本,提高了系统的稳定性。
Description
技术领域
本发明涉及计算机硬件技术领域,特别是涉及一种基本输入输出系统固件升级方法、产品、设备及介质。
背景技术
基本输入输出系统(Basic Input/Output System,BIOS)固件升级是计算机系统维护中的一项重要任务,它涉及将新的固件版本写入计算机主板上的闪存芯片(FLASH)。BIOS作为计算机启动过程中的关键组件,负责硬件初始化、自检以及引导操作系统等功能。因此,在升级过程中,任何意外的断电或干扰都可能导致FLASH芯片中的BIOS固件损坏,从而使计算机无法启动。
为了避免BIOS固件升级失败导致的计算机无法启动,一些系统采用了主备FLASH芯片的设计方案。在这个方案中,有两个FLASH芯片,一个作为主芯片,另一个作为备用芯片。在升级过程中,新的BIOS固件版本首先被写入主芯片。如果升级过程中发生断电或其他问题,系统可以切换到备用芯片,以确保计算机能够继续正常启动。然而,这种设计方案也带来了一些问题。首先,它增加了系统的复杂性,包括设计、验证、测试和维护等方面。这可能会增加开发时间和成本,并引入更多的潜在故障点。其次,对于一些系统来说,可能需要一次性升级所有固件,包括主备固件。如果在升级过程中发生断电,可能会导致设备无法启动。
鉴于上述问题,如何解决当前采用主备FLASH芯片的BIOS固件升级方式的硬件成本较高,增加了系统的复杂性,且仍存在计算机无法启动的风险,是该领域技术人员亟待解决的问题。
发明内容
本发明的目的是提供一种基本输入输出系统固件升级方法、产品、设备及介质,以解决当前采用主备FLASH芯片的BIOS固件升级方式的硬件成本较高,增加了系统的复杂性,且仍存在计算机无法启动的风险的问题。
为解决上述技术问题,本发明提供一种基本输入输出系统固件升级方法,包括:
将闪存芯片拆分为多个内存技术设备分区;其中,所述内存技术设备分区包含存储有基本输入输出系统固件的原始镜像文件的第一分区和空闲的第二分区;
生成镜像信息综合文件并存入空闲的所述第二分区中;其中,所述镜像信息综合文件中至少包含所述原始镜像文件及其对应的升级标志位;
当升级基本输入输出系统固件时,获取基本输入输出系统固件的待升级镜像文件,根据所述待升级镜像文件对所述第一分区中的所述原始镜像文件进行刷新升级,并在刷新升级完成后更新所述升级标志位;
当系统断电又重新上电时,根据所述镜像信息综合文件中的所述升级标志位判断基本输入输出系统固件是否升级完成;
若否,则根据所述镜像信息综合文件中的所述原始镜像文件对所述第一分区中的所述待升级镜像文件进行刷新替换。
一方面,所述将闪存芯片拆分为多个内存技术设备分区,包括:
确定所述闪存芯片的空间大小;
基于预设分区大小和所述闪存芯片的空间大小,通过内存技术设备驱动将所述闪存芯片拆分为多个所述内存技术设备分区;
根据设备树或配置平台文件定义各所述内存技术设备分区的参数;其中,所述参数至少包含所述内存技术设备分区的起始地址、空间大小和名称。
另一方面,所述通过内存技术设备驱动将所述闪存芯片拆分为多个所述内存技术设备分区,包括:
在所述闪存芯片的驱动程序中注册所述内存技术设备分区;
调用内存技术设备子系统函数创建所述第一分区和所述第二分区;
其中,所述第一分区和所述第二分区的大小相等,且所述第一分区和所述第二分区均包含预设数量的子分区;基本输入输出系统固件的所述原始镜像文件以预设数量的原始镜像块的形式分别存储于所述第一分区的各子分区中。
另一方面,所述生成镜像信息综合文件并存入空闲的所述第二分区中,包括:
将所述第一分区中的各所述原始镜像块读取至文件系统中;
基于所述文件系统,计算各所述原始镜像块的校验值和文件大小信息;
设置各所述原始镜像块对应的所述升级标志位;其中,所述升级标志位的初始值表征未升级;
根据各所述校验值、各所述文件大小信息、各所述升级标志位和各所述原始镜像块,分别生成各所述原始镜像块对应的所述镜像信息综合文件;
将各所述镜像信息综合文件分别存入所述第二分区的各子分区中。
另一方面,所述获取基本输入输出系统固件的待升级镜像文件,包括:
获取加密后的基本输入输出系统固件的所述待升级镜像文件;
对所述待升级镜像文件进行解密;
将解密后的所述待升级镜像文件转换为预设格式。
另一方面,所述根据所述待升级镜像文件对所述第一分区中的所述原始镜像文件进行刷新升级,并在刷新升级完成后更新所述升级标志位,包括:
将所述待升级镜像文件切分为预设数量的待升级镜像块;
根据各所述原始镜像块与各所述待升级镜像块之间的差异,确定需要升级的目标原始镜像块及其对应的目标待升级镜像块;
确定所述目标原始镜像块所在的所述第一分区的目标子分区,并将对应的所述目标待升级镜像块刷写至所述目标子分区中;
确定所述目标原始镜像块对应的所述第二分区中的目标镜像信息综合文件,并将所述目标镜像信息综合文件中的所述升级标志位更新为已升级。
另一方面,所述根据各所述原始镜像块与各所述待升级镜像块之间的差异,确定需要升级的目标原始镜像块及其对应的目标待升级镜像块,包括:
根据各所述原始镜像块的偏移量与各所述待升级镜像块的偏移量,将各所述原始镜像块与各所述待升级镜像块一一对应;
分别判断各组所述原始镜像块与所述待升级镜像块二者的文件内容是否存在差异;
若是,则确认所述原始镜像块需要升级;
若否,则确认所述原始镜像块不需要升级。
另一方面,在所述确认所述原始镜像块不需要升级之后,还包括:
获取不需要升级的所述原始镜像块对应的所述第二分区中的所述镜像信息综合文件,以得到免升级镜像信息综合文件;
将所述免升级镜像信息综合文件中的所述升级标志位更新为已升级。
另一方面,所述根据所述镜像信息综合文件中的所述升级标志位判断基本输入输出系统固件是否升级完成,包括:
通过基板管理控制器遍历所述第二分区中的各所述镜像信息综合文件;
判断各所述镜像信息综合文件中的所述升级标志位是否均表征已升级;
若是,则确认基本输入输出系统固件升级完成;
若否,则确认受断电影响,基本输入输出系统固件未升级完成,进入所述根据所述镜像信息综合文件中的所述原始镜像文件对所述第一分区中的所述待升级镜像文件进行刷新替换的步骤。
另一方面,所述根据所述镜像信息综合文件中的所述原始镜像文件对所述第一分区中的所述待升级镜像文件进行刷新替换,包括:
确定表征未升级的所述升级标志位所属的所述镜像信息综合文件,以确定备份镜像信息综合文件;
解析出所述备份镜像信息综合文件中的备份原始镜像块;
将所述备份原始镜像块刷写至所述第一分区对应的子分区中,以对异常的待升级镜像块进行替换。
另一方面,所述解析出所述备份镜像信息综合文件中的备份原始镜像块,包括:
计算所述备份原始镜像块的校验值;
判断所述备份原始镜像块的校验值与所述备份镜像信息综合文件中的校验值是否相同;
若是,则确认所述备份原始镜像块解析成功;
若否,则确认所述备份原始镜像块解析失败。
另一方面,在确认基本输入输出系统固件升级完成之后,还包括:
触发中央处理器侧系统重启进程;
通过基板管理控制器生成基本输入输出系统固件升级日志;
清除所述第二分区中的所述镜像信息综合文件。
为解决上述技术问题,本发明还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述基本输入输出系统固件升级方法的步骤。
为解决上述技术问题,本发明还提供一种基本输入输出系统固件升级设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述的基本输入输出系统固件升级方法的步骤。
为解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的基本输入输出系统固件升级方法的步骤。
本发明所提供的基本输入输出系统固件升级方法,具体将闪存芯片拆分为多个内存技术设备分区;其中,内存技术设备分区包含存储有基本输入输出系统固件的原始镜像文件的第一分区和空闲的第二分区;生成镜像信息综合文件并存入空闲的第二分区中;其中,镜像信息综合文件中至少包含原始镜像文件及其对应的升级标志位;当升级基本输入输出系统固件时,获取基本输入输出系统固件的待升级镜像文件,根据待升级镜像文件对第一分区中的原始镜像文件进行刷新升级,并在刷新升级完成后更新升级标志位;当系统断电又重新上电时,根据镜像信息综合文件中的升级标志位判断基本输入输出系统固件是否升级完成;若否,则根据镜像信息综合文件中的原始镜像文件对第一分区中的待升级镜像文件进行刷新替换。
本发明的有益效果在于,将闪存芯片拆分为多个内存技术设备分区:第一分区存储准备升级的原始镜像文件,第二分区存储包含原始镜像文件备份的镜像信息综合文件。在升级BIOS固件时,获取待升级镜像文件并对第一分区中的原始镜像文件进行刷新升级,实现了BIOS固件升级。如果在BIOS固件升级过程中发生断电,则在重新上电后根据镜像信息综合文件中的升级标志位判断BIOS固件是否升级完成;若确认BIOS固件未升级完成,为了保证BIOS的正常引导启动,根据镜像信息综合文件中的原始镜像文件备份,对第一分区中的待升级镜像文件进行刷新替换,从而保证了BIOS镜像文件的一致性和完整性,确保系统启动的正常引导。本方案无需额外增加闪存芯片,降低了硬件成本,提高了系统的稳定性和可靠性。
另一方面,本发明具体基于预设分区大小和闪存芯片的空间大小,通过内存技术设备驱动将闪存芯片拆分为多个内存技术设备分区,根据设备树或配置平台文件定义各内存技术设备分区的参数,实现了内存技术设备分区的拆分,以便于镜像文件的存储。在闪存芯片的驱动程序中注册内存技术设备分区,调用内存技术设备子系统函数实现了对第一分区和第二分区的创建;同时,第一分区和第二分区的大小相等且均包含预设数量的子分区,以便于原始镜像文件以预设数量的原始镜像块的形式分别存储于第一分区的各子分区中,实现了对原始镜像文件的拆分和存储。通过将第一分区中的各原始镜像块读取至文件系统中,基于文件系统计算各原始镜像块的校验值和文件大小信息,并设置各原始镜像块对应的升级标志位;根据各校验值、各文件大小信息、各升级标志位和各原始镜像块,分别生成各原始镜像块对应的镜像信息综合文件,并分别存入第二分区的各子分区中,实现了对原始镜像文件的备份和升级标志位的设置,以便于在BIOS固件升级异常时保证镜像文件的完整性和一致性。通过获取加密后的基本输入输出系统固件的待升级镜像文件;对待升级镜像文件进行解密,将解密后的待升级镜像文件转换为预设格式,实现了对用于升级BIOS固件的待升级镜像文件的获取。通过将待升级镜像文件切分为预设数量的待升级镜像块,根据待升级镜像块与原始镜像块的差异确定需要升级的目标原始镜像块,并由对应的目标待升级镜像块对目标原始镜像块进行刷新升级,同时更新升级标志位,实现了BIOS固件的更新升级。根据偏移量将各原始镜像块与各待升级镜像块一一对应;分别判断各组原始镜像块与待升级镜像块二者的文件内容是否存在差异;若是,则确认原始镜像块需要升级,否则不需要升级;实现了只对存在差异的原始镜像块的升级,极大地提高了BIOS固件的升级效率,减小了断电窗口的影响。根据镜像信息综合文件中的升级标志位实现了对BIOS固件是否升级完成的判断,以便于当确认未升级完成时,对受断电影响的待升级镜像块进行替换。确定表征未升级的升级标志位所属的备份镜像信息综合文件,并解析出其中的备份原始镜像块;将备份原始镜像块刷写至第一分区对应的子分区中,以对异常的待升级镜像块进行替换,保证了镜像文件的一致性和完整性。通过计算备份原始镜像块的校验值,并对备份原始镜像块的校验值与备份镜像信息综合文件中的校验值是否相同进行判断,保证了备份原始镜像块解析的正确性。
此外,本发明还提供一种计算机程序产品、基本输入输出系统固件升级设备及介质,效果同上。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基本输入输出系统固件升级方法的流程图;
图2为本发明实施例提供的一种基本输入输出系统固件升级装置的示意图;
图3为本发明实施例提供的一种基本输入输出系统固件升级设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的核心是提供一种基本输入输出系统固件升级方法、产品、设备及介质,以解决当前采用主备FLASH芯片的BIOS固件升级方式的硬件成本较高,增加了系统的复杂性,且仍存在计算机无法启动的风险的问题。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
目前,在BIOS升级过程中,由于需要在硬件板上设计主备两路FLASH芯片,这会增加额外的硬件设备和相关设计工作,从而提高系统设计的成本。此外,主备BIOS芯片的冗余设计也会增加系统的复杂性,包括设计、验证、测试和维护等方面,这可能会延长开发时间并增加成本,同时也会引入更多的潜在故障点。在许多情况下,需要一次性升级所有固件,包括主备固件。如果在升级过程中意外断电,可能会导致设备的基础固件出现错误,从而使机器无法启动。为了解决上述问题,本发明提供了一种BIOS固件升级方法。
需要注意的是,本发明中对BIOS固件升级方法的应用场景不做限制,例如可应用于服务器、计算机设备或交换机设备,根据具体的实施情况而定。
图1为本发明实施例提供的一种基本输入输出系统固件升级方法的流程图。如图1所示,方法包括:
S10:将闪存芯片拆分为多个内存技术设备分区。
其中,内存技术设备分区包含存储有基本输入输出系统固件的原始镜像文件的第一分区和空闲的第二分区。
在具体实施中,首先将设备中的FLASH芯片拆分为多个内存技术设备(MemoryTechnology Device,MTD)分区。可以理解的是,MTD分区是在FLASH芯片上定义的一个逻辑地址范围,该范围映射到设备的物理地址空间的某个区域。MTD分区允许将存储设备划分为多个逻辑分区,以便更好地组织和管理数据。每个MTD分区都对应着闪存设备上一块或多块物理块,具有自己的大小和起始偏移量。通过定义、操作和释放MTD分区,可以对闪存进行读写、擦除等操作。本实施例中对于MTD分区的具体划分方式不做限制,根据具体的实施情况而定。
需要说明的是,本实施例中具体将闪存芯片拆分为两大分区:第一分区和第二分区。其中,第一分区存储有BIOS固件的原始镜像文件,当进行BIOS固件升级时,实际上是对其中的原始镜像文件进行更新升级;第二分区则为空闲分区。本实施例中对于第一分区和第二分区的大小不做限制,在具体实施中也可分别在第一分区和第二分区中划分更多的子分区,从而更好地进行镜像文件的存储。
S11:生成镜像信息综合文件并存入空闲的第二分区中。
其中,镜像信息综合文件中至少包含原始镜像文件及其对应的升级标志位。
进一步地,生成镜像信息综合文件,并将镜像信息综合文件存入空闲的第二分区中。需要说明的是,镜像信息综合文件中至少包含原始镜像文件及其对应的升级标志位。也就是说,镜像信息综合文件实际上是对第一分区中的原始镜像文件的备份。而升级标志位则用于表征BIOS固件的升级状态:当未进行BIOS固件升级时,升级标志位表征未升级;当完成BIOS固件升级时,升级标志位表征已升级。镜像信息综合文件中除了包含原始镜像文件及其对应的升级标志位,还可包含例如校验值等其他参数,在本实施例中不做限制。此外,本实施例中对于镜像信息综合文件的生成过程不做限制,根据具体的实施情况而定。
S12:当升级基本输入输出系统固件时,获取基本输入输出系统固件的待升级镜像文件,根据待升级镜像文件对第一分区中的原始镜像文件进行刷新升级,并在刷新升级完成后更新升级标志位。
当升级BIOS固件时,获取BIOS固件的待升级镜像文件。可以理解的是,待升级镜像文件即为对原始镜像文件进行刷新升级的镜像文件。具体根据待升级镜像文件对第一分区中的原始镜像文件进行刷新升级,以此实现BIOS固件升级。此外,在刷新升级完成后更新升级标志位,具体由未升级更新为已升级。
需要注意的是,本实施例中对于待升级镜像文件的获取方式不做限制,对于BIOS升级中对原始镜像文件的刷新过程也不做限制,根据具体的实施情况而定。
S13:当系统断电又重新上电时,根据镜像信息综合文件中的升级标志位判断基本输入输出系统固件是否升级完成;若是,则结束;若否,则进入步骤S14。
S14:根据镜像信息综合文件中的原始镜像文件对第一分区中的待升级镜像文件进行刷新替换。
当升级BIOS固件时,随时可能发生断电的异常情况。为了避免异常断电导致FLASH芯片中镜像文件的完整性和一致性被破坏,进一步导致系统无法启动和自动恢复,在本实施例中,当系统断电又重新上电时,根据镜像信息综合文件中的升级标志位判断BIOS固件是否升级完成。可以理解的是,由于升级完成前后升级标志位不同,因此能够根据升级标志位确定是否完成BIOS固件升级。
若根据镜像信息综合文件中的升级标志位确认BIOS固件升级完成,则认为异常断电对BIOS固件升级无影响,可结束升级流程。若根据镜像信息综合文件中的升级标志位确认BIOS固件升级未完成,则认为异常断电对BIOS固件升级产生影响,升级过程中刷新的待升级镜像文件可能不完整或出现损坏。为了保证镜像文件的完整性和一致性,具体根据镜像信息综合文件中的原始镜像文件对第一分区中的待升级镜像文件进行刷新替换,从而确保BIOS能够正常引导启动。
本实施例中对于根据升级标志位判断BIOS固件是否升级完成的具体过程不做限制,对于根据镜像信息综合文件中的原始镜像文件对第一分区中的待升级镜像文件进行刷新替换的具体过程也不做限制,根据具体的实施情况而定。
本实施例中,将闪存芯片拆分为多个内存技术设备分区:第一分区存储准备升级的原始镜像文件,第二分区存储包含原始镜像文件备份的镜像信息综合文件。在升级BIOS固件时,获取待升级镜像文件并对第一分区中的原始镜像文件进行刷新升级,实现了BIOS固件升级。如果在BIOS固件升级过程中发生断电,则在重新上电后根据镜像信息综合文件中的升级标志位判断BIOS固件是否升级完成;若确认BIOS固件未升级完成,为了保证BIOS的正常引导启动,根据镜像信息综合文件中的原始镜像文件备份,对第一分区中的待升级镜像文件进行刷新替换,从而保证了BIOS镜像文件的一致性和完整性,确保系统启动的正常引导。本方案无需额外增加闪存芯片,降低了硬件成本,提高了系统的稳定性和可靠性。
在上述实施例的基础上,在一些实施例中,将闪存芯片拆分为多个内存技术设备分区,包括:
S101:确定闪存芯片的空间大小;
S102:基于预设分区大小和闪存芯片的空间大小,通过内存技术设备驱动将闪存芯片拆分为多个内存技术设备分区;
S103:根据设备树或配置平台文件定义各内存技术设备分区的参数;
其中,参数至少包含内存技术设备分区的起始地址、空间大小和名称。
在具体实施中,为了将闪存芯片拆分为多个MTD分区,首先需要确定FLASH芯片的空间大小,基于预设分区大小和FLASH芯片的空间大小,通过MTD驱动将闪存芯片拆分为多个MTD分区。
MTD驱动是Linux内核中的一个子系统,用于管理FLASH芯片。MTD驱动的主要功能包括设备抽象和管理、设备擦除和编程等。MTD驱动的设计目的是简化新的存储器设备的驱动开发,它在硬件和上层之间提供了一个抽象的接口,使得上层应用可以方便地访问和操作各种类型的非易失性存储器设备,而无需关心底层硬件的细节。MTD驱动通常由几个层次组成,包括硬件驱动层、MTD原始设备层和MTD分区层。硬件驱动层负责与底层硬件进行通信,MTD原始设备层提供了对存储器设备的抽象表示,而MTD分区层则允许将存储器设备划分为多个逻辑分区。此外,本实施例中对于预设分区大小不做限制,根据具体的实施情况而定。
最后,根据设备树或配置平台文件定义各MTD分区的参数,参数至少包含MTD分区的起始地址、空间大小和名称。可以理解的是,设备树(Device Tree)是一种描述硬件系统层次结构和属性的数据结构。它以树状结构的形式组织,包括节点(nodes)和属性(properties)。节点代表硬件设备,属性则描述了设备的详细信息。设备树通常用于嵌入式系统、服务器和桌面计算等领域,用于描述硬件平台的配置信息,以便操作系统能够识别和配置硬件设备。同设备树的功能一样,配置平台文件也能描述硬件平台的配置信息和参数等。因此在本实施例中对于MTD分区的参数的设置方式,在设备树与配置平台文件中任选其一即可。
本实施例中,基于预设分区大小和闪存芯片的空间大小,通过内存技术设备驱动将闪存芯片拆分为多个内存技术设备分区,根据设备树或配置平台文件定义各内存技术设备分区的参数,实现了内存技术设备分区的拆分,以便于镜像文件的存储。
在上述实施例的基础上,在一些实施例中,通过内存技术设备驱动将闪存芯片拆分为多个内存技术设备分区,包括:
S104:在闪存芯片的驱动程序中注册内存技术设备分区;
S105:调用内存技术设备子系统函数创建第一分区和第二分区;
其中,第一分区和第二分区的大小相等,且第一分区和第二分区均包含预设数量的子分区;基本输入输出系统固件的原始镜像文件以预设数量的原始镜像块的形式分别存储于第一分区的各子分区中。
在具体实施中,通过MTD驱动将FLSAH芯片拆分为多个MTD分区,具体在FLASH芯片的驱动程序中注册MTD分区,从而使得系统中的其他模块可以访问和使用该设备。进一步调用MTD子系统函数创建第一分区和第二分区。
值得说明的是,第一分区和第二分区的大小相等,且第一分区和第二分区均包含预设数量的子分区。因此,在文件系统中第一分区可显示为/dev/mtd0到/dev/mtdN,第二分区可显示为/dev/mtdN到/dev/mtd2N。此外,BIOS固件的原始镜像文件以预设数量的原始镜像块的形式分别存储于第一分区的各子分区中,从而实现了对原始镜像文件的拆分和存储。
本实施例中,在闪存芯片的驱动程序中注册内存技术设备分区,调用内存技术设备子系统函数实现了对第一分区和第二分区的创建;同时,第一分区和第二分区的大小相等且均包含预设数量的子分区,以便于原始镜像文件以预设数量的原始镜像块的形式分别存储于第一分区的各子分区中,实现了对原始镜像文件的拆分和存储。
在上述实施例的基础上,在一些实施例中,生成镜像信息综合文件并存入空闲的第二分区中,包括:
S111:将第一分区中的各原始镜像块读取至文件系统中;
S112:基于文件系统,计算各原始镜像块的校验值和文件大小信息;
S113:设置各原始镜像块对应的升级标志位;
其中,升级标志位的初始值表征未升级;
S114:根据各校验值、各文件大小信息、各升级标志位和各原始镜像块,分别生成各原始镜像块对应的镜像信息综合文件;
S115:将各镜像信息综合文件分别存入第二分区的各子分区中。
在具体实施中,为了生成镜像信息综合文件,具体将第一分区中的各原始镜像块读取至文件系统中。基于文件系统,计算各原始镜像块的校验值和文件大小(size)信息。需要注意的是,本实施例中对于校验值的计算方式不做限制,例如可采用MD5哈希算法计算校验值,采用循环冗余校验(Cyclic Redundancy Check,CRC)算法计算校验值,还可采用安全哈希(Secure Hash Algorithm,SHA)算法计算校验值,根据具体的实施情况而定。
进一步设置各原始镜像块对应的升级标志位。可以理解的是,在BIOS固件升级之前,升级标志位的初始值表征未升级。例如,可设置升级标志位的初始值为0x4E,从而表示信息交换标准代码(American Standard Code for Information Interchange,ASCII)的N字符,具体表征当前未升级。
然后,将校验值、文件大小信息和升级标志位作为文件头,结合对应的原始镜像块生成镜像信息综合文件。由于共存在多个原始镜像块,因此通过上述方式能够分别生成多个镜像信息综合文件。最后,将各镜像信息综合文件分别存入第二分区的各子分区中,实现了对原始镜像文件的备份。
本实施例中,通过将第一分区中的各原始镜像块读取至文件系统中,基于文件系统计算各原始镜像块的校验值和文件大小信息,并设置各原始镜像块对应的升级标志位;根据各校验值、各文件大小信息、各升级标志位和各原始镜像块,分别生成各原始镜像块对应的镜像信息综合文件,并分别存入第二分区的各子分区中,实现了对原始镜像文件的备份和升级标志位的设置,以便于在BIOS固件升级异常时保证镜像文件的完整性和一致性。
在上述实施例的基础上,在一些实施例中,获取基本输入输出系统固件的待升级镜像文件,包括:
S121:获取加密后的基本输入输出系统固件的待升级镜像文件;
S122:对待升级镜像文件进行解密;
S123:将解密后的待升级镜像文件转换为预设格式。
在具体实施中,为了获取用于升级BIOS固件的待升级镜像文件,具体获取加密后的BIOS固件的待升级镜像文件。可以理解的是,对待升级镜像文件进行加密传输能够保证待升级镜像文件的安全性和完整性;本实施例中对于其加密方式不做限制,根据具体的实施情况而定。
进一步对待升级镜像文件进行解密,并将解密后的待升级镜像文件转换为预设格式,转换为预设格式后的待升级镜像文件可直接用于刷新升级。本实施例中对于预设格式不做限制,例如可设置为bin格式。可以理解的是,bin格式是一种二进制文件格式,它以二进制编码表示文件的内容。这种格式通常用于存储各种类型的数据,包括计算机程序、固件、文档、图像、音频和视频等;BIN文件可以用于将代码和数据加载到FLASH芯片中,也可以用于将数据从一个嵌入式系统传输到另一个嵌入式系统。bin文件的大小即为文件所包含的数据的实际大小。
本实施例中,通过获取加密后的基本输入输出系统固件的待升级镜像文件;对待升级镜像文件进行解密,将解密后的待升级镜像文件转换为预设格式,实现了对用于升级BIOS固件的待升级镜像文件的获取。
在上述实施例的基础上,在一些实施例中,根据待升级镜像文件对第一分区中的原始镜像文件进行刷新升级,并在刷新升级完成后更新升级标志位,包括:
S124:将待升级镜像文件切分为预设数量的待升级镜像块;
S125:根据各原始镜像块与各待升级镜像块之间的差异,确定需要升级的目标原始镜像块及其对应的目标待升级镜像块;
S126:确定目标原始镜像块所在的第一分区的目标子分区,并将对应的目标待升级镜像块刷写至目标子分区中;
S127:确定目标原始镜像块对应的第二分区中的目标镜像信息综合文件,并将目标镜像信息综合文件中的升级标志位更新为已升级。
为了实现BIOS固件升级,具体将待升级镜像文件切分为预设数量的待升级镜像块。可以理解的是,切分后得到的待升级镜像块与第一分区中的原始镜像块的数量相等。进一步根据各原始镜像块与各待升级镜像块之间的差异,确定需要升级的目标原始镜像块及其对应的目标待升级镜像块。本实施例中对于确定需要升级的目标原始镜像块及其对应的目标待升级镜像块的具体过程不做限制,根据具体的实施情况而定。
在确定需要升级的目标原始镜像块之后,确定目标原始镜像块所在的第一分区的目标子分区,并将对应的目标待升级镜像块刷写至目标子分区中,从而实现了对目标原始镜像块的刷新升级。最后,确定目标原始镜像块对应的第二分区中的目标镜像信息综合文件,并将目标镜像信息综合文件中的升级标志位更新为已升级。例如,将目标镜像信息综合文件中的升级标志位更新为0x59,以表示ASCII码的Y字符,具体表征已升级。
本实施例中,通过将待升级镜像文件切分为预设数量的待升级镜像块,根据待升级镜像块与原始镜像块的差异确定需要升级的目标原始镜像块,并由对应的目标待升级镜像块对目标原始镜像块进行刷新升级,同时更新升级标志位,实现了BIOS固件的更新升级。
在上述实施例的基础上,在一些实施例中,根据各原始镜像块与各待升级镜像块之间的差异,确定需要升级的目标原始镜像块及其对应的目标待升级镜像块,包括:
S128:根据各原始镜像块的偏移量与各待升级镜像块的偏移量,将各原始镜像块与各待升级镜像块一一对应;
S129:分别判断各组原始镜像块与待升级镜像块二者的文件内容是否存在差异;若是,则确认原始镜像块需要升级;若否,则确认原始镜像块不需要升级。
在具体实施中,为了确定需要升级的目标原始镜像块及其对应的目标待升级镜像块,具体先获取各原始镜像块的偏移量与各待升级镜像块的偏移量。由于对应的镜像块之间的偏移量相等,因此能够根据各原始镜像块的偏移量与各待升级镜像块的偏移量,将各原始镜像块与各待升级镜像块一一对应。
在将各原始镜像块与各待升级镜像块一一对应,得到多组原始镜像块与待升级镜像块之后,分别判断各组原始镜像块与待升级镜像块二者的文件内容是否存在差异。若确认原始镜像块与待升级镜像块二者的文件内容存在差异,则确认该原始镜像块需要升级;若确认原始镜像块与待升级镜像块二者的文件内容不存在差异,则确认该原始镜像块不需要升级。
在此基础上,在确认原始镜像块不需要升级之后,还可进一步获取不需要升级的原始镜像块对应的第二分区中的镜像信息综合文件,以得到免升级镜像信息综合文件;将免升级镜像信息综合文件中的升级标志位更新为已升级,从而表示该原始镜像块无需升级。
本实施例中,根据偏移量将各原始镜像块与各待升级镜像块一一对应;分别判断各组原始镜像块与待升级镜像块二者的文件内容是否存在差异;若是,则确认原始镜像块需要升级,否则不需要升级;实现了只对存在差异的原始镜像块的升级,极大地提高了BIOS固件的升级效率,减小了断电窗口的影响。
在上述实施例的基础上,在一些实施例中,根据镜像信息综合文件中的升级标志位判断基本输入输出系统固件是否升级完成,包括:
S131:通过基板管理控制器遍历第二分区中的各镜像信息综合文件;
S132:判断各镜像信息综合文件中的升级标志位是否均表征已升级;若是,则进入步骤S133;若否,则进入步骤S134;
S133:确认基本输入输出系统固件升级完成;
S134:确认受断电影响,基本输入输出系统固件未升级完成,进入步骤S14。
在具体实施中,本方案可具体应用于服务器。在断电重新上电后,可通过基板管理控制器(Baseboard Management Controller,BMC)遍历第二分区中的各镜像信息综合文件,即遍历/dev/mtdN至/dev/mtd2N中的镜像信息综合文件。判断各镜像信息综合文件中的升级标志位是否均表征已升级。
可以理解的是,对于需要升级的原始镜像块,在完成升级后其对应的升级标志位会被更新为已升级;对于不需要升级的原始镜像块,其对应的升级标志位会被直接更新为已升级。因此当完成BIOS固件升级时,各镜像信息综合文件中的升级标志位应均表征为已升级,否则认为BIOS固件升级未完成。具体地,当各镜像信息综合文件中的升级标志位均表征已升级,则确认BIOS固件升级完成;当各镜像信息综合文件中的升级标志位未均表征已升级,则确认受断电影响,BIOS固件未升级完成,需要对受影响的待升级镜像块进行替换。
本实施例中,根据镜像信息综合文件中的升级标志位实现了对BIOS固件是否升级完成的判断,以便于当确认未升级完成时,对受断电影响的待升级镜像块进行替换。
在上述实施例的基础上,在一些实施例中,根据镜像信息综合文件中的原始镜像文件对第一分区中的待升级镜像文件进行刷新替换,包括:
S141:确定表征未升级的升级标志位所属的镜像信息综合文件,以确定备份镜像信息综合文件;
S142:解析出备份镜像信息综合文件中的备份原始镜像块;
S143:将备份原始镜像块刷写至第一分区对应的子分区中,以对异常的待升级镜像块进行替换。
可以理解的是,升级标志位表征为未升级,原因是待升级镜像块在对第一分区中对应的原始镜像块进行刷写时发生断电,导致刷写未完成,进而导致升级标志位未更新。由于待升级镜像块未刷写完成,因此会影响镜像文件的一致性和完整性。
为了避免断电影响镜像文件的一致性和完整性,本实施例中具体确定表征未升级的升级标志位所属的镜像信息综合文件,以确定备份镜像信息综合文件。解析出备份镜像信息综合文件中的备份原始镜像块,将备份原始镜像块刷写至第一分区对应的子分区中,以对刷写异常的待升级镜像块进行替换,保证了镜像文件的一致性和完整性。
本实施例中,确定表征未升级的升级标志位所属的备份镜像信息综合文件,并解析出其中的备份原始镜像块;将备份原始镜像块刷写至第一分区对应的子分区中,以对异常的待升级镜像块进行替换,保证了镜像文件的一致性和完整性。
在上述实施例的基础上,在一些实施例中,解析出备份镜像信息综合文件中的备份原始镜像块,包括:
S144:计算备份原始镜像块的校验值;
S145:判断备份原始镜像块的校验值与备份镜像信息综合文件中的校验值是否相同;若是,则进入步骤S146;若否,则进入步骤S147;
S146:确认备份原始镜像块解析成功;
S147:确认备份原始镜像块解析失败。
为了确保解析出正确的备份原始镜像块,在具体实施中,在解析备份镜像信息综合文件中的备份原始镜像块时,需要计算备份原始镜像块的校验值,判断备份原始镜像块的校验值与备份镜像信息综合文件中的校验值是否相同。需要说明的是,这里对备份原始镜像块的校验值计算方式应与备份镜像信息综合文件中的校验值的计算方式相同,从而保证二者的可比性。
若确认备份原始镜像块的校验值与备份镜像信息综合文件中的校验值相同,则确认备份原始镜像块解析成功,解析出的备份原始镜像块是正确的。若确认备份原始镜像块的校验值与备份镜像信息综合文件中的校验值不相同,则确认备份原始镜像块解析失败,解析出的备份原始镜像块是错误的,需要重新进行解析。
本实施例中,通过计算备份原始镜像块的校验值,并对备份原始镜像块的校验值与备份镜像信息综合文件中的校验值是否相同进行判断,保证了备份原始镜像块解析的正确性。
在上述实施例的基础上,在一些实施例中,在确认基本输入输出系统固件升级完成之后,还包括:
S15:触发中央处理器侧系统重启进程;
S16:通过基板管理控制器生成基本输入输出系统固件升级日志;
S17:清除第二分区中的镜像信息综合文件。
在完成了BIOS固件升级,且确保镜像文件的一致性和完整性之后,触发中央处理器(Central Processing Unit,CPU)侧系统重启进程,实现了系统的正常启动。同时,为了使用户了解BIOS固件升级的整个过程,通过BMC生成BIOS固件升级日志。
具体地,日志中可包含多个方面的信息。首先,日志会记录升级的开始和结束时间,这有助于了解整个升级过程的持续时间。其次,日志会列出升级前后的BIOS固件版本号,以便验证升级是否成功,并确认是否升级到了预期的版本。此外,日志还会描述升级过程中的关键步骤和状态,例如固件的下载、验证、擦除和写入等,以及每个步骤的执行结果,包括成功或失败。如果在升级过程中出现了任何错误,日志会提供错误代码、错误描述和可能的解决方案,以帮助进行故障排查和解决。最后,日志还会记录升级时系统的配置信息,如CPU型号、内存大小和硬盘类型等,这对于排查与硬件相关的升级问题非常有用。
通过分析BIOS固件升级日志,可以进行多方面的操作。首先,可以验证升级的结果,确保升级成功并符合预期。其次,如果升级失败或出现错误,可以通过日志中的错误信息和系统信息来定位问题的原因,并采取相应的解决措施。此外,还可以评估升级对系统性能的影响,并根据日志中的信息来优化升级策略,以提高效率。最后,还可以根据日志中的信息来检查升级过程是否符合安全策略和合规要求,例如是否使用了经过验证的固件版本等。由此上述内容可知,BIOS固件升级日志提供了关于升级过程的详细信息,对于验证结果、故障排查、性能评估和合规性检查等方面具有重要作用。
最后,为了节省FLASH芯片的存储空间,在完成升级后清除第二分区中的镜像信息综合文件,释放存储空间。
在上述实施例中,对于基本输入输出系统固件升级方法进行了详细描述,本发明还提供基本输入输出系统固件升级装置对应的实施例。
图2为本发明实施例提供的一种基本输入输出系统固件升级装置的示意图。如图2所示,装置包括:
拆分模块10,用于将闪存芯片拆分为多个内存技术设备分区;其中,内存技术设备分区包含存储有基本输入输出系统固件的原始镜像文件的第一分区和空闲的第二分区。
生成模块11,用于生成镜像信息综合文件并存入空闲的第二分区中;其中,镜像信息综合文件中至少包含原始镜像文件及其对应的升级标志位。
升级模块12,用于当升级基本输入输出系统固件时,获取基本输入输出系统固件的待升级镜像文件,根据待升级镜像文件对第一分区中的原始镜像文件进行刷新升级,并在刷新升级完成后更新升级标志位。
判断模块13,当系统断电又重新上电时,根据镜像信息综合文件中的升级标志位判断基本输入输出系统固件是否升级完成;若否,则触发替换模块14。
替换模块14,根据镜像信息综合文件中的原始镜像文件对第一分区中的待升级镜像文件进行刷新替换。
在一些实施例中,拆分模块10,包括:
第一确定子模块,用于确定闪存芯片的空间大小;
第一拆分子模块,用于基于预设分区大小和闪存芯片的空间大小,通过内存技术设备驱动将闪存芯片拆分为多个内存技术设备分区;
参数配置子模块,用于根据设备树或配置平台文件定义各内存技术设备分区的参数;其中,参数至少包含内存技术设备分区的起始地址、空间大小和名称。
在一些实施例中,第一拆分子模块,包括:
注册子模块,用于在闪存芯片的驱动程序中注册内存技术设备分区;
调用子模块,用于调用内存技术设备子系统函数创建第一分区和第二分区;
其中,第一分区和第二分区的大小相等,且第一分区和第二分区均包含预设数量的子分区;基本输入输出系统固件的原始镜像文件以预设数量的原始镜像块的形式分别存储于第一分区的各子分区中。
在一些实施例中,生成模块11,包括:
读取子模块,用于将第一分区中的各原始镜像块读取至文件系统中;
第一计算子模块,用于基于文件系统,计算各原始镜像块的校验值和文件大小信息;
第一设置子模块,用于设置各原始镜像块对应的升级标志位;其中,升级标志位的初始值表征未升级;
第一生成子模块,用于根据各校验值、各文件大小信息、各升级标志位和各原始镜像块,分别生成各原始镜像块对应的镜像信息综合文件;
第一存储子模块,用于将各镜像信息综合文件分别存入第二分区的各子分区中。
在一些实施例中,升级模块12,包括:
第一获取子模块,用于获取加密后的基本输入输出系统固件的待升级镜像文件;
解密子模块,用于对待升级镜像文件进行解密;
格式转换子模块,用于将解密后的待升级镜像文件转换为预设格式。
在一些实施例中,升级模块12,包括:
切分子模块,用于将待升级镜像文件切分为预设数量的待升级镜像块;
第二确定子模块,用于根据各原始镜像块与各待升级镜像块之间的差异,确定需要升级的目标原始镜像块及其对应的目标待升级镜像块;
第三确定子模块,用于确定目标原始镜像块所在的第一分区的目标子分区,并将对应的目标待升级镜像块刷写至目标子分区中;
第四确定子模块,用于确定目标原始镜像块对应的第二分区中的目标镜像信息综合文件,并将目标镜像信息综合文件中的升级标志位更新为已升级。
在一些实施例中,第二确定子模块,包括:
对应子模块,用于根据各原始镜像块的偏移量与各待升级镜像块的偏移量,将各原始镜像块与各待升级镜像块一一对应;
第一判断子模块,用于分别判断各组原始镜像块与待升级镜像块二者的文件内容是否存在差异;若是,则确认原始镜像块需要升级;若否,则确认原始镜像块不需要升级。
在一些实施例中,还包括:
第二获取子模块,用于获取不需要升级的原始镜像块对应的第二分区中的镜像信息综合文件,以得到免升级镜像信息综合文件;
更新子模块,用于将免升级镜像信息综合文件中的升级标志位更新为已升级。
在一些实施例中,判断模块13,包括:
遍历子模块,用于通过基板管理控制器遍历第二分区中的各镜像信息综合文件;
第二判断子模块,用于判断各镜像信息综合文件中的升级标志位是否均表征已升级;若是,则确认基本输入输出系统固件升级完成;若否,则确认受断电影响,基本输入输出系统固件未升级完成,触发替换模块14。
在一些实施例中,替换模块14,包括:
第五确定子模块,用于确定表征未升级的升级标志位所属的镜像信息综合文件,以确定备份镜像信息综合文件;
解析子模块,用于解析出备份镜像信息综合文件中的备份原始镜像块;
刷写子模块,用于将备份原始镜像块刷写至第一分区对应的子分区中,以对异常的待升级镜像块进行替换。
在一些实施例中,解析子模块,包括:
第二计算子模块,用于计算备份原始镜像块的校验值;
第三判断子模块,用于判断备份原始镜像块的校验值与备份镜像信息综合文件中的校验值是否相同;若是,则确认备份原始镜像块解析成功;若否,则确认备份原始镜像块解析失败。
在一些实施例中,还包括:
重启子模块,用于触发中央处理器侧系统重启进程;
日志生成子模块,用于通过基板管理控制器生成基本输入输出系统固件升级日志;
清除模块,用于清除第二分区中的镜像信息综合文件。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
此外,本发明还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述实施例中基本输入输出系统固件升级方法的步骤。
图3为本发明实施例提供的一种基本输入输出系统固件升级设备的示意图。如图3所示,基本输入输出系统固件升级设备包括:
存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例中所提到的基本输入输出系统固件升级方法的步骤。
本实施例提供的基本输入输出系统固件升级设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU;协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有图形处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的基本输入输出系统固件升级方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于基本输入输出系统固件升级方法涉及到的数据。
在一些实施例中,基本输入输出系统固件升级设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图3中示出的结构并不构成对基本输入输出系统固件升级设备的限定,可以包括比图示更多或更少的组件。
最后,本发明还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本发明所提供的一种基本输入输出系统固件升级方法、产品、设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种基本输入输出系统固件升级方法,其特征在于,包括:
将闪存芯片拆分为多个内存技术设备分区;其中,所述内存技术设备分区包含存储有基本输入输出系统固件的原始镜像文件的第一分区和空闲的第二分区;
生成镜像信息综合文件并存入空闲的所述第二分区中;其中,所述镜像信息综合文件中至少包含所述原始镜像文件及其对应的升级标志位;
当升级基本输入输出系统固件时,获取基本输入输出系统固件的待升级镜像文件,根据所述待升级镜像文件对所述第一分区中的所述原始镜像文件进行刷新升级,并在刷新升级完成后更新所述升级标志位;
当系统断电又重新上电时,根据所述镜像信息综合文件中的所述升级标志位判断基本输入输出系统固件是否升级完成;
若否,则根据所述镜像信息综合文件中的所述原始镜像文件对所述第一分区中的所述待升级镜像文件进行刷新替换;
所述将闪存芯片拆分为多个内存技术设备分区,包括:
确定所述闪存芯片的空间大小;
基于预设分区大小和所述闪存芯片的空间大小,通过内存技术设备驱动将所述闪存芯片拆分为多个所述内存技术设备分区;
根据设备树或配置平台文件定义各所述内存技术设备分区的参数;其中,所述参数至少包含所述内存技术设备分区的起始地址、空间大小和名称;
所述通过内存技术设备驱动将所述闪存芯片拆分为多个所述内存技术设备分区,包括:
在所述闪存芯片的驱动程序中注册所述内存技术设备分区;
调用内存技术设备子系统函数创建所述第一分区和所述第二分区;
其中,所述第一分区和所述第二分区的大小相等,且所述第一分区和所述第二分区均包含预设数量的子分区;基本输入输出系统固件的所述原始镜像文件以预设数量的原始镜像块的形式分别存储于所述第一分区的各子分区中;
所述生成镜像信息综合文件并存入空闲的所述第二分区中,包括:
将所述第一分区中的各所述原始镜像块读取至文件系统中;
基于所述文件系统,计算各所述原始镜像块的校验值和文件大小信息;
设置各所述原始镜像块对应的所述升级标志位;其中,所述升级标志位的初始值表征未升级;
根据各所述校验值、各所述文件大小信息、各所述升级标志位和各所述原始镜像块,分别生成各所述原始镜像块对应的所述镜像信息综合文件;
将各所述镜像信息综合文件分别存入所述第二分区的各子分区中;
所述根据所述待升级镜像文件对所述第一分区中的所述原始镜像文件进行刷新升级,并在刷新升级完成后更新所述升级标志位,包括:
将所述待升级镜像文件切分为预设数量的待升级镜像块;
根据各所述原始镜像块与各所述待升级镜像块之间的差异,确定需要升级的目标原始镜像块及其对应的目标待升级镜像块;
确定所述目标原始镜像块所在的所述第一分区的目标子分区,并将对应的所述目标待升级镜像块刷写至所述目标子分区中;
确定所述目标原始镜像块对应的所述第二分区中的目标镜像信息综合文件,并将所述目标镜像信息综合文件中的所述升级标志位更新为已升级;
所述根据各所述原始镜像块与各所述待升级镜像块之间的差异,确定需要升级的目标原始镜像块及其对应的目标待升级镜像块,包括:
根据各所述原始镜像块的偏移量与各所述待升级镜像块的偏移量,将各所述原始镜像块与各所述待升级镜像块一一对应;
分别判断各组所述原始镜像块与所述待升级镜像块二者的文件内容是否存在差异;
若是,则确认所述原始镜像块需要升级;
若否,则确认所述原始镜像块不需要升级;
还包括:
生成基本输入输出系统固件升级日志;其中,基本输入输出系统固件升级日志中包含升级开始时间和结束时间,升级前后的基本输入输出系统固件版本号,升级过程关键步骤、状态以及关键步骤执行结果,错误代码、错误描述和对应的解决方案,还包括系统配置信息;
分析基本输入输出系统固件升级日志,具体当确认升级失败或升级出现错误时,根据错误描述和系统配置信息定位原因,并执行对应的解决方案。
2.根据权利要求1所述的基本输入输出系统固件升级方法,其特征在于,所述获取基本输入输出系统固件的待升级镜像文件,包括:
获取加密后的基本输入输出系统固件的所述待升级镜像文件;
对所述待升级镜像文件进行解密;
将解密后的所述待升级镜像文件转换为预设格式。
3.根据权利要求1所述的基本输入输出系统固件升级方法,其特征在于,在所述确认所述原始镜像块不需要升级之后,还包括:
获取不需要升级的所述原始镜像块对应的所述第二分区中的所述镜像信息综合文件,以得到免升级镜像信息综合文件;
将所述免升级镜像信息综合文件中的所述升级标志位更新为已升级。
4.根据权利要求1所述的基本输入输出系统固件升级方法,其特征在于,所述根据所述镜像信息综合文件中的所述升级标志位判断基本输入输出系统固件是否升级完成,包括:
通过基板管理控制器遍历所述第二分区中的各所述镜像信息综合文件;
判断各所述镜像信息综合文件中的所述升级标志位是否均表征已升级;
若是,则确认基本输入输出系统固件升级完成;
若否,则确认受断电影响,基本输入输出系统固件未升级完成,进入所述根据所述镜像信息综合文件中的所述原始镜像文件对所述第一分区中的所述待升级镜像文件进行刷新替换的步骤。
5.根据权利要求4所述的基本输入输出系统固件升级方法,其特征在于,所述根据所述镜像信息综合文件中的所述原始镜像文件对所述第一分区中的所述待升级镜像文件进行刷新替换,包括:
确定表征未升级的所述升级标志位所属的所述镜像信息综合文件,以确定备份镜像信息综合文件;
解析出所述备份镜像信息综合文件中的备份原始镜像块;
将所述备份原始镜像块刷写至所述第一分区对应的子分区中,以对异常的待升级镜像块进行替换。
6.根据权利要求5所述的基本输入输出系统固件升级方法,其特征在于,所述解析出所述备份镜像信息综合文件中的备份原始镜像块,包括:
计算所述备份原始镜像块的校验值;
判断所述备份原始镜像块的校验值与所述备份镜像信息综合文件中的校验值是否相同;
若是,则确认所述备份原始镜像块解析成功;
若否,则确认所述备份原始镜像块解析失败。
7.根据权利要求4至6任意一项所述的基本输入输出系统固件升级方法,其特征在于,在确认基本输入输出系统固件升级完成之后,还包括:
触发中央处理器侧系统重启进程;
通过基板管理控制器生成基本输入输出系统固件升级日志;
清除所述第二分区中的所述镜像信息综合文件。
8.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至7任一项所述基本输入输出系统固件升级方法的步骤。
9.一种基本输入输出系统固件升级设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的基本输入输出系统固件升级方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的基本输入输出系统固件升级方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202411045155.7A CN118567692B (zh) | 2024-07-31 | 2024-07-31 | 一种基本输入输出系统固件升级方法、产品、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202411045155.7A CN118567692B (zh) | 2024-07-31 | 2024-07-31 | 一种基本输入输出系统固件升级方法、产品、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118567692A CN118567692A (zh) | 2024-08-30 |
CN118567692B true CN118567692B (zh) | 2024-11-19 |
Family
ID=92478311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202411045155.7A Active CN118567692B (zh) | 2024-07-31 | 2024-07-31 | 一种基本输入输出系统固件升级方法、产品、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118567692B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634645A (zh) * | 2018-12-28 | 2019-04-16 | 深圳市有方科技股份有限公司 | 固件升级方法及终端 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106610840A (zh) * | 2015-10-22 | 2017-05-03 | 深圳市中兴微电子技术有限公司 | 一种无线固件升级方法及系统 |
CN107247603A (zh) * | 2017-04-18 | 2017-10-13 | 深圳市广和通无线股份有限公司 | 支持固件自动恢复功能的远程升级方法与系统 |
CN112860291B (zh) * | 2021-02-08 | 2023-05-12 | 杭州涂鸦信息技术有限公司 | 固件升级方法及装置 |
CN117608619A (zh) * | 2023-10-12 | 2024-02-27 | 深圳宝新创信息技术有限公司 | Uefi bios固件的更新方法、更新系统、电子设备及存储介质 |
-
2024
- 2024-07-31 CN CN202411045155.7A patent/CN118567692B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634645A (zh) * | 2018-12-28 | 2019-04-16 | 深圳市有方科技股份有限公司 | 固件升级方法及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN118567692A (zh) | 2024-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7702894B2 (en) | System and method for loading programs from HDD independent of operating system | |
TWI471726B (zh) | 快取資料與元資料之管理 | |
JP4363676B2 (ja) | コンピュータシステム | |
US8245217B2 (en) | Management of software and operating system updates required for the process of creating a virtual machine facsimile of an existing physical or virtual machine | |
US20110145807A1 (en) | Method and device for updating a computer application | |
US10324810B2 (en) | Method and apparatus for redundant array of independent disks with raid metadata and sub-raid metadata stored using different raid algorithms | |
JP5287980B2 (ja) | 情報処理装置,情報処理装置の起動制御方法及び起動プログラム | |
CN110162429B (zh) | 系统修复方法、服务器及存储介质 | |
KR20170040734A (ko) | 업데이트 제어 방법을 갖는 전자 시스템 및 그것의 동작 방법 | |
CN112657196B (zh) | 资源更新方法、装置、计算机设备和可读存储介质 | |
JP5335622B2 (ja) | 設定情報データベースを管理するコンピュータ・プログラム | |
CN114691025A (zh) | 日志记录方法、装置、设备和存储介质 | |
WO2024148863A1 (zh) | 镜像的编译方法、装置、非易失性可读存储介质及电子设备 | |
CN114860745B (zh) | 基于人工智能的数据库扩展方法及相关设备 | |
CN111400128A (zh) | 日志管理方法、装置、计算机设备及存储介质 | |
US20120151005A1 (en) | Image file download method | |
CN118567692B (zh) | 一种基本输入输出系统固件升级方法、产品、设备及介质 | |
CN114153503A (zh) | 一种bios控制方法、装置、介质 | |
CN113268206A (zh) | 一种网络靶场资源热插拔实现方法与系统 | |
CN117215603B (zh) | 域控制器的软件刷写方法、装置、计算机设备和存储介质 | |
US20080201572A1 (en) | Method and system for uniformizing product data embedded in a computer platform | |
CN112596800A (zh) | 一种U-Boot镜像升级校验方法、装置及电子设备 | |
CN116414797A (zh) | 一种系统文件拷贝的方法、装置、设备及介质 | |
CN119105784A (zh) | 设备升级方法、装置、电子设备及存储介质 | |
CN115904513A (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 |