2016-01-04 27 views
4

緊接所有DXE驅動程序加載之後,EFI應用程序是否可以在BDS階段之前自動加載並執行? 如果我將應用程序包含在DXE驅動程序後面的.fdf文件中,它會自動加載並執行嗎?在BDS階段之前,EFI應用程序能否自動加載並執行?

+1

非常有用的資源庫你的意思_specifically_的BDS階段之前,或者僅僅是默認啓動映像啓動之前?或者更確切地說 - 你能告訴我們你想要解決這個問題嗎? – unixsmurf

回答

1

這個問題是非常委員會,我只會用我的答案劃傷表面。請閱讀我提到的文檔以獲取更多信息。

如果您的硬件具有完整的UEFI固件源代碼,那麼您可以添加UEFI模塊以便在BDS階段之前執行。否則,您可以通過使用bcfg shell命令添加UEFI應用程序,並通過檢查this question,僅影響引導順序(在調用ExitBootServices之前)。

如果要在BDS之前執行代碼,則必須是DXE模塊(即DRIVERRUNTIME_DRIVER)。有很多可以使用的模塊類型,具體取決於您的使用情況。有關模塊類型的更多信息,請參閱INF file specification的附錄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),該方法啓動設備。入口點只能用於協議註冊,不建議在入口點啓動設備。

有用的資源:

相關問題