CN106201608A - 计算机uefi固件更新方法 - Google Patents
计算机uefi固件更新方法 Download PDFInfo
- Publication number
- CN106201608A CN106201608A CN201610522203.6A CN201610522203A CN106201608A CN 106201608 A CN106201608 A CN 106201608A CN 201610522203 A CN201610522203 A CN 201610522203A CN 106201608 A CN106201608 A CN 106201608A
- Authority
- CN
- China
- Prior art keywords
- firmware
- uefi
- update
- content
- region
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种计算机UEFI固件更新方法,包括如下步骤:(1)获取当前UEFI固件内容结构分布信息;(2)比较当前UEFI版本和目标UEFI固件版本信息;(3)备份现有UEFI固件;(4)选择需要更新的区域执行UEFI固件更新;(5)确认是否更新成功。该方法可以选择固件的更新区域,跳过不需要更新的区域,由此避免了对整个固件ROM的更新,减少了更新时间。
Description
技术领域
本发明属于计算机软件系统领域,具体涉及一种UEFI固件更新方法。
背景技术
统一可扩展固件接口(UEFI,Unified Extensible Firmware Interface)是Intel提出的用来取代传统BIOS的新一代固件系统。与传统BIOS相比,UEFI固件具体很多优势,特别是便于第三方的开发,使得UEFI固件发展迅速。一般更新UEFI固件,需要将整个固件ROM一起更新,更新时间长。而且系统环境不同,更新程序也不同,增加了第三方开发者的工作量。
发明内容
发明目的:针对现有技术中存在的问题,本发明公开了一种计算机UEFI固件更新方法,该方法可以选择固件的更新区域,跳过不需要更新的区域,由此避免了对整个固件ROM的更新,减少了更新时间。
技术方案:本发明公开了一种计算机UEFI固件更新方法,包括如下步骤:
(1)获取当前固件内容结构分布信息;
(2)比较当前固件版本和目标固件版本信息;
(3)备份现有固件;
(4)根据步骤(1)获取的固件内容结构分布信息,选择需要更新的区域执行UEFI固件更新;
(5)确认是否更新成功。
上述计算机UEFI固件更新方法,由系统应用和UEFI固件执行,其中系统应用调度计算机固件更新的执行,具体地,步骤(1)包括如下步骤:
(11)系统应用向UEFI固件发送获取固件内容结构分布信息命令;
(12)UEFI固件获取当前固件内容结构分布信息,并将结果反馈给系统应用;
步骤(2)包括如下步骤:
(21)UEFI固件读取现有固件的版本信息;
(22)系统应用将目标固件文件版本内容放置在内存中,并给UEFI固件发送存放目标固件文件版本的地址和版本控制命令;
(23)UEFI固件读取目标固件的版本信息,并与现有固件的版本信息进行比较,如果目标固件的版本低于现有固件的版本,或者版本ID错误,则退出固件更新;
步骤(3)包括如下步骤:
(31)系统应用发送固件备份命令给UEFI固件;
(32)UEFI固件读取当前固件内容并放入一块内存区域;
(33)UEFI固件将步骤(32)中所述的内存区域地址回传给系统应用;
(34)系统应用创建文件,读取步骤(32)中所述的内存区域,将当前固件备份;
步骤(4)包括如下步骤:
(41)通过系统应用选择需要更新的固件区域和目标固件文件,并给UEFI固件发送固件更新命令、需要更新的固件区域地址和目标固件文件内容地址;关闭SMI中断的发送,禁用鼠标键盘和电源按键;
(42)将目标固件文件中对应区域的内容更新到此固件区域;
(43)更新完成,开启SMI中断的发送、键盘鼠标和电源按键;
步骤(5)包括如下步骤:
(51)系统应用给UEFI固件发送更新验证命令;
(52)UEFI比较更新后的固件区域内容与目标固件文件内容是否一致,内容一致则更新成功,重启计算机;内容不一致,则更新失败,将步骤(3)中备份的固件文件进行恢复。
优选地,步骤(42)为:UEFI固件比较步骤(41)选择的需要更新的固件区域与目标固件文件对应区域的内容是否一致,如一致则跳过更新此固件区域;如不一致,禁用鼠标键盘和电源按键,将目标固件文件中对应区域的内容更新到此固件区域。这样可以跳过内容不变区域的更新,进一步缩短了更新的时间。
另一种优选,步骤(12)中,系统应用可以将获取的固件内容结构分布信息结果输出到屏幕上,便于用户查看和选择需要更新的固件区域。
上述步骤中UEFI固件内容结构包括主代码段,启动恢复代码段,数据段和自定义段。
系统应用向UEFI固件发送命令可以采用多种方式,本发明采用发送SMI中断信号的方式向UEFI固件发送命令。
有益效果:与现有技术相比,本发明公开的计算机UEFI固件更新方法的优点在于:1、将固件内容划分为不同区域,可以按需要选择只更新个别区域,不需要更新整个固件ROM,针对只修改少量代码的情况,大大缩短了更新的时间;2、在对选择的区域进行更新时,先比较当前固件区域与目标固件文件中对应区域的内容是否一致,如内容一致则不更新此固件区域,即跳过了内容不变区域的更新,进一步缩短了固件更新所耗时间;3、固件内容结构分布信息可以显示在屏幕上,方便用户操作;4、系统应用采用发送SMI中断信号的方式向UEFI固件发送命令,UEFI固件处理中断响应函数即可,对于不同的系统,可以共用一个UEFI固件内的SMI中断服务,减少了开发人员的工作量。
附图说明
图1是本发明UEFI固件更新方法的流程图;
图2是UEFI固件内容结构。
具体实施方式
下面结合附图和具体实施方式,进一步阐明本发明。
图1是本发明UEFI固件更新方法的流程图,由调度计算机固件更新的系统应用和UEFI固件程序共同执行完成。以Intel平台,Windows下系统环境为例。整个方法的实现包括UEFI固件SMI服务接口设计和系统应用设计。
UEFI固件SMI服务接口设计主要步骤:
1.注册SMI中断号和中断函数。
在中断函数中,通过读取CPU EAX和EBX寄存器值,确定所需要的服务。定义获取固件内容结构分布信息命令、版本控制命令、更新验证命令、固件更新命令和固件备份命令的命令号。
2.获取CPU EAX寄存器高8位,为获取固件内容结构分布信息命令,进入获取固件内容结构分布子函数,获取当前固件内容结构分布,并将结果存放在内存,将内存地址通过CPU EBX返回给系统应用;UEFI固件内容结构分布如图2所示。
3.获取CPU EAX寄存器高8位,为版本控制命令进入版本控制子函数,其中CPU EBX为目标固件文件版本存放的地址,对比现有固件的版本和目标固件的版本来分别控制。
4.获取CPU EAX寄存器高8位,为固件备份命令进入固件备份子函数,UEFI固件读取当前固件内容并放入一块内存区域,这块内存区域的地址通过CPU EBX回传给系统应用模块,然后由系统应用模块创建文件备份。
5.获取CPU EAX寄存器高8位,为固件更新命令进入固件更新子函数,CPU EBX为需要更新的固件区域内容地址和目标固件对应区域文件内容的内存地址,UEFI固件比较两块内存中的内容是否一致,如不一致将目标文件更新至固件;如一致则跳过更新此固件区域来缩短更新耗时。
6.固件更新完成后返回系统级应用,由系统级应用再发送SMI,获取CPU EAX寄存器高8位为更新验证命令,进入更新验证子函数,用来检验是否更新成功无误。
以上为固件SMI中断程序所包含的内容。
系统级应用部分在Windows和Linux下的需要额外的驱动用来发送SMI中断,EFISHELL需要用汇编代码编写SMI库即可。以系统环境为Windows为例,主要步骤为:
1.编写底层驱动,提供物理内存读写,IO操作和发送SMI中断功能;编写可执行程序,加载底层驱动;
2.系统应用向UEFI固件发送约定的SMI中断信号,并带入获取固件内容结构分布信息命令来获取当前固件内容结构分布信息;根据UEFI固件返回的存放当前固件内容结构分布信息的内存地址,访问该地址,并将固件内容结构分布信息结果显示在屏幕上;
3.获取目标固件文件版本,并将此版本内容存放在内存中,向UEFI固件发送约定的SMI中断信号,并带入版本控制命令和目标固件文件的版本存放地址;
4.根据UEFI固件返回的版本比较结果,确认是否继续更新;
5.如继续更新,向UEFI固件发送约定的SMI中断信号,并带入固件备份命令来获取当前固件内容的存放地址;访问该地址,创建文件备份当前固件文件;
6.根据用户的选择获取需要更新的固件区域内容地址,读取对应的目标固件文件并将内容放入内存;向UEFI固件发送约定的SMI中断信号,并带入固件更新命令和需要更新的固件区域内容地址、目标固件文件内容地址;关闭SMI中断的发送,禁用鼠标键盘和电源按键;
7.获取UEFI固件返回的更新结果,开启SMI中断的发送、键盘鼠标和电源按键;向UEFI固件发送约定的SMI中断信号,并带入更新验证命令来检验更新是否成功。
8.重启计算机验证。
Linux和EFI Shell和Windows方法一样,只是编码和编译方法不同,不再说明。
Claims (6)
1.一种计算机UEFI固件更新方法,其特征在于包括如下步骤:
(1)获取当前固件内容结构分布信息;
(2)比较当前固件版本和目标固件版本信息;
(3)备份现有固件;
(4)根据步骤(1)获取的固件内容结构分布信息,选择需要更新的区域执行UEFI固件更新;
(5)确认是否更新成功。
2.根据权利要求1所述的计算机UEFI固件更新方法,其特征在于,由系统应用和UEFI固件执行,步骤(1)包括如下步骤:
(11)系统应用向UEFI固件发送获取固件内容结构分布信息命令;
(12)UEFI固件获取当前固件内容结构分布信息,并将结果反馈给系统应用;
步骤(2)包括如下步骤:
(21)UEFI固件读取现有固件的版本信息;
(22)系统应用将目标固件文件版本内容放置在内存中,并给UEFI固件发送存放目标固件文件版本的地址和版本控制命令;
(23)UEFI固件读取目标固件文件的版本信息,并与现有固件的版本信息进行比较,如果目标固件文件的版本低于现有固件的版本,或者版本ID错误,则退出固件更新;
步骤(3)包括如下步骤:
(31)系统应用发送固件备份命令给UEFI固件;
(32)UEFI固件读取当前固件内容并放入一块内存区域;
(33)UEFI固件将步骤(32)中所述的内存区域地址回传给系统应用;
(34)系统应用创建文件,读取步骤(32)中所述的内存区域,将当前固件备份;
步骤(4)包括如下步骤:
(41)通过系统应用选择需要更新的固件区域和目标固件文件,并给UEFI固件发送固件更新命令、需要更新的固件区域地址和目标固件文件内容地址;关闭SMI中断的发送,禁用鼠标键盘和电源按键;
(42)将目标固件文件中对应区域的内容更新到此固件区域;
(43)更新完成,开启SMI中断的发送、键盘鼠标和电源按键;
步骤(5)包括如下步骤:
(51)系统应用给UEFI固件发送更新验证命令;
(52)UEFI比较更新后的固件区域内容与目标固件文件内容是否一致,内容一致则更新成功,重启计算机;内容不一致,则更新失败,将步骤(3)中备份的固件文件进行恢复。
3.根据权利要求2所述的计算机UEFI固件更新方法,其特征在于,步骤(42)为:UEFI固件比较步骤(41)选择的需要更新的固件区域与目标固件文件对应区域的内容是否一致,如一致则跳过更新此固件区域;如不一致将目标固件文件中对应区域的内容更新到此固件区域。
4.根据权利要求2所述的计算机UEFI固件更新方法,其特征在于,步骤(12)还包括系统应用将获取的固件内容结构分布信息结果输出到屏幕上。
5.根据权利要求1-4所述的计算机UEFI固件更新方法,其特征在于,所述UEFI固件内容结构包括主代码段,启动恢复代码段,数据段和自定义段。
6.根据权利要求2-4所述的计算机UEFI固件更新方法,其特征在于,系统应用采用发送SMI中断信号的方式向UEFI固件发送命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610522203.6A CN106201608A (zh) | 2016-07-01 | 2016-07-01 | 计算机uefi固件更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610522203.6A CN106201608A (zh) | 2016-07-01 | 2016-07-01 | 计算机uefi固件更新方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106201608A true CN106201608A (zh) | 2016-12-07 |
Family
ID=57466048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610522203.6A Pending CN106201608A (zh) | 2016-07-01 | 2016-07-01 | 计算机uefi固件更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106201608A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107092832A (zh) * | 2017-04-17 | 2017-08-25 | 南京百敖软件有限公司 | 一种及时弥补Secure‑Boot安全漏洞的方法 |
CN108536453A (zh) * | 2017-03-03 | 2018-09-14 | 台湾聚引移动有限公司 | 更新统一可扩展固件接口固件的方法 |
CN108710804A (zh) * | 2018-05-19 | 2018-10-26 | 济南浪潮高新科技投资发展有限公司 | 一种计算机uefi固件的带硬件加密快速更新方法 |
CN109478135A (zh) * | 2016-07-28 | 2019-03-15 | 微软技术许可有限责任公司 | 优化的uefi重新引导过程 |
CN111666111A (zh) * | 2019-03-06 | 2020-09-15 | 广达电脑股份有限公司 | 多节点储存系统及其固件的更新方法 |
CN111782256A (zh) * | 2020-07-10 | 2020-10-16 | 山东超越数控电子股份有限公司 | 一种计算机uefi固件更新方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1641575A (zh) * | 2004-01-05 | 2005-07-20 | 华硕电脑股份有限公司 | 固件更新处理方法及应用程序 |
CN103207797A (zh) * | 2013-03-15 | 2013-07-17 | 南京工业大学 | 基于通用可扩展固件接口固件系统的胶囊式定制更新方法 |
CN105094927A (zh) * | 2015-08-28 | 2015-11-25 | 东方网力科技股份有限公司 | 一种设备固件升级方法和装置 |
CN105653299A (zh) * | 2014-11-12 | 2016-06-08 | 杭州华三通信技术有限公司 | 一种固件升级方法及设备 |
-
2016
- 2016-07-01 CN CN201610522203.6A patent/CN106201608A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1641575A (zh) * | 2004-01-05 | 2005-07-20 | 华硕电脑股份有限公司 | 固件更新处理方法及应用程序 |
CN103207797A (zh) * | 2013-03-15 | 2013-07-17 | 南京工业大学 | 基于通用可扩展固件接口固件系统的胶囊式定制更新方法 |
CN105653299A (zh) * | 2014-11-12 | 2016-06-08 | 杭州华三通信技术有限公司 | 一种固件升级方法及设备 |
CN105094927A (zh) * | 2015-08-28 | 2015-11-25 | 东方网力科技股份有限公司 | 一种设备固件升级方法和装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109478135A (zh) * | 2016-07-28 | 2019-03-15 | 微软技术许可有限责任公司 | 优化的uefi重新引导过程 |
CN108536453A (zh) * | 2017-03-03 | 2018-09-14 | 台湾聚引移动有限公司 | 更新统一可扩展固件接口固件的方法 |
CN107092832A (zh) * | 2017-04-17 | 2017-08-25 | 南京百敖软件有限公司 | 一种及时弥补Secure‑Boot安全漏洞的方法 |
CN108710804A (zh) * | 2018-05-19 | 2018-10-26 | 济南浪潮高新科技投资发展有限公司 | 一种计算机uefi固件的带硬件加密快速更新方法 |
CN111666111A (zh) * | 2019-03-06 | 2020-09-15 | 广达电脑股份有限公司 | 多节点储存系统及其固件的更新方法 |
CN111666111B (zh) * | 2019-03-06 | 2023-03-24 | 广达电脑股份有限公司 | 多节点储存系统及其固件的更新方法 |
CN111782256A (zh) * | 2020-07-10 | 2020-10-16 | 山东超越数控电子股份有限公司 | 一种计算机uefi固件更新方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201608A (zh) | 计算机uefi固件更新方法 | |
US9319822B2 (en) | Over-the-air update method for continuous delta of an Android operating system of a handheld device | |
CN106095620B (zh) | 一种嵌入式Linux存储分区的开发方法 | |
CN103207797B (zh) | 基于通用可扩展固件接口固件系统的胶囊式定制更新方法 | |
CN100456254C (zh) | 在系统崩溃时提取日志和追踪缓冲器的方法和系统 | |
TWI617914B (zh) | 用以從睡眠狀態加速回復之專用啟動路徑 | |
CN106201613A (zh) | 预热软件安装 | |
CN106789249B (zh) | 热更新方法、客户端及服务器 | |
CN102707900A (zh) | 虚拟盘存储技术 | |
CN105579953A (zh) | 灵活引导程序代码架构 | |
CN102541619A (zh) | 虚拟机管理装置和方法 | |
US20190278508A1 (en) | Information Handling System Firmware Persistent Memory Runtime Reclaim | |
CN103577201B (zh) | 嵌入式双系统的更新方法及系统 | |
CN101021797A (zh) | 一种用于嵌入式系统的软件修复和升级方法 | |
CN103577574A (zh) | 一种基于nand flash的高可靠线性文件系统 | |
CN110633091A (zh) | 一种电子模块及其软件无线升级方法 | |
CN104937562A (zh) | 非易失性存储器写入机制 | |
US11144299B2 (en) | Firmware updating method | |
CN102521274A (zh) | 一种基于ibatis的SQL脚本动态加载方法 | |
CN113672263B (zh) | 固件参数更新控制方法、装置及电子设备 | |
CN101650647A (zh) | 一种efi平台的兼容方法 | |
CN103092659A (zh) | 脱离仿真器支持环境的dsp软件升级系统及其升级方法 | |
CN104809018A (zh) | 一种嵌入式系统软件注入热补丁的方法及系统 | |
CN106843949A (zh) | 系统镜像的制作方法、电子设备的系统安装方法 | |
CN106104515A (zh) | 利用非易失性存储器的文件系统设计和故障恢复方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161207 |