4

UEFI EDK2 を使用して BIOS を作成しています。FDF を変更して、ドライバー (UEFI バージョンとレガシー バージョンの両方) をメイン ファームウェア ボリュームから、ドライバーを保持するために厳密に作成した別のファームウェア ボリューム (FV) に移動しました。

ドライバーをメイン FV から移動する前は、POST 中に従来の OROM サインオンが表示されていました。ただし、ドライバーを新しい FV に移動したため、従来の OROM サインオンが表示されなくなりました。従来の OROM が読み込まれなくなったようです。

EDK2 は特定の FVのみを「自動的に」ロードし、そのドライバをディスパッチしているようですが、これらの特定の FV が EDK2 でどのように識別されるのかわかりません。

EDK2 コードを数時間検索して、FV HOB がどこでどのように作成/初期化されているかを調べましたが、このコードが見つかりません。新しい FV の GUID を何らかのリストまたはデータ構造に追加する必要があると推測していますが、この時点では本当に推測しています。

任意のポインタをいただければ幸いです。

4

1 に答える 1

2

ファームウェア ボリューム HOB が作成されている BIOS 内の場所を見つけました (専用ファイル内)。そこにコードを追加して、新しいファームウェア ボリューム用の FV HOB を作成しました。

その後、新しいファームウェア ボリュームを処理できる 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);
于 2014-10-16T19:49:38.627 に答える