CN111930575B - 一种固件获取方法、装置及电子设备 - Google Patents
一种固件获取方法、装置及电子设备 Download PDFInfo
- Publication number
- CN111930575B CN111930575B CN202010628443.0A CN202010628443A CN111930575B CN 111930575 B CN111930575 B CN 111930575B CN 202010628443 A CN202010628443 A CN 202010628443A CN 111930575 B CN111930575 B CN 111930575B
- Authority
- CN
- China
- Prior art keywords
- firmware data
- memory
- firmware
- component
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 230000008569 process Effects 0.000 claims abstract description 22
- 230000002093 peripheral effect Effects 0.000 claims description 5
- 238000013500 data storage Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 20
- 238000007726 management method Methods 0.000 description 12
- 238000012360 testing method Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种固件获取方法、装置及电子设备;方法包括:在上电自检过程中,至少将预先写入电子设备的基本输入输出***的固件数据加载至内存,所述固件数据至少包括所述电子设备的部件的固件数据,以使得目标部件能够通过访问所述内存加载对应的目标固件数据。采用本申请可以省去外挂芯片,节省了设备成本,提高固件数据存储的安全性;还可以提升固件数据获取的效率。
Description
技术领域
本申请涉及计算机技术,尤其涉及一种固件获取方法、装置及电子设备。
背景技术
当前电子设备中很多部件都会外挂自己的固件芯片来保存自身的固件数据,这些外部的固件芯片不仅会增加电子设备的成本,在部件需要获取其对应的固件数据时,需要从对应固件芯片中读取,获取效率低。
发明内容
本申请提出了一种固件获取技术方案。
根据本申请的一方面,提供了一种固件获取方法,包括:
在上电自检过程中,至少将预先写入电子设备的基本输入输出***的固件数据加载至内存,所述固件数据至少包括所述电子设备的部件的固件数据,以使得目标部件能够通过访问所述内存加载对应的目标固件数据。
在一种可能的实现方式中,所述至少将预先写入电子设备的基本输入输出***的固件数据加载至内存,包括:
将预先写入至所述基本输入输出***的串行外设接口存储器的基本输入输出***文件加载至所述内存,所述基本输入输出***文件为至少包括基本输入输出***数据、嵌入式控制器数据、及至少一部件的固件数据经过整合处理的文件。
在一种可能的实现方式中,所述至少将预先写入电子设备的基本输入输出***的固件数据加载至内存,包括:
初始化内存资源,以将所述内存资源中的存储单元全部赋值为0;
至少将预先写入电子设备的基本输入输出***的所述至少一部件的固件数据加载至初始化后的内存资源中。
在一种可能的实现方式中,在将所述固件数据加载至内存的过程中,还包括:
记录所述固件数据对应的部件标识和/或所述固件数据在内存中的存放地址。
在一种可能的实现方式中,记录所述固件数据在内存中的存放地址,包括:
在高级配置和电源管理接口表中设置变量名,通过所述变量名记录所述固件数据在内存中的存放地址;或,
根据确定的内存资源确定存放所述固件数据的起始地址,根据所述起始地址记录所述固件数据在内存中对应的存放地址。
在一种可能的实现方式中,记录所述固件数据对应的部件标识,包括:
根据确定的内存资源确定存放所述固件数据的终止地址,根据所述终止地址记录所述固件数据对应的部件标识;或,
将所述固件数据对应的部件标识记录至指定寄存器。
在一种可能的实现方式中,目标部件通过访问所述内存加载对应的目标固件数据,包括:
目标部件至少通过所述存放地址和/或所述部件标识从内存中加载对应的目标固件数据。
在一种可能的实现方式中,所述目标部件通过访问所述内存加载对应的目标固件数据,包括:
在电子设备运行在基本输入输出***阶段时,所述目标部件能够通过对应的基本输入输出***驱动程序访问所述内存加载对应的目标固件数据;
在电子设备运行在操作***阶段时,所述目标部件能够通过对应的操作***驱动程序访问所述内存加载对应的目标固件数据。
根据本申请的一方面,提供了一种固件获取装置,所述装置包括:
获取模块,用于在上电自检过程中,至少将预先写入电子设备的基本输入输出***的固件数据加载至内存,所述固件数据至少包括所述电子设备的部件的固件数据,以使得目标部件能够通过访问所述内存加载对应的目标固件数据。
根据本申请的一方面,提供了一种固件获取设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
目标部件,通过访问内存加载对应的目标固件数据;
其中,所述处理器被配置为:执行上述任意一项所述的方法。
根据本申请的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现执行上述任意一项所述的方法。
在本申请实施例中,通过将电子设备的部件的固件数据保存在基本输入输出***中,相对于传统技术中将部件的固件数据保存至外挂芯片中,由于省去了外挂芯片,节省了设备成本;并且,由于将电子设备的部件的固件数据保存在基本输入输出***中,基本输入输出***有比较健全的安全机制和recovery(恢复)机制,因此,提高了固件数据存储的安全性;由于在上电自检过程中将固件数据加载至内存,可以供目标部件直接获取对应的目标固件数据,提升了固件数据获取的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请。
根据下面参考附图对示例性实施例的详细说明,本申请的其它特征及方面将变得清楚。
附图说明
图1A为本申请实施例提供的固件获取方法的一个可选的流程示意图;
图1B为本申请实施例提供的一种固件数据获取示意图;
图2A为本申请实施例提供的固件获取方法的一个可选的流程示意图;
图2B为本申请实施例提供的一种固件数据存储示意图;
图3为本申请实施例提供的固件获取方法的一个可选的流程示意图;
图4为本申请实施例提供的固件获取方法的一个可选的流程示意图;
图5为本申请实施例提供的固件获取方法的一个可选的流程示意图;
图6为本申请实施例提供的固件获取方法的一个可选的流程示意图;
图7为本申请实施例提供的固件获取方法的一个可选的流程示意图;
图8为本申请实施例提供的固件获取方法的一个可选的流程示意图;
图9A是本申请实施例提供的固件获取方法的一个可选的流程示意图;
图9B是本申请实施例提供的一种固件数据加载至内存时的示意图;
图10为本申请实施例提供的一个可选的固件获取装置的部分结构示意图;
图11为本申请实施例提供的固件获取设备的部分结构示意图。
具体实施方式
以下将参考附图详细说明本申请的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。
图1A是本申请实施例提供的固件获取方法的一个可选的流程示意图,以该方法应用于电子设备为例,将结合图1A示出的步骤进行说明。
在S101中,在上电自检过程中,至少将预先写入电子设备的基本输入输出***的固件数据加载至内存,所述固件数据至少包括所述电子设备的部件的固件数据。
在本申请的一个实施例中,电子设备的基本输入输出***BIOS是一组固化到计算机内主板上的一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、***设置信息、开机后自检程序和***自启动程序。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。在所述电子设备处于关闭状态,且接收到用户通过触发电子设备的开关电源键或通过遥控器等发出的开机指令后,BIOS启动运行,电子设备进入开机过程,在开机的过程中BIOS担负着初始化硬件,检测硬件功能,以及引导操作***的责任。
电子设备在接通电源后,首先对内部各个设备进行检查,通常完整的POS T(PowerOn Self Test,上电自检)将包括检验和测试计算机的CPU、内存、ROM、主板、存储器、串并口、显示卡、软硬盘子***及键盘等信息。
在本申请的一个实施例中,电子设备的部件的固件数据已经预先写入基本输入输出***中,也就是说,电子设备的部件的固件数据和基本输入输出***自身的数据一起固化保存至电子设备主板上的一个ROM芯片中。其中,电子设备的部件可以包括Lan(LocalArea Network,局域网),SATA(Serial Adv anced Technology Attachment,串行高级技术附件)raid(Redundant Arrays of Independent Disks,磁盘阵列),VGA(Video GraphicsArray,视频图形阵列),SPD(SERIAL PRESENCE DETECT,串行检测),camera(摄像部件)和一些IC(Integrated Circuit,集成电路)芯片,本申请对此不作限定。
在S102中,目标部件能够通过访问所述内存加载对应的目标固件数据。
在本申请的一个实施例中,在目标部件需要使用对应的目标固件数据时,会通过驱动程序在内存中查找该目标部件对应的目标固件数据,并加载该目标固件数据。
需要说明的是,在电子设备接通电源并上电初始化后,固件数据会被加载至内存中,在断开电源之前,该固件数据会一直保存在内存中。
请参阅图1B,其示出了本申请实施例提供的一种固件数据获取示意图,可以看出,本申请实施例中的基本输入输出***预先写入在电子设备中该基本输入输出***对应的存储器中,并且,电子设备中部件的固件数据也写入在基本输入输出***中,在上电自检过程中,先将输入输出***中的固件数据释放至内存中,部件可以在内存中获取对应的固件数据。
在本申请实施例提供的固件获取方法中,通过将电子设备的部件的固件数据保存在基本输入输出***中,可以在将存储基本输入输出***自身的数据至对应的存储器时,同时将电子设备的部件的固件数据一起存储至该存储器,相对于传统技术中将部件的固件数据保存至外挂芯片中,由于省去了外挂芯片,节省了设备成本;并且,由于将电子设备的部件的固件数据保存在基本输入输出***中,基本输入输出***有比较健全的安全机制和recovery(恢复)机制,因此,提高了固件数据存储的安全性;由于在上电自检过程中将固件数据加载至内存,可以供目标部件直接获取对应的目标固件数据,提升了固件数据获取的效率。
图2A是本申请实施例提供的固件获取方法的一个可选的流程示意图,基于图1A,图1A中的步骤S101可以更新为S201,将结合图2A示出的步骤进行说明。
在S201中,在上电自检过程中,将预先写入至所述基本输入输出***的串行外设接口存储器的基本输入输出***文件加载至所述内存,所述基本输入输出***文件为至少包括基本输入输出***数据、嵌入式控制器数据及至少一部件的固件数据经过整合处理的文件。
在本申请的一个实施例中,在生成基本输入输出***文件时,会对基本输入输出***数据、嵌入式控制器数据及至少一部件的固件数据进行整合处理,并生成该基本输入输出***文件,将经过整合处理的基本输入输出***文件烧录/存储至基本输入输出***的串行外设接口存储器中。其中,基本输入输出***的串行外设接口存储器中用来保存基本输入输出***文件数据,基本输入输出***的FV(firmware volume,固件卷),为基本输入输出***文件里的各类型数据的划分,比如SEC(Security,安全)、PEI(Pre-EFIInitialization,E FI初始化)、DXE(Driver Execution Environment,驱动执行环境)、NVRA M(Non-Volatile Random Access Memory,非易失性随机访问存储器)。固件数据会被整合到基本输入输出***文件的某一块区域,即FV中。
在本申请的一个实施例中,该基本输入输出***文件可以包括一个部件的固件数据,也可以包括多个部件的固件数据,本申请对此不作限定。
请参照图2B,其示出了本申请实施例提供的一种固件数据存储示意图,可以看出,本申请实施例中的基本输入输出***文件是包括基本输入输出***数据、嵌入式控制器数据及固件数据的整合文件;该固件数据包括至少一部件的固件数据,并且,该基本输入输出***文件被写入至基本输入输出***的串行外设接口存储器中。
在本申请实施例提供的固件获取方法中,通过将电子设备的部件的固件数据保存在基本输入输出***中,相对于传统技术中将部件的固件数据保存至外挂芯片中,由于省去了外挂芯片,节省了设备成本;并且,由于将电子设备的部件的固件数据保存在基本输入输出***中,基本输入输出***有比较健全的安全机制和recovery(恢复)机制,因此,提高了固件数据存储的安全性。
图3是本申请实施例提供的固件获取方法的一个可选的流程示意图,基于图1A,图1A中的步骤S101可以更新为S301至S302,将结合图3示出的步骤进行说明。
在S301中,初始化内存资源,以将所述内存资源中的存储单元全部赋值为0。
在S302中,至少将预先写入电子设备的基本输入输出***的所述至少一部件的固件数据加载至初始化后的内存资源中。
在本申请的一个实施例中,在上电自检的过程中,需要向***申请新的内存资源以加载该至少一部件的固件数据。向***申请新的内存资源时,内存资源里面的原始值有可能是比较杂乱的,所以需要初始化新申请的内存资源,将新申请的内存资源所包含的存储单元全部赋值为0,以方便后续的调用和存储。
在本申请的一个实施例中,可以申请一块连续的内存区域以加载所有部件的固件数据,还可以对于每一部件的固件数据分别申请对应的内存区域。
图4是本申请实施例提供的固件获取方法的一个可选的流程示意图,基于图1A,图1A中的步骤S101还可以包括S401,将结合图4示出的步骤进行说明。
在S401中,记录所述固件数据对应的部件标识和/或所述固件数据在内存中的存放地址。
在本申请的一个实施例中,电子设备在将预先写入电子设备的基本输入输出***的固件数据加载至内存的过程中,可以只记录所述固件数据对应的部件标识;还可以只记录所述固件数据在内存中的存放地址;还可以同时记录所述固件数据对应的部件标识与所述固件数据在内存中的存放地址。
在本申请实施例提供的固件获取方法中,通过记录所述固件数据对应的部件标识,和/或固件数据在内存中的存放地址,可以方便目标部件在内存中查找对应的目标固件数据,提高固件的获取效率。
图5是本申请实施例提供的固件获取方法的一个可选的流程示意图,基于图4,图4中的步骤S401可以更新为S501,将结合图5示出的步骤进行说明。
在S501中,在高级配置和电源管理接口表中设置变量名,通过所述变量名记录所述固件数据在内存中的存放地址;或根据确定的内存资源确定存放所述固件数据的起始地址,根据所述起始地址记录所述固件数据在内存中对应的存放地址。
在本申请的一个实施例中,在将预先写入电子设备的基本输入输出***的固件数据加载至内存的过程中,可以获取固件数据在内存中的存放地址,并在高级配置和电源管理接口表中设置变量名,通过该变量名记录固件数据在内存中的存放地址。也就是说,固件数据在内存中的存放地址存储于高级配置和电源管理接口表中。
在本申请的一个实施例中,在将预先写入电子设备的基本输入输出***的固件数据加载至内存的过程中,由于基本输入输出***中包括至少一部件的固件数据,因此,在将每一部件的固件数据加载至内存时,每一部件对应的内存地址均不相同,需要再高级配置和电源管理接口表中设置每一部件对应的变量名,并通过每一部件对应的变量名记录每一部件对应的内存地址。
在本申请的一个实施例中,在将预先写入电子设备的基本输入输出***的固件数据加载至内存的过程中,可以申请一块连续的内存区域以加载所有部件的固件数据,因此,可以根据确定的内存资源确定存放所述固件数据的起始地址,根据所述起始地址记录所述固件数据在内存中对应的存放地址。比如第一固件数据是从起始地址00写入,存放地址比如是00~04,第二固件数据的存储地址可以为04~06,以此类推,各个部件对应的存放地址是连续的。
在本申请实施例提供的固件获取方法中,通过变量名记录存放地址和/或通过固件数据的起始地址记录存放地址,可以方便目标部件在内存中通过目标固件数据的存放地址查找对应的目标固件数据,提高固件的获取效率。
图6是本申请实施例提供的固件获取方法的一个可选的流程示意图,基于图4,图4中的步骤S401可以更新为S601,将结合图6示出的步骤进行说明。
在S601中,根据确定的内存资源确定存放所述固件数据的终止地址,根据所述终止地址记录所述固件数据对应的部件标识;或,将所述固件数据对应的部件标识记录至指定寄存器。
在本申请的一个实施例中,将预先写入电子设备的基本输入输出***的固件数据加载至内存的过程中,可以获取申请的内存资源的终止地址,并根据该终止地址记录所述固件数据对应的部件标识。该终止地址用于将部件标识存储至内存中,可选的,可以按照从终止地址向起始地址的顺序,在内存中写入至少一部件的部件标识。
在本申请的一个实施例中,将预先写入电子设备的基本输入输出***的固件数据加载至内存的过程中,可以直接将每一固件数据对应的部件标识记录在指定的寄存器中。其中,部件标识可以为部件的唯一标识码。
在本申请实施例提供的固件获取方法中,通过终止地址记录所述固件数据对应的部件标识,或通过寄存器记录所述固件数据对应的部件标识,可以方便目标部件在内存中通过目标固件数据的部件标识查找对应的目标固件数据,提高固件的获取效率。
图7是本申请实施例提供的固件获取方法的一个可选的流程示意图,基于图4,图4中的步骤S102可以更新为S701,将结合图7示出的步骤进行说明。
在S701中,目标部件至少通过所述存放地址和/或所述部件标识从内存中加载对应的目标固件数据。
在本申请的一个实施例中,目标部件可以先获取所述目标固件数据对应的存放地址和/或部件标识,在访问所述内存时,根据存放地址和/或部件标识查找对应的目标固件数据。
在本申请的一个实施例中,在目标部件通过所述存放地址从内存中加载对应的目标固件数据的情况下,所述目标部件根据目标部件对应的变量名,在高级配置和电源管理接口表中获取存放地址,之后目标部件根据存放地址在内存中查找所述目标固件数据;所述目标部件还可以获取存放所述固件数据的起始地址,并通过该起始地址在内存中查找所述目标固件数据。
在本申请的一个实施例中,在内存中包括多个部件的固件数据时,可以根据每一部件的固件数据的数据量及起始地址,确定每一部件的存放地址。举例来说,若起始地址为00,第一固件数据的数据量为4,则第一固件数据对应的存储地址为00~04,再根据第二固件数据的数据量2,可以知道第二固件数据的存储地址可以为04~06,以此类推。
在本申请的一个实施例中,目标部件通过所述部件标识从内存中加载对应的目标固件数据的情况下,所述目标部件通过获取寄存器中的存储的部件标识,通过该部件标识在内存中查找该目标固件数据;所述目标部件还可以通过部件标识获取固件数据对应的终止地址,查找目标部件对应的部件标识,进而获取对应的目标固件数据。
在本申请的一个实施例中,目标部件通过所述部件标识和所述存放地址从内存中加载对应的目标固件数据的情况下,目标部件根据目标部件对应的变量名,在高级配置和电源管理接口表中获取存放地址,并获取目标部件对应的部件标识,目标部件从该存放地址开始,可以找到固件数据存放的内存区域(申请的内存资源在内存中的区域),该内存区域内被加载了至少一部件的固件数据,所述目标部件根据部件标识,在所述至少一个部件固件数据中查找与所述部件标识匹配的部件固件数据作为所述目标固件数据。其中,目标部件还会根据内存地址及内存资源的范围信息确定边界地址;在目标部件查询至所述边界地址的情况下,停止查找所述目标部件的设备固件。
在本申请实施例提供的固件获取方法中,由于通过所述存放地址和/或所述部件标识从内存中加载对应的目标固件数据,可以提高固件数据获取的准确度,减少固件数据获取错误的情况,进而也提高固件数据获取的效率,提升电子设备的运行效率。
图8是本申请实施例提供的固件获取方法的一个可选的流程示意图,基于图1A及上述实施例,图1A中的步骤S102还可以包括步骤S801、S802,将结合图8示出的步骤进行说明。
在S801中,在电子设备运行在基本输入输出***阶段时,所述目标部件能够通过对应的基本输入输出***驱动程序访问所述内存加载对应的目标固件数据。
在S802中,在电子设备运行在操作***阶段时,所述目标部件能够通过对应的操作***驱动程序访问所述内存加载对应的目标固件数据。
在本申请的一个实施例中,由于在电子设备运行在不同的阶段,目标部件获取目标固件数据的方式也并不相同,因此,目标部件根据电子设备目前所处的阶段,获取该阶段对应的当前驱动程序,通过当前驱动程序访问所述内存加载对应的目标固件数据。
其中,在电子设备运行在基本输入输出***阶段时,目标部件通过基本输入输出***驱动程序访问所述内存加载对应的目标固件数据;在电子设备运行在操作***阶段时,目标部件通过操作***驱动程序访问所述内存加载对应的目标固件数据。
在本申请实施例提供的固件获取方法中,由于根据电子设备当前运行的情况,获取对应的驱动程序,并根据获取的驱动程序访问所述内存加载对应的目标固件数据,可以提高固件数据获取的速度,提高电子设备的运行效率。
图9A是本申请实施例提供的固件获取方法的一个可选的流程示意图,基于图1A及上述实施例,图1A中的步骤S101还可以包括步骤S901,步骤102可以更新为步骤S902至S903,在步骤S903之后还包括步骤S904,将结合图9A示出的步骤进行说明。
在S901中,记录所述固件数据在内存中的起始地址。
在本申请的一个实施例中,所述固件数据包括多个部件对应的固件数据,在将所述固件数据加载至内存的过程中,需要获取所述固件数据在内存中的起始地址,并记录在高级配置和电源管理接口表中。
请参照图9B,其示出了本申请实施例提供的一种固件数据加载至内存时的示意图,可以看出,该内存中已经加载了所述固件数据,即加载了多个部件对应的固件数据,且所述固件数据在内存中有一个起始地址。通过高级配置和电源管理接口表记录该起始地址。
在S902中,目标部件获取起始地址。
在本申请的一个实施例中,若目标部件需要获取对应的目标固件数据时,需要从高级配置和电源管理接口表中查找固件数据在内存中的起始地址。
在S903中,从起始地址开始,目标部件根据部件标识,在内存中查找与部件标识匹配的固件数据作为所述目标固件数据。
在本申请的一个实施例中,目标部件会先获取自身的部件标识(包括部件唯一标识码),之后,从该初始地址开始向下查找与该部件标识匹配的固件数据,直至找到与该部件标识匹配的固件数据。
在S904中,目标部件根据起始地址及所述固件数据的数据量确定固件边界地址;在查询至所述固件边界地址的情况下,停止查找所述目标固件数据。
在本申请的一个实施例中,目标部件在开始查找之后,还会根据起始地址及所述固件数据的数据量确定所述固件数据在内存中的固件边界地址。如图9B所示的固件边界地址。其中,从起始地址到固件边界地址,之间的内存区域为固件数据所在的内存区域,在固件边界地址之后,并不会存在固件数据。因此,在目标部件查询至所述固件边界地址的情况下,停止查找目标固件数据。
在本申请实施例提供的固件获取方法中,通过记录起始地址,在目标部件查找目标固件数据时,根据起始地址及固件数据的数据量,可以得到固件边界地址,以确定查找的截止条件。在目标固件数据未正常加载至内存的情况下及时停止查找,降低了电子设备的运行压力,提高工作效率。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
在传统技术中,当前电脑会有很多device(部件)都会外挂自己的firmware chip(硬件芯片)来保存device firmware(部件固件)。比如某些Lan,SATA raid,VGA,SPD,camera和一些IC芯片等,这些外挂chip(芯片)首先会增加成本,其次更新比较麻烦,另外Secure level(安全等级)也比较低。
针对上述技术问题,本申请提出了一种固件获取方法,包括:
BIOS(基本输入输出***)SPI(串行外设接口)rom(的存储器)在放完BIOS Image(基本输入输出***映像文件)之后一般都会有一些剩余空间,以在BIOS里单独划分一块FVarea(固件卷区域),然后将外部设备的固件数据保存到BIOS的这块固件卷区域,BIOS在Post(上电自检)阶段将这些固件数据统一加载到固定的某一段Memory Address(内存地址),device driver(目标外部部件对应的驱动程序)只需要从这段内存地址开始通过查找自己的标识来加载固件数据。
采用本方案的优势如下:
(1)充分利用BIOS SPI rom空间,省掉一些外挂芯片的成本。
(2)BIOS有比较健全的security(安全)机制来保证外挂数据的安全。(安全机制可以包括secure flash,RPMC,compress等)。
(3)BIOS的recovery机制可以保证外挂部件的固件数据不会丢失。
在一些可能的实施例中,本申请提出的一种固件获取方法,包括:
(1)在Build BIOS image(生成基本输入输出***映像文件)时,将需要整合的外挂固件数据保存在固定的BIOS FV area(基本输入输出***固件卷区域)。
(2)在BIOS post过程中初始化内存变量,然后将外挂固件数据释放到这块内存中。
(3)ACPI table(高级配置和电源管理接口表)中约定一个变量名用来记录BIOSpost过程中加载的memory address(内存地址)。
(4)Device(目标外部部件)可以由BIOS driver(基本输入输出***驱动程序)/OSdriver(操作***驱动程序)通过search signature(查找标识)的方式找到自己对应的FWimage(目标固件数据)。
本申请实施例还提供一种固件获取装置,用于实施上述的固件获取方法。图10为本申请实施例提供的固件获取装置的部分结构示意图。如图10所示,所述固件获取装置包括:获取模块1001;其中:
获取模块1001,用于在上电自检过程中,至少将预先写入电子设备的基本输入输出***的固件数据加载至内存,所述固件数据至少包括所述电子设备的部件的固件数据,以使得目标部件能够通过访问所述内存加载对应的目标固件数据。
在本申请的一个实施例中,所述获取模块1001包括写入子模块1011、初始化子模块1012、记录子模块1013和获取子模块1014。其中:
写入子模块1011,用于将预先写入至所述基本输入输出***的串行外设接口存储器的基本输入输出***文件加载至所述内存,所述基本输入输出***文件为至少包括基本输入输出***数据、嵌入式控制器数据、及至少一部件的固件数据经过整合处理的文件。
初始化子模块1012,用于初始化内存资源,以将所述内存资源中的存储单元全部赋值为0;至少将预先写入电子设备的基本输入输出***的所述至少一部件的固件数据加载至初始化后的内存资源中。
记录子模块1013,用于记录所述固件数据对应的部件标识和/或所述固件数据在内存中的存放地址。
所述记录子模块1013,具体用于在高级配置和电源管理接口表中设置变量名,通过所述变量名记录所述固件数据在内存中的存放地址;或,根据确定的内存资源确定存放所述固件数据的起始地址,根据所述起始地址记录所述固件数据在内存中对应的存放地址。
所述记录子模块1013,还具体用于根据确定的内存资源确定存放所述固件数据的终止地址,根据所述终止地址记录所述固件数据对应的部件标识;或,将所述固件数据对应的部件标识记录至指定寄存器。
获取子模块1014,用于至少通过所述存放地址和/或所述部件标识从内存中加载对应的目标固件数据。
所述获取子模块1014,具体用于在电子设备运行在基本输入输出***阶段时,所述目标部件能够通过对应的基本输入输出***驱动程序访问所述内存加载对应的目标固件数据;在电子设备运行在操作***阶段时,所述目标部件能够通过对应的操作***驱动程序访问所述内存加载对应的目标固件数据。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的固件获取方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台固件获取设备(例如可以是计算机设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
图11为本申请实施例提供的固件获取设备的部分结构示意图。如图11所示,固件获取设备11包括:存储器111、处理器112和目标部件114,存储器111与处理器112通过总线113连接;目标部件114连接于总线113,用于访问内存加载对应的目标固件数据;存储器111,用于存储可执行数据指令;处理器112,用于执行所述存储器中存储的可执行指令时,实现上述的固件获取方法。
本申请实施例还提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现上述方法实施例中的固件获取方法。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以但不限于是电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本申请操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本申请的各个方面。
这里参照根据本申请实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本申请的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本申请的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
Claims (9)
1.一种固件获取方法,包括:
在上电自检过程中,至少将预先写入电子设备的基本输入输出***的固件数据加载至内存,所述固件数据至少包括所述电子设备的部件的固件数据,以使得目标部件能够通过访问所述内存加载对应的目标固件数据;
其中,所述目标部件通过访问所述内存加载对应的目标固件数据,包括以下至少之一:
在电子设备运行在基本输入输出***阶段时,所述目标部件能够通过对应的基本输入输出***驱动程序访问所述内存加载对应的目标固件数据;或,
在电子设备运行在操作***阶段时,所述目标部件能够通过对应的操作***驱动程序访问所述内存加载对应的目标固件数据。
2.根据权利要求1所述的方法,所述至少将预先写入电子设备的基本输入输出***的固件数据加载至内存,包括:
将预先写入至所述基本输入输出***的串行外设接口存储器的基本输入输出***文件加载至所述内存,所述基本输入输出***文件为至少包括基本输入输出***数据、嵌入式控制器数据、及至少一部件的固件数据经过整合处理的文件。
3.根据权利要求1所述的方法,所述至少将预先写入电子设备的基本输入输出***的固件数据加载至内存,包括:
初始化内存资源,以将所述内存资源中的存储单元全部赋值为0;
至少将预先写入电子设备的基本输入输出***的所述至少一部件的固件数据加载至初始化后的内存资源中。
4.根据权利要求1所述的方法,其中,在将所述固件数据加载至内存的过程中,还包括:
记录所述固件数据对应的部件标识和/或所述固件数据在内存中的存放地址。
5.根据权利要求4所述的方法,记录所述固件数据在内存中的存放地址,包括:
在高级配置和电源管理接口表中设置变量名,通过所述变量名记录所述固件数据在内存中的存放地址;或,
根据确定的内存资源确定存放所述固件数据的起始地址,根据所述起始地址记录所述固件数据在内存中对应的存放地址。
6.根据权利要求4所述的方法,记录所述固件数据对应的部件标识,包括:
根据确定的内存资源确定存放所述固件数据的终止地址,根据所述终止地址记录所述固件数据对应的部件标识;或,
将所述固件数据对应的部件标识记录至指定寄存器。
7.根据权利要求4至6任一项所述方法,其中,目标部件通过访问所述内存加载对应的目标固件数据,包括:
目标部件至少通过所述存放地址和/或所述部件标识从内存中加载对应的目标固件数据。
8.一种固件获取装置,包括:
获取模块,用于在上电自检过程中,至少将预先写入电子设备的基本输入输出***的固件数据加载至内存,所述固件数据至少包括所述电子设备的部件的固件数据,以使得目标部件能够通过访问所述内存加载对应的目标固件数据;
所述获取模块,还用于在电子设备运行在基本输入输出***阶段时,所述目标部件能够通过对应的基本输入输出***驱动程序访问所述内存加载对应的目标固件数据;或,在电子设备运行在操作***阶段时,所述目标部件能够通过对应的操作***驱动程序访问所述内存加载对应的目标固件数据。
9.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
目标部件,通过访问内存加载对应的目标固件数据;
其中,所述处理器被配置为:执行权利要求1至6中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010628443.0A CN111930575B (zh) | 2020-07-01 | 2020-07-01 | 一种固件获取方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010628443.0A CN111930575B (zh) | 2020-07-01 | 2020-07-01 | 一种固件获取方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111930575A CN111930575A (zh) | 2020-11-13 |
CN111930575B true CN111930575B (zh) | 2024-06-18 |
Family
ID=73316930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010628443.0A Active CN111930575B (zh) | 2020-07-01 | 2020-07-01 | 一种固件获取方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111930575B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925569A (zh) * | 2021-02-24 | 2021-06-08 | 深圳市信锐网科技术有限公司 | 一种固件数据处理方法、装置、设备及存储介质 |
CN113282442B (zh) * | 2021-07-22 | 2021-11-02 | 翱捷科技(深圳)有限公司 | 芯片量产自动化校准预设固件高速下载的方法及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766057A (zh) * | 2019-01-07 | 2019-05-17 | 成都中电熊猫显示科技有限公司 | 固件数据处理方法及*** |
CN110673898A (zh) * | 2019-09-30 | 2020-01-10 | 联想(北京)有限公司 | 一种设备管理方法、第一设备及交互*** |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7861119B1 (en) * | 2007-12-07 | 2010-12-28 | American Megatrends, Inc. | Updating a firmware image using a firmware debugger application |
US8103830B2 (en) * | 2008-09-30 | 2012-01-24 | Intel Corporation | Disabling cache portions during low voltage operations |
WO2016082196A1 (zh) * | 2014-11-28 | 2016-06-02 | 华为技术有限公司 | 文件访问方法、装置及存储设备 |
CN105630422B (zh) * | 2015-12-28 | 2018-07-24 | 飞天诚信科技股份有限公司 | 一种基于小容量处理器实现多应用的方法及设备 |
JP6583942B1 (ja) * | 2018-09-28 | 2019-10-02 | Necプラットフォームズ株式会社 | Bmc、判定方法及びbmcファームウェア |
-
2020
- 2020-07-01 CN CN202010628443.0A patent/CN111930575B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766057A (zh) * | 2019-01-07 | 2019-05-17 | 成都中电熊猫显示科技有限公司 | 固件数据处理方法及*** |
CN110673898A (zh) * | 2019-09-30 | 2020-01-10 | 联想(北京)有限公司 | 一种设备管理方法、第一设备及交互*** |
Also Published As
Publication number | Publication date |
---|---|
CN111930575A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101421701B (zh) | 用于引导非易失性存储器的方法、设备和*** | |
US9563439B2 (en) | Caching unified extensible firmware interface (UEFI) and/or other firmware instructions in a non-volatile memory of an information handling system (IHS) | |
US8185727B2 (en) | Method of using an information handling system having a boot file, and an information handling system and machine-executable code for carrying out the method | |
CN105739961B (zh) | 一种嵌入式***的启动方法和装置 | |
US20100241815A1 (en) | Hybrid Storage Device | |
CN111930575B (zh) | 一种固件获取方法、装置及电子设备 | |
CN110083399B (zh) | 小程序运行方法、计算机设备及存储介质 | |
US8180930B2 (en) | Information processing device, and device initialization method in the information processing device | |
CN105824678A (zh) | 一种操作***安装方法及装置 | |
CN100461103C (zh) | 驱动程序加载***及方法 | |
US10871970B1 (en) | Memory channel storage device detection | |
US10282190B2 (en) | System and method for updating a UEFI image in an information handling system | |
CN107135462B (zh) | Uefi固件的蓝牙配对方法及其计算*** | |
US11861349B2 (en) | Modular firmware updates in an information handling system | |
US10491736B2 (en) | Computer system and method thereof for bluetooth data sharing between UEFI firmware and OS | |
US10558468B2 (en) | Memory channel storage device initialization | |
US10133654B1 (en) | Firmware debug trace capture | |
US11366800B2 (en) | System and method to automate validating media redirection in testing process | |
US9003172B2 (en) | Intelligently controlling loading of legacy option ROMs in a computing system | |
US10552376B1 (en) | Accessing files stored in a firmware volume from a pre-boot application | |
US9086895B1 (en) | Controlling hardware driver selection | |
CN113950673A (zh) | 非易失性存储分区标识符 | |
US8051329B1 (en) | Method and system for initializing a computing system | |
US11392389B2 (en) | Systems and methods for supporting BIOS accessibility to traditionally nonaddressable read-only memory space | |
US20240143474A1 (en) | System and method for dynamic sensors support in ipmi stack |
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 |