4

すべての DXE ドライバーがロードされた直後、BDS フェーズの前に EFI アプリケーションを自動的にロードして実行できますか? DXE ドライバの直後にアプリケーションを .fdf ファイルに含めた場合、アプリケーションは自動的にロードされて実行されますか?

4

1 に答える 1

1

この質問は非常に難しいので、私の答えは表面をなぞるだけです。詳細については、私が言及したドキュメントをお読みください。

ハードウェア用の UEFI ファームウェアの完全なソース コードがある場合は、BDS フェーズの前に実行する UEFI モジュールを追加できます。それ以外の場合は、シェル コマンドExitBootServicesを使用して UEFI アプリケーションを追加することで、起動順序 (呼び出しの直前) のみに影響を与えることができます。この質問を確認してください。bcfg

BDS の前にコードを実行する場合は、DXE モジュール (つまりDRIVERRUNTIME_DRIVER) である必要があります。使用できる多くのモジュール タイプがあり、正確にはユース ケースによって異なります。モジュールの種類の詳細については、INF ファイル仕様の付録 G を参照してください。

コードを実行するには、ファイルに追加するFDFだけでは不十分です。FDFファイルには、フラッシュ レイアウトのみが記述されています。各バイナリが最終的なフラッシュ イメージに配置される方法と場所です。DXE ドライバーを追加するには、INFファイルをプラットフォームDSCファイルに追加する必要もあります。次に、INF に正しい[Depex]セクションを作成します。これは次のように簡単です。

[Depex]
  TRUE

あなたが理解しなければならない最後のことはDXE Dispatcher. 各ブートDXE Dispatcherは、既知のイメージ リストを繰り返し処理し、EFI_DRIVER_BINDING_SUPPORTED関数 ( で定義EFI_DRIVER_BINDING_PROTOCOL) を呼び出します。このメソッドは、サポートされているハードウェアがプラットフォームで利用可能かどうかを確認する必要があります。成功が返された場合EFI_DRIVER_BINDING_SUPPORTED、他のドライバ バインディング メソッドが呼び出され ( EFI_DRIVER_BINDING_START)、デバイスが起動します。エントリ ポイントはプロトコルの登録にのみ使用する必要があります。エントリ ポイントでデバイスを起動することはお勧めしません。

役立つリソース:

于 2016-01-04T12:17:52.707 に答える