一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种BIOS的更新方法、装置、电子设备、存储介质与流程

2023-02-02 02:03:33 来源:中国专利 TAG:

一种bios的更新方法、装置、电子设备、存储介质
技术领域
1.本发明涉及计算机技术领域,特别是涉及一种bios的更新方法、装置、电子设备、计算机可读存储介质。


背景技术:

2.随着通信技术的发展,各种计算机设备日益完善,功能越来越齐全,x86架构以其优异的性能优势已成为各类计算机设备最常用的cpu(central processing unit,中央处理器),对x86架构来说,bios(basic input output system,基本输入输出系统)必不可少,由于硬件功能的不断完善,bios的功能也越来越多,包括:排除故障、硬件初始化、更新固件、错误上报等一系列功能,而x86架构出于安全角度考虑,对os隐藏了bios flash的spi接口,导致os(operating,system,操作系统)下无法直接更新bios;
3.现有技术中,一般通过外部固件bmc(baseboard management controller,基板管理控制器)或第三方工具对bios进行更新,较为依赖外部工具和环境;在没有bmc的设备,或者os不够成熟的设备中,并不能对bios进行更新。


技术实现要素:

4.鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种bios的更新方法、装置、电子设备和计算机可读存储介质。
5.为了解决上述问题,本发明实施例公开了一种bios的更新方法,应用于终端设备,所述终端设备包括操作系统os、基本输入输出系统bios、中央处理器cpu,所述方法包括:
6.所述os通过预设程序接口获取所述bios的待更新固件镜像数据,并将所述待更新固件镜像数据存储到efi分区中;
7.所述os从所述efi分区中确定所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和,将所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和发送至所述bios,并将所述bios中的固件更新标志位置位;
8.在所述固件更新标志位置位完成后,所述os向所述cpu发送休眠重启信号,所述cpu收到休眠重启信号后退出休眠模式重新启动,同时所述bios判断所述固件更新标志位是否被置位;
9.若确定所述固件更新标志位被置位,则所述bios根据所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和从所述efi中读取到对应的待更新固件镜像数据,将所述对应的待更新固件镜像数据存储到预设的胶囊空间中;
10.在存储完成后,所述bios调用串行接口spi将所述胶囊空间中的待更新固件镜像数据写入所述bios的闪存空间中;
11.在写入所述bios闪存空间后,所述bios进行初始化操作;
12.在初始化完成后,所述bios加载更新完成的固件镜像数据。
13.可选地,所述方法还包括:
14.若确定所述固件更新标志位未被置位,所述cpu启动,同时所述bios进行初始化操作,在初始化完成后加载原始固件镜像数据。
15.可选地,所述将所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和发送至bios,包括:
16.所述os通过所述预设程序接口触发系统管理中断smi;
17.在所述smi触发后,所述os通过所述smi将所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和发送至所述bios,并写入所述bios的非易失性随机访问存储器nvram中。
18.可选地,所述os通过所述预设程序接口触发系统管理中断smi,包括:
19.所述os通过所述预设程序接口调用底层的io接口驱动向所述cpu的oxb2端口地址写入触发系统管理中断的指令;
20.所述cpu接收到所述触发系统管理中断的指令后,触发所述smi。
21.可选地,所述os通过所述smi将所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和发送至所述bios,包括:
22.所述os通过所述预设程序接口调用底层的io接口驱动向所述cpu的oxb3端口地址写入所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和;
23.所述oxb3端口地址将所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和通过所述smi发送至所述bios。
24.可选地,所述若确定所述固件更新标志位被置位的步骤之后,所述方法还包括:
25.所述bios在pei阶段从所述nvram中读取所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和,并存储到交接块hob中;
26.所述bios在dxe阶段,根据所述hob中所述待更新固件镜像数据中镜像数据的个数建立对应个数的胶囊空间,所述胶囊空间用于存储不同的镜像数据。
27.可选地,所述待更新固件镜像数据包括bios镜像数据、me镜像数据、kr镜像数据,所bios根据所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和从所述efi中读取到对应的待更新固件镜像数据,将所述对应的待更新固件镜像数据存储到预设的胶囊空间中,包括:
28.所述bios根据所述hob中的存储地址在所述efi分区中查询到所述待更新固件镜像数据所在的预设区域;
29.所述bios根据所述bios镜像数据、me镜像数据和kr镜像数据的大小、校验和在所述预设区域中读取到所述bios镜像数据、me镜像数据和kr镜像数据;
30.所述bios将所述bios镜像数据、me镜像数据和kr镜像数据分别存入不同的预设胶囊空间中。
31.可选地,所述bios调用串行接口spi将所述胶囊空间中的待更新固件镜像数据写入bios闪存空间中,包括:
32.本发明还公开了一种bios的更新装置,应用于终端设备,所述终端设备包括操作系统os、基本输入输出系统bios、中央处理器cpu,所述装置包括:
33.获取模块,用于所述os通过预设程序接口获取所述bios的待更新固件镜像数据,并将所述待更新固件镜像数据存储到efi分区中;
34.发送模块,用于所述os从所述efi分区中确定所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和,将所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和发送至所述bios,并将所述bios中的固件更新标志位置位;
35.重启模块,用于在所述固件更新标志位置位完成后,所述os向所述cpu发送休眠重启信号,所述cpu收到休眠重启信号后退出休眠模式重新启动,同时所述bios判断所述固件更新标志位是否被置位;
36.存储模块,用于若确定所述固件更新标志位被置位,则所述bios根据所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和从所述efi中读取到对应的待更新固件镜像数据,将所述对应的待更新固件镜像数据存储到预设的胶囊空间中;
37.写入模块,用于在存储完成后,所述bios调用串行接口spi将所述胶囊空间中的待更新固件镜像数据写入所述bios的闪存空间中;
38.初始化模块,用于在写入所述bios闪存空间后,所述bios进行初始化操作;
39.第一加载模块,用于在初始化完成后,所述bios加载更新完成的固件镜像数据。
40.可选地,所述装置还包括:
41.第二加载模块,用于若确定所述固件更新标志位未被置位,所述cpu启动,同时所述bios进行初始化操作,在初始化完成后加载原始固件镜像数据。
42.可选地,所述发送模块包括:
43.触发子模块,用于所述os通过所述预设程序接口触发系统管理中断smi;
44.发送子模块,用于在所述smi触发后,所述os通过所述smi将所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和发送至所述bios,并写入所述bios的非易失性随机访问存储器nvram中。
45.可选地,所述触发子模块,包括:
46.第一写入单元,用于所述os通过所述预设程序接口调用底层的io接口驱动向所述cpu的oxb2端口地址写入触发系统管理中断的指令;
47.触发单元,用于所述cpu接收到所述触发系统管理中断的指令后,触发所述smi。
48.可选地,所述发送子模块,包括:
49.第二写入单元,用于所述os通过所述预设程序接口调用底层的io接口驱动向所述cpu的oxb3端口地址写入所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和;
50.发送单元,用于所述oxb3端口地址将所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和通过所述smi发送至所述bios。
51.可选地,所述装置还包括;
52.读取模块,用于所述bios在pei阶段从所述nvram中读取所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和,并存储到交接块hob中;
53.建立模块,用于所述bios在dxe阶段,根据所述hob中所述待更新固件镜像数据中镜像数据的个数建立对应个数的胶囊空间,所述胶囊空间用于存储不同的镜像数据。
54.可选地,所述待更新固件镜像数据包括bios镜像数据、me镜像数据、kr镜像数据,所述存储模块,包括:
55.查询子模块,用于所述bios根据所述hob中的存储地址在所述efi分区中查询到所
述待更新固件镜像数据所在的预设区域;
56.读取子模块,用于所述bios根据所述bios镜像数据、me镜像数据和kr镜像数据的大小、校验和在所述预设区域中读取到所述bios镜像数据、me镜像数据和kr镜像数据;
57.存入子模块,用于所述bios将所述bios镜像数据、me镜像数据和kr镜像数据分别存入不同的预设胶囊空间中。
58.本发明还公开了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述的bios的更新方法的步骤。
59.本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上述的bios的更新方法的步骤。
60.本发明实施例包括以下优点:
61.本发明通过操系统将获取的待更新数据存储到efi分区中,并将待更新数据的存储地址、大小、校验和发送至bios,使得bios在需要更新时,可以根据待更新数据的存储地址、大小、校验和读取到待更新数据,而不是从外部固件中获取待更新固件镜像数据;通过将bios的固件更新标志位置位,使得bios在重启时可以根据标志位判断是否为固件更新的重启,进而确定bios是直接重启还是更新完固件镜像数据后再重启,而不需要人工控制,降低了生产成本;本发明通过胶囊空间来存储读取到的待更新固件镜像数据,在存储完成后可以将胶囊空间中的待更新固件镜像数据写入bios的闪存空间中,进而完成bios的更新,本发明不依赖外部设备和固件就能够完成bios的更新,增强了更新bios的适用性。
附图说明
62.图1是本发明实施例提供的一种bios的更新方法的步骤流程图;
63.图2是本发明实施例提供的另一种bios的更新方法的步骤流程图;
64.图3是本发明实施例提供的一种bios的更新装置的结构框图。
具体实施方式
65.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
66.目前在各类计算机设备上较为常用的bios更新方式,在服务器,交换机等有bmc固件的设备上,处于固件统一监管更新的角度,因此一般固件更新均由bmc完成,具体方法为bios spi flash链路接给x86 cpu的同时,也会接给bmc的spi接口,需要固件更新时,由bmc直接进行镜像的烧录更新;对于部分没有bmc的设备,一般ibv厂商则会提供一些第三方工具进行更新;因此在一些没有bmc或os不够成熟的设备中,并不能对bios进行更新。
67.基于此,本发明实施例的核心构思之一在于,提供一种bios的更新方法,通过操系统将获取的待更新数据存储到efi分区中,并将待更新数据的存储地址、大小、校验和发送至bios,使得bios在需要更新时,可以根据待更新数据的存储地址、大小、校验和读取到待更新数据,通过胶囊空间来存储读取到的待更新固件镜像数据,在存储完成后可以将胶囊空间中的待更新固件镜像数据写入bios的闪存空间中,进而完成bios的更新,本发明不依赖外部设备和固件就能够完成bios的更新,增强了更新bios的适用性。
68.参照图1,示出了本发明实施例提供的一种bios的更新方法的步骤流程图,应用于终端设备,所述终端设备包括操作系统os(operating system)、基本输入输出系统bios(basic input output system)、中央处理器cpu(central processing unit),所述方法可以包括如下步骤:
69.步骤101,os通过预设程序接口获取bios的待更新固件镜像数据,并将待更新固件镜像数据存储到efi分区中。
70.本发明实施例中,bios是一组固化到计算机内主板上一个rom芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从cmos中读写系统设置的具体信息,其主要功能是为计算机提供最底层的、最直接的硬件设置和控制;
71.终端设备主要由显示适配器、监视器和键盘等设备组成,终端设备平台主要有windows终端、web终端、linux终端,具体是哪一种,在此不做限定。
72.预设程序接口可以是指终端设备的uefi(unified extensible firmware interface,统一的可扩展固件接口),用于定义操作系统与系统固件之间的软件界面,负责加电自检(post)、联系操作系统以及提供连接操作系统与硬件的接口;efi(efi system partition,efi系统分区)分区是数据存储设备上fat 32格式的小分区,用于遵循统一可扩展固件接口的计算机中,当安装windows或mac os的操作系统时,它会自动生成,引导pc时,uefi固件接口会加载存储在esp上的基本文件,以启动已安装的操作系统以及启动计算机所需的各种实用程序,efi系统分区包含引导加载程序,设备驱动程序,系统实用程序以及一些引导windows绝对必要的关键数据文件。
73.在一种示例中,光盘中刻录有bios的待更新固件镜像数据,光盘驱动后,os可以通过uefi接口将待更新固件镜像数据存储到efi分区中,在efi分区中可以确定待更新固件镜像数据的存储位置、数据大小和校验和。
74.步骤102,os从efi分区中确定待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和,将待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和发送至bios,并将bios中的固件更新标志位置位。
75.本发明实施例中,os可以从efi分区中确定待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和,从而bios可以根据存储地址读取到对应的待更新固件镜像数据,可以根据镜像数据大小读取指定的镜像数据,可以根据镜像数据的校验和判断数据传输过程中是否一致,在一种示例中,可以通过md5(message-digest algorithm 5,信息-摘要算法5)来计算校验和,md5的作用可以让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式,从而确定数据传输过程中是否被人为修改或者丢失,确保了数据传输的安全性;
76.固件更新标志位分为未置位和置位,当处于未置位时,说明当前bios不需要被更新,在下次cpu重启时,bios直接加载原始的固件镜像数据,当处于置位时,说明当前bios需要被更新,在下次cpu重启时,bios需要先更新固件镜像数据,再加载更新完成的固件镜像数据,本发明bios可以通过固件更新标志位是否被置位确定重启的方式,以使得bios的固件镜像数据能够被及时更新,避免cpu启动时,bios直接跳过更新待更新的固件镜像数据,而直接初始化,提高了bios更新的效率;
77.os将待更新固件镜像数据发送至bios后,可以将bios的固件更新标志位置位,从而bios在下一次重新启动时,可以根据该固件更新标志位确定bios的启动方式。
78.步骤103,在固件更新标志位置位完成后,os向cpu发送休眠重启信号,cpu收到休眠重启信号后退出休眠模式重新启动,同时bios判断固件更新标志位是否被置位。
79.本发明实施例中,睡眠重启信号指的是终端设备进入短暂的休眠状态然后重启,休眠状态的时间可以根据需求设定,例如s3表示休眠3秒后启动,cpu接收到该信号后,休眠3秒后再次重启唤醒,同时bios会读取固件更新标志位,以确定当前重启的方式为正常状态下的重启还是固件镜像数据更新的重启。
80.步骤104,若确定固件更新标志位被置位,则bios根据待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和从efi中读取到对应的待更新固件镜像数据,将对应的待更新固件镜像数据存储到预设的胶囊空间中。
81.本发明实施例中,预设的胶囊空间指的是用来存储待更新固件镜像数据的数组;bios可以根据传输过来的更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和从efi中读取到完整的待更新固件镜像数据,然后将待更新固件镜像数据存储到胶囊空间中。
82.步骤105,在存储完成后,bios调用串行接口spi将胶囊空间中的待更新固件镜像数据写入bios的闪存空间中。
83.具体地,bios闪存空间用来存储加载的程序,在一种示例中,闪存空间可以是flash闪存,flash闪存是属于内存器件的一种,是一种非易失性(non-volatile)内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘。
84.步骤106,在写入bios闪存空间后,bios进行初始化操作。
85.本发明实施例中,待更新固件镜像数据写完到bios闪存空间后,bios可以向cpu下发全局重启global reset指令,此时cpu可以进行完整的重启,同时bios初始化主板,初始化主板包括创建中断向量、设置寄存器、对一些外部设备进行检测、设置硬件参数等常规工作。
86.步骤107,在初始化完成后,bios加载更新完成的固件镜像数据。
87.本发明实施例中,bios初始化完成后,bios可以加载最新的固件镜像数据,从而完成bios功能的更新。
88.本发明通过操系统将获取的待更新数据存储到efi分区中,并将待更新数据的存储地址、大小、校验和发送至bios,使得bios在需要更新时,可以根据待更新数据的存储地址、大小、校验和读取到待更新数据,而不是从外部固件中获取待更新固件镜像数据;通过将bios的固件更新标志位置位,使得bios在重启时可以根据标志位判断是否为固件更新的重启,进而确定bios是直接重启还是更新完固件镜像数据后再重启,而不需要人工控制,降低了生产成本;本发明通过胶囊空间来存储读取到的待更新固件镜像数据,在存储完成后可以将胶囊空间中的待更新固件镜像数据写入bios的闪存空间中,进而完成bios的更新,本发明不依赖外部设备和固件就能够完成bios的更新,增强了更新bios的适用性。
89.参照图2,示出了本发明实施例提供的另一种bios的更新方法的步骤流程图,应用于终端设备,所述终端设备包括操作系统os、基本输入输出系统bios、中央处理器cpu,所述方法可以包括如下步骤:
90.步骤201,os通过预设程序接口获取bios的待更新固件镜像数据,并将待更新固件镜像数据存储到efi分区中。
91.步骤202,os从efi分区中确定待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和,os通过所述预设程序接口触发系统管理中断smi。
92.在本发明的一种实施例方式中,所述os通过预设程序接口触发系统管理中断smi,包括:
93.os通过预设程序接口调用底层的io接口驱动向cpu的oxb2端口地址写入触发系统管理中断的指令;cpu接收到触发系统管理中断的指令后,触发smi。
94.本发明实施例中,smi(system management interruption,系统管理中断)是由硬件触发,由bios处理的中断,硬件有相应的指令可以触发,触发后cpu将进入smm模式(system management mode系统管理模式),此时os相关执行流程将被挂起,执行bios中注册的isr(interrupt service routine,中断服务程序)。中断是指当cpu正在处理某件事情的时候,外部发生的某一事件(如一个电平的变化,一个脉冲沿的发生或定时器计数溢出等)请求cpu迅速去处理,于是cpu暂时中止当前的工作,转去处理所发生的事件,中断服务处理完该事件以后,再回到原来被中止的地方继续原来的工作;
95.smi触发的方式一般有两种可以实现,一种是通过外界的smi#管脚,就像外部中断一样,这个主要是由外部设备,例如bmc来触发的;另一种是软件可以使用的方法,x86提供了一个port oxb2端口地址,os可以通过预设程序接口调用底层的io接口驱动向cpu的port oxb2端口地址写入0xab,cpu接收到0xab后,触发smi。
96.步骤203,在smi触发后,os通过smi将待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和发送至bios,并写入bios的非易失性随机访问存储器nvram中,将bios中的固件更新标志位置位。
97.本发明实施例中,nvram(non-volatile random access memory,非易失性随机访问存储器)即断电之后,所存储的数据不丢失的随机访问存储器,避免了终端设备断电后数据丢失的情况,nvram里有一个专门移动数据的处理器,会代替cpu把数据移动到nvram里,因此nvram可以被随机访问;
98.smi是os与bios进行通信的一种方式,由于smi中断的优先级最高,smi中断使得计算机系统具备应对处理突发事件的能力,提高了cpu的工作效率,在smi触发后,os可以通过smi将待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和发送至bios,并写入nvram中,同时在smi中将bios存储在nvram中的固件更新标志位置位。
99.在本发明的一种实施例方式中,所述os通过smi将所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和发送至bios,包括:
100.os通过预设程序接口调用底层的io接口驱动向cpu的oxb3端口地址写入待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和;oxb3端口地址将待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和通过smi发送至bios。
101.在具体实现中,os通过uefi接口调用底层的io接口驱动向cpu的oxb3端口地址写入待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和,进而oxb3端口地址向smi传递待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和,由于smi是bios处理的中断,即bios可以通过smi接收各种参数。
102.步骤204,在固件更新标志位置位完成后,os向cpu发送休眠重启信号,cpu收到休眠重启信号后退出休眠模式重新启动,同时bios判断固件更新标志位是否被置位。
103.步骤205,若确定固件更新标志位被置位,bios在pei阶段从nvram中读取所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和,并存储到交接块hob中。
104.本发明实施例中,bios启动过程分为四个阶段:sec阶段、pei阶段、dxe阶段、bds阶段,sec(security phase,安全验证)阶段是平台初始化的第一个阶段,计算机系统加电或重启后进入这个阶段,接受并处理系统启动和重启信号,即cpu接收到的休眠重启信号;
105.pei(pre-efi initialization,预先efi初始化)阶段很多服务还未完全启动,spi接口的驱动也还未准备好,内存到了pei后期才被初始化,其主要功能是为dxe准备执行环境,将需要传递给dxe的信息组成hob(handoff block)列表,最终将控制权交给dxe;
106.dxe(driver execution environment,驱动程序执行环境)阶段执行大部分系统的初始化工作,此阶段内存已经可以被完全使用,因而此阶段可以进行大量的复杂工作,从程序设计的角度来看,dxe阶段与pei阶段类似;
107.bds(boot device select,启动设备选择阶段)阶段顾名思义,主要功能是执行启动策略,bios在这一阶段引导操作系统并将控制权交给操作系统。
108.在本发明的一种实施例方式中,所述方法还包括:
109.若确定固件更新标志位未被置位,cpu启动,同时bios进行初始化操作,在初始化完成后加载原始固件镜像数据。
110.本发明实施例中,cpu接收到休眠重启信号后,开始启动,同时当bios确定固件更新标志位未被置位,则说明此时bios中没有待更新固件镜像数据需要更新,为正常情况下的重启,可以直接进行初始化操作,并在操作完成后加载原始固件镜像数据。
111.步骤206,bios在dxe阶段,根据hob中待更新固件镜像数据中镜像数据的个数建立对应个数的胶囊空间,根据待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和从efi中读取到对应的待更新固件镜像数据,将对应的待更新固件镜像数据存储到预设的胶囊空间中,胶囊空间用于存储不同的镜像数据。
112.本发明实施例中,可以根据hob中镜像数据的个数建立对应个数的胶囊空间,如hob中待更新镜像数据有三个,可以建立三个胶囊空间分别存储不同的待更新数据,本发明通过建立不同的胶囊空间存储不同的待更新固件镜像数据,可以避免bios在更新读取时读取错误。
113.在本发明的一种实施例方式中,所述待更新固件镜像数据包括bios镜像数据、me镜像数据、kr镜像数据,所述bios根据所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和从所述efi中读取到对应的待更新固件镜像数据,将所述对应的待更新固件镜像数据存储到预设的胶囊空间中,包括:
114.bios根据hob中的存储地址在efi分区中查询到待更新固件镜像数据所在的预设区域;bios根据bios镜像数据、me镜像数据和kr镜像数据的大小、校验和在预设区域中读取到bios镜像数据、me镜像数据和kr镜像数据;bios将bios镜像数据、me镜像数据和kr镜像数据分别存入不同的预设胶囊空间中。
115.本发明实施例中,预设区域指的是待更新固件镜像数据存储在efi分区中的区域,bios可以根据存储地址查询到efi分区中待更新固件镜像数据所在的预设区域,然后根据
数据的大小读取到准确的待更新数据,然后将读取到的待更新数据计算校验和,将计算得到的校验和与hob中的校验和进行比对,如果一致则数据传输过程中没有异常,如果不一致,则说明数据在传输过程中发生了改变或者损坏,此时可以停止将待更新数据存入到对应的胶囊空间中;
116.在一种示例中,待更新固件镜像数据包括bios镜像数据、me镜像数据、kr镜像数据,由于hob中储存有多种不同种类的数据,可以先根据各个镜像数据的存储地址查询到所在efi分区中的预设区域,然后根据各个待更新固件镜像数据的大小读取到对应的bios镜像数据、me镜像数据、kr镜像数据,然后根据读取到的bios镜像数据、me镜像数据、kr镜像数据分别计算对应的校验和,与hob中储存的各个数据的校验和进行比对,以保证数据传输的安全性。
117.步骤207,在存储完成后,bios调用串行接口spi将胶囊空间中的待更新固件镜像数据写入bios的闪存空间中。
118.在本发明的一种实施例方式中,所述bios调用串行接口spi将胶囊空间中的待更新固件镜像数据写入bios闪存空间中,包括:
119.bios调用串行接口spi将胶囊空间中的所述bios镜像数据、me镜像数据和kr镜像数据按照存入顺序,写入bios闪存空间中。
120.具体地,当bios镜像数据、me镜像数据和kr镜像数据在胶囊空间中的存入顺序为先存储bios镜像数据,再存储me镜像数据,最后存储kr镜像数据,则写入bios闪存空间中的顺序也为先存储bios镜像数据,再存储me镜像数据,最后存储kr镜像数据,以避免数据写入过程中顺序不一致造成数据混乱。
121.在本发明的一种实施例方式中,所述bios还可以调用串行接口spi将胶囊空间中的任一镜像数据写入bios闪存空间中,以实现单个固件更新。
122.在一示例中,当选择的镜像数据为kr镜像,则所述bios调用串行接口spi将胶囊空间中的kr镜像写入bios闪存空间中,然后进行初始化操作,并在初始化完成后,加载更新完成的kr镜像;当选择的镜像数据为me镜像,则所述bios调用串行接口spi将胶囊空间中的me镜像写入bios闪存空间中,然后进行初始化操作,并在初始化完成后,加载更新完成的me镜像;当选择的镜像数据为bios镜像,则所述bios调用串行接口spi将胶囊空间中的bios镜像写入bios闪存空间中,然后进行初始化操作,并在初始化完成后,加载更新完成的bios镜像;本发明可以根据用户需求更新待更新固件镜像数据中的任一镜像数据,提高了bios更新的针对性,为用户提供了方便,使得用户可以根据自己的需求进行bios的固件更新。
123.步骤208,在写入bios闪存空间后,bios进行初始化操作。
124.步骤209,在初始化完成后,bios加载更新完成的固件镜像数据。
125.本发明通过操系统将获取的待更新数据存储到efi分区中,并将待更新数据的存储地址、大小、校验和发送至bios,使得bios在需要更新时,可以根据待更新数据的存储地址、大小、校验和读取到待更新数据,而不是从外部固件中获取待更新固件镜像数据;通过将bios的固件更新标志位置位,使得bios在重启时可以根据标志位判断是否为固件更新的重启,进而确定bios是直接重启还是更新完固件镜像数据后再重启,而不需要人工控制,降低了生产成本;本发明通过胶囊空间来存储读取到的待更新固件镜像数据,在存储完成后可以将胶囊空间中的待更新固件镜像数据写入bios的闪存空间中,进而完成bios的更新,
本发明不依赖外部设备和固件就能够完成bios的更新,增强了更新bios的适用性。
126.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
127.参照图3,示出了本发明实施例提供的一种bios的更新装置的结构框图,具体可以包括如下模块:
128.获取模块301,用于所述os通过预设程序接口获取所述bios的待更新固件镜像数据,并将所述待更新固件镜像数据存储到efi分区中;
129.发送模块302,用于所述os从所述efi分区中确定所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和,将所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和发送至所述bios,并将所述bios中的固件更新标志位置位;
130.重启模块303,用于在所述固件更新标志位置位完成后,所述os向所述cpu发送休眠重启信号,所述cpu收到休眠重启信号后退出休眠模式重新启动,同时所述bios判断所述固件更新标志位是否被置位;
131.存储模块304,用于若确定所述固件更新标志位被置位,则所述bios根据所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和从所述efi中读取到对应的待更新固件镜像数据,将所述对应的待更新固件镜像数据存储到预设的胶囊空间中;
132.写入模块305,用于在存储完成后,所述bios调用串行接口spi将所述胶囊空间中的待更新固件镜像数据写入所述bios的闪存空间中;
133.初始化模块306,用于在写入所述bios闪存空间后,所述bios进行初始化操作;
134.第一加载模块307,用于在初始化完成后,所述bios加载更新完成的固件镜像数据。
135.在本发明的一种实施例方式中,所述装置还包括:
136.第二加载模块,用于若确定所述固件更新标志位未被置位,所述cpu启动,同时所述bios进行初始化操作,在初始化完成后加载原始固件镜像数据。
137.在本发明的一种实施例方式中,所述发送模块302,包括:
138.触发子模块,用于所述os通过所述预设程序接口触发系统管理中断smi;
139.发送子模块,用于在所述smi触发后,所述os通过所述smi将所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和发送至所述bios,并写入所述bios的非易失性随机访问存储器nvram中。
140.在本发明的一种实施例方式中,所述触发子模块,包括:
141.第一写入单元,用于所述os通过所述预设程序接口调用底层的io接口驱动向所述cpu的oxb2端口地址写入触发系统管理中断的指令;
142.触发单元,用于所述cpu接收到所述触发系统管理中断的指令后,触发所述smi。
143.在本发明的一种实施例方式中,所述发送子模块,包括:
144.第二写入单元,用于所述os通过所述预设程序接口调用底层的io接口驱动向所述cpu的oxb3端口地址写入所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据
的校验和;
145.发送单元,用于所述oxb3端口地址将所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和通过所述smi发送至所述bios。
146.在本发明的一种实施例方式中,所述装置还包括;
147.读取模块,用于所述bios在pei阶段从所述nvram中读取所述待更新固件镜像数据的存储地址、镜像数据的大小、镜像数据的校验和,并存储到交接块hob中;
148.建立模块,用于所述bios在dxe阶段,根据所述hob中所述待更新固件镜像数据中镜像数据的个数建立对应个数的胶囊空间,所述胶囊空间用于存储不同的镜像数据。
149.在本发明的一种实施例方式中,所述待更新固件镜像数据包括bios镜像数据、me镜像数据、kr镜像数据,所述存储模块,包括:
150.查询子模块,用于所述bios根据所述hob中的存储地址在所述efi分区中查询到所述待更新固件镜像数据所在的预设区域;
151.读取子模块,用于所述bios根据所述bios镜像数据、me镜像数据和kr镜像数据的大小、校验和在所述预设区域中读取到所述bios镜像数据、me镜像数据和kr镜像数据;
152.存入子模块,用于所述bios将所述bios镜像数据、me镜像数据和kr镜像数据分别存入不同的预设胶囊空间中。
153.在本发明的一种实施例方式中,所述写入模块305,包括:
154.写入子模块,用于所述bios调用串行接口spi将所述胶囊空间中的所述bios镜像数据、me镜像数据和kr镜像数据按照存入顺序,写入bios闪存空间中。
155.本发明公开了一种bios的更新装置,包括:获取模块,发送模块,重启模块,存储模块,写入模块,初始化模块,第一加载模块;本发明通过操系统将获取的待更新数据存储到efi分区中,使得bios在需要更新时,可以根据待更新数据的存储地址、大小、校验和读取到待更新数据,而不是从外部固件中获取待更新固件镜像数据;通过将bios的固件更新标志位置位,使得bios在重启时可以根据标志位判断是否为固件更新的重启,进而确定bios是直接重启还是更新完固件镜像数据后再重启,而不需要人工控制,降低了生产成本;本发明通过胶囊空间来存储读取到的待更新固件镜像数据,在存储完成后可以将胶囊空间中的待更新固件镜像数据写入bios的闪存空间中,进而完成bios的更新,不依赖外部设备和固件就能够完成bios的更新,增强了更新bios的适用性。
156.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
157.本发明实施例还提供了一种电子设备,包括:
158.包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述bios的更新方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
159.本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述bios的更新方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
160.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
161.本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
162.本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
163.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
164.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
165.尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
166.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
167.以上对本发明所提供的一种bios的更新方法、装置、电子设备、计算机可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献