2016-01-04 25 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),该方法启动设备。入口点只能用于协议注册,不建议在入口点启动设备。

有用的资源:

相关问题