這邊做個記錄,EDK 底下做 driver 最基礎的 INF 檔結構,如果沒有其它需求,通常這個 INF 可以直接套上去。
在 .h 檔裡:
#include "Tiano.h" #include "EfiDriverLib.h" #include "EfiPrintLib.h" //需要 Debug 或 Print 再用
INF 檔裡:
[defines] BASE_NAME = #BaseName FILE_GUID = #Guid COMPONENT_TYPE = BS_DRIVER [sources.common] DriverName.c [includes.common] . $(EDK_SOURCE)\Foundation $(EDK_SOURCE)\Foundation\Include $(EDK_SOURCE)\Foundation\Efi $(EDK_SOURCE)\Foundation\Efi\Include $(EDK_SOURCE)\Foundation\Framework $(EDK_SOURCE)\Foundation\Framework\Include $(EDK_SOURCE)\Foundation\Library\Dxe\Include [libraries.common] EfiDriverLib EfiPrintLib #同 include 檔 [nmake.common] IMAGE_ENTRY_POINT=#DriverEntryPoint
接下來就是 Application 的 include file 和 INF 檔配置,這應該用得比較少,不過有用時就方便了。
.h 檔
#include "EfiShellLib.h"
INF 檔
[defines] BASE_NAME = #BaseName FILE_GUID = #Guid COMPONENT_TYPE = APPLICATION [sources.common] ApplicationName.c [includes.common] . $(EFI_SOURCE) $(EFI_SOURCE)\Include $(EDK_SOURCE)\Foundation $(EDK_SOURCE)\Foundation\Core\Dxe\ $(EDK_SOURCE)\Foundation\Efi $(EDK_SOURCE)\Foundation\Efi\Include $(EDK_SOURCE)\Foundation\Framework\ $(EDK_SOURCE)\Foundation\Include $(EDK_SOURCE)\Foundation\Framework\Include $(EDK_SOURCE)\Foundation\Include\IndustryStandard $(EFI_SOURCE)\Application\Shell\Library $(EFI_SOURCE)\Application\Shell\inc [libraries.common] EfiShellLib EdkFrameworkGuidLib [nmake.common] IMAGE_ENTRY_POINT=ApplicationEntry
Component Type 可用 FvVolume.c 內查詢得知:
static const COMP_TYPE_EXTENSION mCompTypeExtension[] = { {"bs_driver", ".dxe" }, {"rt_driver", ".dxe" }, {"sal_rt_driver", ".dxe" }, {"pic_peim", ".pei" }, {"pe32_peim", ".pei" }, {"application", ".app" }, {"file", ".ffs" }, {"fvimagefile", ".fvi" }, {"raw_file", ".raw" }, {"apriori", ".ffs" }, {"combined_peim_driver", ".pei" }, { NULL, NULL } };
沒有留言:
張貼留言