前言
BIOS升级会分为Shell,Setup,OS下三种情况说明。
本文将会以shell下升级为主,具体操作为在shell下获取需要升级的BIOS文件信息,再把数据传给SMM模式下刷写Flash。
与capsule的实现方法类似,但仅以最简单能够更新BIOS的方法。
部分代码借鉴EDKII源码,如有侵权,请联系删除
一、Shell下读取数据
1.创建shell tool 具体请看此文章: 【UEFI实战】EDKII下创建带参数的shell工具
2.使用EDKII中的EFI_SHELL_PROTOCOL
读取BIOS数据
UINTN BIOSFileSize;
VOID *BIOSFileData;
//1.LocateProtocol
gBS->LocateProtocol (&gEfiShellProtocolGuid,NULL,(VOID **)&mShellProtocol);
//2.根据FileName打开文件,注意此文件目录在shelltool运行的目录
ShellProtocol->OpenFileByName (FileName,&Handle,EFI_FILE_MODE_READ);
//3.读文件数据,需要的话可以通过GetFileSize读文件大小
ShellProtocol->ReadFile (Handle,&BIOSFileSize,BIOSFileData