CN117827304A - 设备可执行固件的加载方法、装置、存储介质及电子设备 - Google Patents
设备可执行固件的加载方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN117827304A CN117827304A CN202311601960.9A CN202311601960A CN117827304A CN 117827304 A CN117827304 A CN 117827304A CN 202311601960 A CN202311601960 A CN 202311601960A CN 117827304 A CN117827304 A CN 117827304A
- Authority
- CN
- China
- Prior art keywords
- target
- firmware
- equipment
- data
- executable
- 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
- 238000011068 loading method Methods 0.000 title claims abstract description 52
- 230000015654 memory Effects 0.000 claims abstract description 153
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 68
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000012795 verification Methods 0.000 claims abstract description 23
- 230000006870 function Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 9
- 230000002093 peripheral effect Effects 0.000 claims description 4
- 238000012216 screening Methods 0.000 claims description 2
- 239000002609 medium Substances 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 101100406473 Mus musculus Oprm1 gene Proteins 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 108010028984 3-isopropylmalate dehydratase Proteins 0.000 description 1
- CQIZBIFTOGBKDB-UHFFFAOYSA-N 4-cyclohexyl-1-methyl-3,6-dihydro-2h-pyridine Chemical compound C1N(C)CCC(C2CCCCC2)=C1 CQIZBIFTOGBKDB-UHFFFAOYSA-N 0.000 description 1
- 101100076239 Drosophila melanogaster Mctp gene Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000006163 transport media Substances 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本申请提供一种设备可执行固件的加载方法、装置、存储介质及电子设备,涉及计算机技术领域,该方法包括:在初始化目标设备的情况下,基于目标设备的设备信息从共享内存中获取标头信息与目标设备的设备信息相匹配的目标固件数据,并通过目标固件数据的标头信息中所包含的循环冗余校验值验证目标固件数据中所包含的目标可执行固件的完整性;之后,在目标可执行固件的完整性验证成功的情况下,执行目标固件数据中所包含的目标可执行固件,以完成目标设备的初始化操作。本申请提供的设备可执行固件的加载方法、装置、存储介质及电子设备,用于提高PCIe设备可执行固件的加载速度,降低PCIe设备的初始化所消耗的时间,以减少对操作系统启动速度的影响。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种设备可执行固件的加载方法、装置、存储介质及电子设备。
背景技术
高速串行计算机扩展总线标准可执行固件(PCIe OPROM)是一种位于计算机主板上的固件程序,用于外部设备的引导和初始化。可执行固件(Option Rom,OPROM)是一种存储在外部设备的读取存储器(Read-Only Memory,ROM)芯片中的固件,使用PCIe总线进行通信。
在相关技术中,当电子设备启动时,基本输入输出系统(Basic Input OutputSystem,BIOS)会搜索所有已安装的PCIe插槽,以寻找包含OPROM的PCIe设备。若找到具有OPROM的PCIe设备,计算机BIOS会将控制权传递给OPROM,允许PCIe设备执行一系列初始化操作,之后,再将控制权传递给BIOS,由BIOS继续进行操作系统的启动。
然而,这样的初始化操作所消耗的时间较长,对电子设备的启动时间影响较大。
发明内容
本申请的目的是提供一种设备可执行固件的加载方法、装置、存储介质及电子设备,用于提高PCIe设备可执行固件的加载速度,降低PCIe设备的初始化所消耗的时间,以减少对操作系统启动速度的影响。
本申请提供一种设备可执行固件的加载方法,包括:
在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性;在所述目标可执行固件的完整性验证成功的情况下,执行所述目标固件数据中所包含的所述目标可执行固件,以完成所述目标设备的初始化操作;其中,所述目标设备为所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备;所述共享内存为基板管理芯片BMC内存中设置的内存空间;所述固件数据包括:标头信息,可执行固件;所述固件数据中的标头信息包括:厂商标识,设备标识,循环冗余校验值。
可选地,所述基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性,包括:获取所述目标设备的目标设备信息;所述目标设备信息包括:所述目标设备的厂商标识,所述目标设备的设备标识;基于所述目标设备信息,从所述共享内存中存储的至少一个固件数据中筛选出标头信息与所述目标设备信息相匹配的所述目标固件数据;计算所述目标固件数据中所述目标可执行固件的第一循环冗余校验值,并将所述第一循环冗余校验值与所述目标固件数据的标头信息中的第二循环冗余校验值进行比较,并生成校验值比较结果;其中,所述校验值比较结果用于对所述目标可执行固件的完整性进行验证。
可选地,所述执行所述目标固件数据中所包含的所述目标可执行固件之前,所述方法还包括:在所述第一循环冗余校验值与所述第二循环冗余校验值相同的情况下,确定所述目标可执行固件的完整性验证成功。
可选地,所述执行所述目标固件数据中所包含的所述目标可执行固件,包括:控制当前操作的数据指针从当前指向的原始地址移动至所述共享内存中存储所述目标可执行固件的数据块的起始地址;执行所述目标可执行固件的执行函数,并在所述执行函数执行完毕后,控制所述数据指针指向所述原始地址,以完成对所述目标设备的初始化操作。
可选地,所述基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据之前,所述方法还包括:开启增强型串行外设接口ESPI的地址空间映射,并初始化内存映射BMC接口协议,建立所述中央处理器与BMC内存的目标数据通道;其中,所述电子设备通过所述目标数据通道从所述共享内存中获取所述目标固件数据;所述目标数据通道为ESPI通道。
可选地,所述基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据之前,所述方法还包括:在所述电子设备上设置的PCIe设备的设备信息受所述目标设备的影响出现变更的情况下,从所述目标设备上获取所述目标可执行固件、所述目标设备的厂商标识以及所述目标设备的设备标识,并将所述目标可执行固件存储到运行内存中;计算所述目标可执行固件对应的循环冗余校验值,并基于所述目标可执行固件对应的循环冗余校验值、所述目标设备的厂商标识以及所述目标设备的设备标识,生成待处理标头信息;将所述待处理标头信息以及所述目标可执行固件进行数据组合,生成所述目标固件数据;将所述目标固件数据从所述运行内存通过所述目标数据通道复制到所述共享内存中。
可选地,在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,包括:在初始化所述目标设备、且所述电子设备上设置的PCIe设备的设备信息未变更的情况下,基于所述目标设备的设备信息,通过所述目标数据通道从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据。
本申请还提供一种设备可执行固件的加载装置,包括:
获取模块,用于在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性;执行模块,用于在所述目标可执行固件的完整性验证成功的情况下,执行所述目标固件数据中所包含的所述目标可执行固件,以完成所述目标设备的初始化操作;其中,所述目标设备为所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备;所述共享内存为基板管理芯片BMC内存中设置的内存空间;所述固件数据包括:标头信息,可执行固件;所述固件数据中的标头信息包括:厂商标识,设备标识,循环冗余校验值。
可选地,所述装置还包括:计算模块;所述获取模块,具体用于获取所述目标设备的目标设备信息;所述目标设备信息包括:所述目标设备的厂商标识,所述目标设备的设备标识;所述获取模块,具体还用于基于所述目标设备信息,从所述共享内存中存储的至少一个固件数据中筛选出标头信息与所述目标设备信息相匹配的所述目标固件数据;所述计算模块,用于计算所述目标固件数据中所述目标可执行固件的第一循环冗余校验值,并将所述第一循环冗余校验值与所述目标固件数据的标头信息中的第二循环冗余校验值进行比较,并生成校验值比较结果;其中,所述校验值比较结果用于对所述目标可执行固件的完整性进行验证。
可选地,所述装置还包括:确定模块;所述确定模块,用于在所述第一循环冗余校验值与所述第二循环冗余校验值相同的情况下,确定所述目标可执行固件的完整性验证成功。
可选地,所述执行模块,具体用于控制当前操作的数据指针从当前指向的原始地址移动至所述共享内存中存储所述目标可执行固件的数据块的起始地址;所述执行模块,具体还用于执行所述目标可执行固件的执行函数,并在所述执行函数执行完毕后,控制所述数据指针指向所述原始地址,以完成对所述目标设备的初始化操作。
可选地,所述装置还包括:通道构建模块;所述通道构建模块,用于开启增强型串行外设接口ESPI的地址空间映射,并初始化内存映射BMC接口协议,建立所述中央处理器与BMC内存的目标数据通道;其中,所述电子设备通过所述目标数据通道从所述共享内存中获取所述目标固件数据;所述目标数据通道为ESPI通道。
可选地,所述装置还包括:数据处理模块;所述获取模块,还用于在所述电子设备上设置的PCIe设备的设备信息受所述目标设备的影响出现变更的情况下,从所述目标设备上获取所述目标可执行固件、所述目标设备的厂商标识以及所述目标设备的设备标识,并将所述目标可执行固件存储到运行内存中;所述计算模块,还用于计算所述目标可执行固件对应的循环冗余校验值,并基于所述目标可执行固件对应的循环冗余校验值、所述目标设备的厂商标识以及所述目标设备的设备标识,生成待处理标头信息;所述数据处理模块,用于将所述待处理标头信息以及所述目标可执行固件进行数据组合,生成所述目标固件数据;所述数据处理模块,还用于将所述目标固件数据从所述运行内存通过所述目标数据通道复制到所述共享内存中。
可选地,所述执行模块,具体用于在初始化所述目标设备、且所述电子设备上设置的PCIe设备的设备信息未变更的情况下,基于所述目标设备的设备信息,通过所述目标数据通道从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据。
本申请还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上述任一种所述设备可执行固件的加载方法的步骤。
本申请还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述设备可执行固件的加载方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述设备可执行固件的加载方法的步骤。
本申请提供的设备可执行固件的加载方法、装置、存储介质及电子设备,首先,在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性;之后,在所述目标可执行固件的完整性验证成功的情况下,执行所述目标固件数据中所包含的所述目标可执行固件,以完成所述目标设备的初始化操作;其中,所述目标设备为所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备;所述共享内存为基板管理芯片BMC内存中设置的内存空间;所述固件数据包括:标头信息,可执行固件;所述固件数据中的标头信息包括:厂商标识,设备标识,循环冗余校验值。如此,可以提高PCIe设备可执行固件的加载速度,降低PCIe设备的初始化所消耗的时间,以减少对操作系统启动速度的影响。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的MMBIOver ESPI系统结构示意图;
图2是本申请提供的数据通信层级示意图;
图3是本申请提供的设备可执行固件的加载方法的流程示意图之一;
图4是本申请提供的固件数据的数据结构示意图;
图5是本申请提供的设备可执行固件的加载方法的流程示意图之二;
图6是本申请提供的设备可执行固件的加载装置的结构示意图;
图7是本申请提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
以下针对本申请实施例所涉及的专业术语进行描述:
PCIe OPROM:PCIe设备的可执行固件,是一种位于计算机主板上的固件程序,用于外部设备的引导和初始化。OPROM是一种存储在外部设备的读取存储器芯片中的固件,使用PCI-Express总线进行通信。计算机可以利用PCIe OPROM实现多种功能,其中最常见的是将OPROM用作PCIe设备的引导介质。当计算机启动时,系统BIOS通常会搜索所有已安装的PCIe插槽,以寻找包含OPROM的PCIe设备。一旦找到具有OPROM的PCIe设备,计算机会将控制权传递给OPROM,允许外部设备执行一系列初始化操作。通过PCIe OPROM,外部设备可以向计算机提供额外的功能和驱动程序。常见的应用包括网络接口卡、磁盘阵列(Redundant Arraysof Independent Disks,RAID)控制器和显卡。OPROM可以加载设备所需的驱动程序和操作系统引导加载程序,将设备准备就绪并与操作系统进行通信。总之,PCIe OPROM是一种用于外部设备引导和初始化的固件程序,使得计算机能够利用外部设备提供的功能和驱动程序。
MMBIOver ESPI:如图1所示,为本申请实施例中提供的一种MMBIOver ESPI系统框图,中央处理器CPU可以通过增强型串行外设接口(Enhanced Serial PeripheralInterface,ESPI)直接对基板管理芯片(Baseboard Management Chip,BMC)内存中的数据进行访问。其实现原理如下:首先,Memory-mapped BMC Interface内存映射BMC接口MMBI,作为一种工业规范定义了主机和BMC如何进行通信,BIOS按照MMBI规范和BMC进行数据交互,如图2所示,其数据通信层级总共分4个层级,包括:应用层(包括:操作系统(OperatingSystem,OS)或BIOS等)、传输协议层(包括:智能平台管理接口(Intelligent PlatformManagement Interface,IPMI),或者管理元件传输协议(Management ComponentTransport Protocol,MCTP)等)、信息传输层(包括:MMBI)以及传输媒介层(包括:ESPI内存映射)。BIOS通过MMBI可以直接访问BMC内存,可以直接读取和写入BMC的内存区域。
针对相关技术中存在的PCIe设备的初始化过程所消耗的时间较多,进而导致电子设备的操作系统启动时间较长的技术问题,本申请实施例提供了一种设备可执行固件的加载方法,该方法能够在电子设备上电开机时,若发现PCIe设备有OPROM的,在加载的同时,会将OPROM的内容重新整合,加入厂商标识Vendor ID、设备标识Device ID以及循环冗余校验(CRC)校验值信息,然后整体拷贝到和BMC共享内存区域。当电子设备下次启动时,若扫描到对应PCIe设备,则直接从BMC共享内存读取对应的OPROM并直接运行,从而加快PCIe设备的初始化速度,进而减少电子设备操作系统的启动时长。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的设备可执行固件的加载方法进行详细地说明。
如图3所示,本申请实施例提供的一种设备可执行固件的加载方法,该方法应用于电子设备,该电子设备上设置有高速串行计算机扩展总线标准PCIe设备,该方法可以包括下述步骤301和步骤302:
步骤301、在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性。
其中,所述目标设备为所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备;所述共享内存为基板管理芯片BMC内存中设置的内存空间;所述固件数据包括:标头信息,可执行固件。所述固件数据中的标头信息包括:厂商标识,设备标识,循环冗余校验值。
示例性地,上述目标设备可以为电子设备上设置的多个PCIe设备中的任一个,即电子设备上设置的所有包含OPROM的PCIe设备均可以按照本申请实施例提供的可执行固件加载方法进行设备的初始化。该电子设备上可以设置多个PCIe设备,每个PCIe设备对应的固件数据均可以存储到BMC共享内存中。
需要说明的是,若BMC共享内存中存储有多个PCIe设备的固件数据,则可利用链表将各个固件数据串联起来,但总体数据大小不能超过BMC共享内存区域的大小。若超过了BMC共享内存空间的大小,重新建立的固件数据将会从头覆盖原有的固件数据。
示例性地,如图3所示,每个PCIe设备在BMC共享内存中对应的固件数据均包含有标头信息(Header)以及可执行固件OPROM,其中,标头信息包含了PCIe设备的厂商标识VID和设备标识DID,以及用于校验可执行固件完整性的CRC校验值。
具体地,上述步骤301,可以包括以下步骤301a1至步骤301a3:
步骤301a1、获取所述目标设备的目标设备信息。
其中,所述目标设备信息包括:所述目标设备的厂商标识,所述目标设备的设备标识。
步骤301a2、基于所述目标设备信息,从所述共享内存中存储的至少一个固件数据中筛选出标头信息与所述目标设备信息相匹配的所述目标固件数据。
步骤301a3、计算所述目标固件数据中所述目标可执行固件的第一循环冗余校验值,并将所述第一循环冗余校验值与所述目标固件数据的标头信息中的第二循环冗余校验值进行比较,并生成校验值比较结果。
其中,所述校验值比较结果用于对所述目标可执行固件的完整性进行验证。
示例性地,在初始化目标设备时,首先需要获取目标设备的设备信息,即上述目标设备的厂商标识以及目标设备的设备标识,并基于目标设备的设备信息从BMC共享内存中匹配对应的固件数据,即上述目标固件数据。
示例性地,在获取到目标固件数据之后,还需要进一步对目标固件数据中的目标可执行固件的完整性进行校验。即计算目标可执行固件的第一循环冗余校验值,并将该第一循环冗余校验值与目标固件数据的标头信息中存储的第二循环冗余校验值进行比较,若相同,则表示目标可执行固件是完整的。
可以理解的是,相关技术中,在PCIe设备进行初始化时,从PCIe设备中读取可执行固件OPROM到易失性存储(即电子设备的运行内存)并执行该可执行固件的耗时较长,为了降低该过程的耗时,本申请实施例中,将PCIe设备的可执行固件OPROM直接存储到速度较快的非易失性存储(即BMC共享内存)中,并在PCIe设备初始化时,CPU直接从BMC共享内存读取并执行该PCIe设备的可执行固件,省去了从PCIe设备读取可执行固件到运行内存中的时间。
示例性地,上述步骤301a3之后、步骤302之前,本申请实施例提供的设备可执行固件的加载方法,还可以包括以下步骤301b:
步骤301b、在所述第一循环冗余校验值与所述第二循环冗余校验值相同的情况下,确定所述目标可执行固件的完整性验证成功。
示例性地,根据上述第一循环冗余校验值与第二循环冗余校验值的比较结果,可以确定目标可执行固件是否完整,若是,则可以直接运行该可执行固件;否则,需要按照相关技术中的方法步骤,从目标设备中读取可执行固件到运行内存中,再由CPU来执行,以完成对目标设备的初始化操作。
步骤302、在所述目标可执行固件的完整性验证成功的情况下,执行所述目标固件数据中所包含的所述目标可执行固件,以完成所述目标设备的初始化操作。
示例性地,上述执行目标可执行固件的过程,可以由CPU直接执行,而不需要将共享内存中的目标可执行固件转存到其他非CPU的存储器中。
具体地,上述步骤302,可以包括以下步骤302a1和步骤302a2:
步骤302a1、控制当前操作的数据指针从当前指向的原始地址移动至所述共享内存中存储所述目标可执行固件的数据块的起始地址。
步骤302a2、执行所述目标可执行固件的执行函数,并在所述执行函数执行完毕后,控制所述数据指针指向所述原始地址,以完成对所述目标设备的初始化操作。
示例性地,直接从共享内存中执行目标可执行固件的操作称为Load OPROM操作,该Load OPROM操作将数据指针指向共享内存中存放OPROM的地址。之后,再将该数据指针该OPROM中执行函数的地址,并执行该OPROM中的执行函数,对PCIe设备进行初始化。最后,执行函数执行完之后,控制权返回给BIOS,同时,将数据指针也进行还原。
如此,可以实现PCIe设备的快速初始化,进而减少操作系统的启动时长。
可选地,在本申请实施例中,在首次对PCIe设备进行初始化时,可以将PCIe设备的可执行固件加入标头信息后存储到共享内存中。
示例性地,上述步骤301之前,本申请实施例提供的设备可执行固件的加载方法,还可以包括以下步骤304:
步骤304、开启增强型串行外设接口ESPI的地址空间映射,并初始化内存映射BMC接口协议,建立所述中央处理器与BMC内存的目标数据通道。
其中,所述电子设备通过所述目标数据通道从所述共享内存中获取所述目标固件数据;所述目标数据通道为ESPI通道。
示例性地,电子设备上电之后,BIOS进行MMBI初始化,初始化内容包括开启ESPI地址空间映射,初始化MMBI协议,建立与BMC的MMBIOVER ESPI的通道。上述目标数据通道具体可以为如图1所示的MMBIOVER ESPI通道。
示例性地,在创建上述目标数据通道之后,便可以通过该目标数据通道实现固件数据在共享内存中的读写。
示例性地,上述步骤301之前,本申请实施例提供的设备可执行固件的加载方法,还可以包括以下步骤305至步骤308:
步骤305、在所述电子设备上设置的PCIe设备的设备信息受所述目标设备的影响出现变更的情况下,从所述目标设备上获取所述目标可执行固件、所述目标设备的厂商标识以及所述目标设备的设备标识,并将所述目标可执行固件存储到运行内存中。
步骤306、计算所述目标可执行固件对应的循环冗余校验值,并基于所述目标可执行固件对应的循环冗余校验值、所述目标设备的厂商标识以及所述目标设备的设备标识,生成待处理标头信息。
步骤307、将所述待处理标头信息以及所述目标可执行固件进行数据组合,生成所述目标固件数据.
步骤308、将所述目标固件数据从所述运行内存通过所述目标数据通道复制到所述共享内存中。
示例性地,当目标设备首次安装到该电子设备上并上电开机时,电子设备在检测到PCIe设备的设备信息出现变更的情况下,会从目标设备中读取可执行固件到运行内存中,并执行该可执行固件以完成对目标设备的初始化操作。同时,为了下次上电开机时加快目标设备的初始化速度,还需要将运行内存中的目标可执行固件进行数据组合后转存到BMC共享内存中。
需要说明的是,本申请实施例中的运行内存与共享内存为不同的内存,本申请实施例中的内存为易失性内存,而共享内存为非易失性内存。
可以理解的是,当BMC接收到PCIe设备的OPROM之后,会存储到共享内存中,即使电子被断电关机,BMC依然是活动Active状态,共享内存中存储的OPROM不会丢失。当电子设备下次上电开机是,就可以直接从BMC共享内存中读取OPROM。
具体地,基于上述步骤304中创建的目标数据通道,上述步骤301,还可以包括以下步骤301c:
步骤301c、在初始化所述目标设备、且所述电子设备上设置的PCIe设备的设备信息未变更的情况下,基于所述目标设备的设备信息,通过所述目标数据通道从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据。
示例性地,当电子设备上设置的PCIe设备的设备信息未变更时,表示该电子设备上的PCIe设备的可执行固件均已按照上述步骤存储到了BMC共享内存中,可以直接从该共享内存中执行该可执行固件,以提高目标设备的初始化速度。
举例说明,如图4所示,为本申请实施例提供的设备可执行固件的加载方法的完整示意图。BIOS启动之后执行MMBI初始化操作,创建目标数据通道。之后,判断是否为首次开机或者PCIe设备的设备信息是否变更。若是,则执行PCIe设备的初始化操作,判断PCIe设备中是否包含了OPROM,若是,则将PCIe设备中包含的OPROM读取到运行内存中完成对PCIe设备的初始化操作,并基于PCIe设备的相关设备信息和PCIe设备的CRC校验值对PCIe设备的OPROM进行整合,将整合后的数据存储到BMC共享内存中,以便下次开机上电时能够提高PCIe设备的初始化速度。
若不为首次开机或者PCIe设备的设备信息未变更,则扫描前期记录的PCIe设备,并从BMC共享内存中获取PCIe设备的OPROM,同时,由CPU直接执行共享内存中存储的OPROM,以实现PCIe设备的快速初始化。
本申请实施例提供的设备可执行固件的加载方法,首先,在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性;之后,在所述目标可执行固件的完整性验证成功的情况下,执行所述目标固件数据中所包含的所述目标可执行固件,以完成所述目标设备的初始化操作;其中,所述目标设备为所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备;所述共享内存为基板管理芯片BMC内存中设置的内存空间;所述固件数据包括:标头信息,可执行固件;所述固件数据中的标头信息包括:厂商标识,设备标识,循环冗余校验值。如此,可以提高PCIe设备可执行固件的加载速度,降低PCIe设备的初始化所消耗的时间,以减少对操作系统启动速度的影响。
需要说明的是,本申请实施例提供的设备可执行固件的加载方法,执行主体可以为设备可执行固件的加载装置,或者该设备可执行固件的加载装置中的用于执行设备可执行固件的加载方法的控制模块。本申请实施例中以设备可执行固件的加载装置执行设备可执行固件的加载方法为例,说明本申请实施例提供的设备可执行固件的加载装置。
需要说明的是,本申请实施例中,上述各个方法附图所示的。设备可执行固件的加载方法均是以结合本申请实施例中的一个附图为例示例性的说明的。具体实现时,上述各个方法附图所示的设备可执行固件的加载方法还可以结合上述实施例中示意的其它可以结合的任意附图实现,此处不再赘述。
下面对本申请提供的设备可执行固件的加载装置进行描述,下文描述的与上文描述的设备可执行固件的加载方法可相互对应参照。
图6为本申请实施例提供的设备可执行固件的加载装置的结构示意图,如图6所示,具体包括:
获取模块601,用于在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性;执行模块602,用于在所述目标可执行固件的完整性验证成功的情况下,执行所述目标固件数据中所包含的所述目标可执行固件,以完成所述目标设备的初始化操作;其中,所述目标设备为所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备;所述共享内存为基板管理芯片BMC内存中设置的内存空间;所述固件数据包括:标头信息,可执行固件;所述固件数据中的标头信息包括:厂商标识,设备标识,循环冗余校验值。
可选地,所述装置还包括:计算模块;所述获取模块601,具体用于获取所述目标设备的目标设备信息;所述目标设备信息包括:所述目标设备的厂商标识,所述目标设备的设备标识;所述获取模块601,具体还用于基于所述目标设备信息,从所述共享内存中存储的至少一个固件数据中筛选出标头信息与所述目标设备信息相匹配的所述目标固件数据;所述计算模块,用于计算所述目标固件数据中所述目标可执行固件的第一循环冗余校验值,并将所述第一循环冗余校验值与所述目标固件数据的标头信息中的第二循环冗余校验值进行比较,并生成校验值比较结果;其中,所述校验值比较结果用于对所述目标可执行固件的完整性进行验证。
可选地,所述装置还包括:确定模块;所述确定模块,用于在所述第一循环冗余校验值与所述第二循环冗余校验值相同的情况下,确定所述目标可执行固件的完整性验证成功。
可选地,所述执行模块602,具体用于控制当前操作的数据指针从当前指向的原始地址移动至所述共享内存中存储所述目标可执行固件的数据块的起始地址;所述执行模块602,具体还用于执行所述目标可执行固件的执行函数,并在所述执行函数执行完毕后,控制所述数据指针指向所述原始地址,以完成对所述目标设备的初始化操作。
可选地,所述装置还包括:通道构建模块;所述通道构建模块,用于开启增强型串行外设接口ESPI的地址空间映射,并初始化内存映射BMC接口协议,建立所述中央处理器与BMC内存的目标数据通道;其中,所述电子设备通过所述目标数据通道从所述共享内存中获取所述目标固件数据;所述目标数据通道为ESPI通道。
可选地,所述装置还包括:数据处理模块;所述获取模块601,还用于在所述电子设备上设置的PCIe设备的设备信息受所述目标设备的影响出现变更的情况下,从所述目标设备上获取所述目标可执行固件、所述目标设备的厂商标识以及所述目标设备的设备标识,并将所述目标可执行固件存储到运行内存中;所述计算模块,还用于计算所述目标可执行固件对应的循环冗余校验值,并基于所述目标可执行固件对应的循环冗余校验值、所述目标设备的厂商标识以及所述目标设备的设备标识,生成待处理标头信息;所述数据处理模块,用于将所述待处理标头信息以及所述目标可执行固件进行数据组合,生成所述目标固件数据;所述数据处理模块,还用于将所述目标固件数据从所述运行内存通过所述目标数据通道复制到所述共享内存中。
可选地,所述执行模块602,具体用于在初始化所述目标设备、且所述电子设备上设置的PCIe设备的设备信息未变更的情况下,基于所述目标设备的设备信息,通过所述目标数据通道从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据。
本申请提供的设备可执行固件的加载装置,首先,在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性;之后,在所述目标可执行固件的完整性验证成功的情况下,执行所述目标固件数据中所包含的所述目标可执行固件,以完成所述目标设备的初始化操作;其中,所述目标设备为所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备;所述共享内存为基板管理芯片BMC内存中设置的内存空间;所述固件数据包括:标头信息,可执行固件;所述固件数据中的标头信息包括:厂商标识,设备标识,循环冗余校验值。如此,可以提高PCIe设备可执行固件的加载速度,降低PCIe设备的初始化所消耗的时间,以减少对操作系统启动速度的影响。
图7示例了一种电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行设备可执行固件的加载方法,该方法包括:在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性;在所述目标可执行固件的完整性验证成功的情况下,执行所述目标固件数据中所包含的所述目标可执行固件,以完成所述目标设备的初始化操作;其中,所述目标设备为所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备;所述共享内存为基板管理芯片BMC内存中设置的内存空间;所述固件数据包括:标头信息,可执行固件;所述固件数据中的标头信息包括:厂商标识,设备标识,循环冗余校验值。
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本申请还提供一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的设备可执行固件的加载方法,该方法包括:在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性;在所述目标可执行固件的完整性验证成功的情况下,执行所述目标固件数据中所包含的所述目标可执行固件,以完成所述目标设备的初始化操作;其中,所述目标设备为所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备;所述共享内存为基板管理芯片BMC内存中设置的内存空间;所述固件数据包括:标头信息,可执行固件;所述固件数据中的标头信息包括:厂商标识,设备标识,循环冗余校验值。
又一方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的设备可执行固件的加载方法,该方法包括:在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性;在所述目标可执行固件的完整性验证成功的情况下,执行所述目标固件数据中所包含的所述目标可执行固件,以完成所述目标设备的初始化操作;其中,所述目标设备为所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备;所述共享内存为基板管理芯片BMC内存中设置的内存空间;所述固件数据包括:标头信息,可执行固件;所述固件数据中的标头信息包括:厂商标识,设备标识,循环冗余校验值。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种设备可执行固件的加载方法,其特征在于,应用于电子设备,所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备,所述方法包括:
在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性;
在所述目标可执行固件的完整性验证成功的情况下,执行所述目标固件数据中所包含的所述目标可执行固件,以完成所述目标设备的初始化操作;
其中,所述目标设备为所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备;所述共享内存为基板管理芯片BMC内存中设置的内存空间;所述固件数据包括:标头信息,可执行固件;所述固件数据中的标头信息包括:厂商标识,设备标识,循环冗余校验值。
2.根据权利要求1所述的方法,其特征在于,所述基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性,包括:
获取所述目标设备的目标设备信息;所述目标设备信息包括:所述目标设备的厂商标识,所述目标设备的设备标识;
基于所述目标设备信息,从所述共享内存中存储的至少一个固件数据中筛选出标头信息与所述目标设备信息相匹配的所述目标固件数据;
计算所述目标固件数据中所述目标可执行固件的第一循环冗余校验值,并将所述第一循环冗余校验值与所述目标固件数据的标头信息中的第二循环冗余校验值进行比较,并生成校验值比较结果;
其中,所述校验值比较结果用于对所述目标可执行固件的完整性进行验证。
3.根据权利要求2所述的方法,其特征在于,所述执行所述目标固件数据中所包含的所述目标可执行固件之前,所述方法还包括:
在所述第一循环冗余校验值与所述第二循环冗余校验值相同的情况下,确定所述目标可执行固件的完整性验证成功。
4.根据权利要求1所述的方法,其特征在于,所述执行所述目标固件数据中所包含的所述目标可执行固件,包括:
控制当前操作的数据指针从当前指向的原始地址移动至所述共享内存中存储所述目标可执行固件的数据块的起始地址;
执行所述目标可执行固件的执行函数,并在所述执行函数执行完毕后,控制所述数据指针指向所述原始地址,以完成对所述目标设备的初始化操作。
5.根据权利要求1所述的方法,其特征在于,所述基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据之前,所述方法还包括:
开启增强型串行外设接口ESPI的地址空间映射,并初始化内存映射BMC接口协议,建立中央处理器与BMC内存的目标数据通道;
其中,所述电子设备通过所述目标数据通道从所述共享内存中获取所述目标固件数据;所述目标数据通道为ESPI通道。
6.根据权利要求5所述的方法,其特征在于,所述基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据之前,所述方法还包括:
在所述电子设备上设置的PCIe设备的设备信息受所述目标设备的影响出现变更的情况下,从所述目标设备上获取所述目标可执行固件、所述目标设备的厂商标识以及所述目标设备的设备标识,并将所述目标可执行固件存储到运行内存中;
计算所述目标可执行固件对应的循环冗余校验值,并基于所述目标可执行固件对应的循环冗余校验值、所述目标设备的厂商标识以及所述目标设备的设备标识,生成待处理标头信息;
将所述待处理标头信息以及所述目标可执行固件进行数据组合,生成所述目标固件数据;
将所述目标固件数据从所述运行内存通过所述目标数据通道复制到所述共享内存中。
7.根据权利要求5或6所述的方法,其特征在于,在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,包括:
在初始化所述目标设备、且所述电子设备上设置的PCIe设备的设备信息未变更的情况下,基于所述目标设备的设备信息,通过所述目标数据通道从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据。
8.一种设备可执行固件的加载装置,其特征在于,应用于电子设备,所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备,所述装置包括:
获取模块,用于在初始化目标设备的情况下,基于所述目标设备的设备信息从共享内存中获取标头信息与所述目标设备的设备信息相匹配的目标固件数据,并通过所述目标固件数据的标头信息中所包含的循环冗余校验值验证所述目标固件数据中所包含的目标可执行固件的完整性;
执行模块,用于在所述目标可执行固件的完整性验证成功的情况下,执行所述目标固件数据中所包含的所述目标可执行固件,以完成所述目标设备的初始化操作;
其中,所述目标设备为所述电子设备上设置有高速串行计算机扩展总线标准PCIe设备;所述共享内存为基板管理芯片BMC内存中设置的内存空间;所述固件数据包括:标头信息,可执行固件;所述固件数据中的标头信息包括:厂商标识,设备标识,循环冗余校验值。
9.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至7中任一项所述设备可执行固件的加载方法的步骤。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述设备可执行固件的加载方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311601960.9A CN117827304A (zh) | 2023-11-28 | 2023-11-28 | 设备可执行固件的加载方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311601960.9A CN117827304A (zh) | 2023-11-28 | 2023-11-28 | 设备可执行固件的加载方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117827304A true CN117827304A (zh) | 2024-04-05 |
Family
ID=90519715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311601960.9A Pending CN117827304A (zh) | 2023-11-28 | 2023-11-28 | 设备可执行固件的加载方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117827304A (zh) |
-
2023
- 2023-11-28 CN CN202311601960.9A patent/CN117827304A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10613773B2 (en) | Backing up firmware during initialization of device | |
CN106990958B (zh) | 一种扩展组件、电子设备及启动方法 | |
EP2596423B1 (en) | Providing platform independent memory logic | |
US8086839B2 (en) | Authentication for resume boot path | |
KR930004902B1 (ko) | 퍼스널 컴퓨터 시스템에서 bios로의 비승인 액세스를 방지하기 위한 장치 및 방법 | |
US7366887B2 (en) | System and method for loading programs from HDD independent of operating system | |
US7500093B2 (en) | Startup program execution method, device, storage medium, and program | |
US7721080B2 (en) | Management of option ROM | |
US11579893B2 (en) | Systems and methods for separate storage and use of system BIOS components | |
US8812828B2 (en) | Methods and apparatuses for recovering usage of trusted platform module | |
US10606677B2 (en) | Method of retrieving debugging data in UEFI and computer system thereof | |
CN109992973B (zh) | 一种利用oprom机制的启动度量方法及装置 | |
US20220237144A1 (en) | Baseboard management controller and construction method thereof | |
US7080164B2 (en) | Peripheral device having a programmable identification configuration register | |
CN113064646A (zh) | 一种bios启动方法、系统及相关装置 | |
CN116627472A (zh) | 高速外围组件设备的固件程序升级方法及服务器 | |
US6971003B1 (en) | Method and apparatus for minimizing option ROM BIOS code | |
US20240176887A1 (en) | Method for Running Startup Program of Electronic Device, and Electronic Device | |
CN117827304A (zh) | 设备可执行固件的加载方法、装置、存储介质及电子设备 | |
CN114510751A (zh) | 一种基于处理器安全核的硬件防替换装置和方法 | |
JP2008276691A (ja) | ハードディスクインターフェースを模擬したインターフェースカード | |
CN113672260A (zh) | 一种处理器cpu初始化方法 | |
CN113094107A (zh) | 数据保护方法、装置、设备及计算机存储介质 | |
CN111176735B (zh) | 一种心电图机启动加速方法 | |
US20060242351A1 (en) | Method and apparatus for loading instructions into high memory |
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 |