我正在使用UEFI EDK2创建一个BIOS。我已经修改了FDF,以便将驱动程序( UEFI和遗留版本)从主固件卷移到单独的固件卷(FV)中,我严格地创建这个版本是为了保存驱动程序。
在我将驱动程序从主FV移开之前,我会看到遗留的OROM在发布期间登录。但是,由于我已经将驱动程序移到新的FV,我不再看到遗留的OROM登录。似乎遗留的OROM不再被加载。
EDK2似乎“自动”只加载特定的FVs,然后分派它们的驱动程序,但我不知道这些特定的FV是如何在EDK2中识别的。
我已经搜索了几个小时的EDK2代码,试图找出FV是在哪里/如何创建/初始化的,但是我找不到这段代码。我猜我需要将新的FV的GUID添加到某些列表或数据结构中,但我现在真的猜到了。
任何指示都将不胜感激。
发布于 2014-10-16 19:49:38
我在BIOS中找到了创建固件卷滚刀的位置(在专用文件中)。我在那里添加了代码来为我的新固件卷创建一个FV滚刀。
之后,我不得不安装一个PPI来处理新的固件卷。下面是PPI创建代码:
static EFI_PEI_FIRMWARE_VOLUME_INFO_PPI mNewFvPpiInfo = {
EFI_FIRMWARE_FILESYSTEM2_GUID,
(VOID*) <Starting address of new FV in the ROM>,
<size of the new FV in the ROM>,
NULL,
NULL
};
static EFI_PEI_PPI_DESCTRIPTOR mNewFvPpi = {
(EFI_PEI_PPI_DESCTRIPTOR_PPI | EFI_PEI_PPI_DESCTRIPTOR_TERMINATE_LIST),
&gEfiPeiFirmwareVolumeInfoPpiGuid,
&mNewFvPpiInfo
};
下面是安装PPI的代码(放置在将新的FV HOB添加到FV HOB列表之后):
(*ppPeiServices)->InstallPpi(ppPeiServices, &mNewPvPpi);
https://stackoverflow.com/questions/26265053
复制相似问题