(请保留-> 作者: 罗冰 https://blog.youkuaiyun.com/luobing4365)
NVRAM全称为Non-Volatile Ram(非易失性内存) ,Legacy BIOS下这块是使用CMOS来实现的,UEFI下则可以直接在ROM中分出一部分来实现。(问题来了,在UEFI下CMOS到底怎么用的呢? 有机会再研究一下)
UEFI下,对NVRAM的使用如图1所示。

图 1 配置参数存储于NVRAM
在上一篇博客代码的基础上,进行部分修改,将用户的选择存储于NVRAM,修改步骤如下。
1 更新MyWizardDriver.c
获取HII相关的几个Protocol指针:
EFI_HII_STRING_PROTOCOL *HiiString;
EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
添加相应的代码(Line228~Line261):
// Locate Hii Database protocol
//
Status = gBS->LocateProtocol (&gEfiHiiDatabaseProtocolGuid, NULL, (VOID **) &HiiDatabase);
if (EFI_ERROR (Status)) {
return Status;
}
PrivateData->HiiDatabase = HiiDatabase;
…
PrivateData->HiiConfigRouting = HiiConfigRouting;
后续的代码中,获取Hii Database protocol的代码注释掉。(Line289~Line298以及Line310)
2 更新HiiConfigAccess.c
添加外部变量的声明(Line14 and Line15):
extern EFI_GUID mMyWizardDriverFormSetGuid;
extern CHAR16 mIfrVariableName[];
然后对三个函数进行改造,之前这三个函数都没有实现具体

本文深入探讨了UEFI环境下NVRAM的应用,特别是如何利用Variable在平台存储持久性数据,包括获取和设置Variable的方法,以及在具体项目中的实践。
最低0.47元/天 解锁文章
1139

被折叠的 条评论
为什么被折叠?



