EDK2模拟器跑起来之后,就可以尝试写一个自己的UEFI程序来看看效果了,步骤记录如下:
1. 创建代码与工程文件
创建代码文件(Yigo.c)
#include <Uefi.h>
EFI_STATUS YigoMain(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
{
SystemTable->ConOut->OutputString(SystemTable->ConOut, L"Yigo's first UEFI app\n");
return EFI_SUCCESS;
}
创建工程文件(Yigo.inf)
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = Yigo
FILE_GUID = 6987936E-ED34-44db-AE97-1FA5E4ED2118
MODULE_TYPE = UEFI_APPLICATION
VERSION_STRING = 1.0
ENTRY_POINT = YigoMain
[Sources]
Yigo.c
[Packages]
MdePkg/MdePkg.dec
[LibraryClasses]
UefiApplicationEntryPoint
UefiLib
就这两个文件,.c文件和.inf文件放到模拟器的包目录下,例如:D:\edk2\EmulatorPkg\Application\Yigo
2. 在包的.dsc文件中添加对工程文件inf的引用
因为这个程序是放在模拟器中运行,因此在EmulatorPkg.dsc的[Components]区域,添加对Yigo.inf的引用
EmulatorPkg/Application/Yigo/Yigo.inf
3. build/run
CMD> D:\edk2>build
build完成之后,就能在D:\edk2\Build\EmulatorX64\DEBUG_VS2017\X64目录下看到Yigo.efi文件
双击WinHost.exe运行模拟器, 输入指令Yigo.efi,或者只输Yigo,就能运行程序了:
扫描二维码关注公众号,回复:
12677013 查看本文章
![](/qrcode.jpg)
到此,我的第一个UEFI程序就完成了。
*******************************************************************************************
EDK2提供了其他一些写好的efi程序,例如HelloWorld.efi, UiApp.efi等,下图是UiApp.efi的运行效果:
参考书:《UEFI原理与编程》- 戴正华