UEFI 基础教程 (二) - 运行第一个APP HelloWorld

一、 编写源代码

  1. 编写C:\edkii\OvmfPkg\HelloWorld\HelloWorld.c
#include  
#include  
#include 
#include 
#include 
#include 

//ShellCEntryLib call user interface ShellAppMain
EFI_STATUS
EFIAPI
HelloWorldEntry(
  IN EFI_HANDLE        ImageHandle,
  IN EFI_SYSTEM_TABLE  *SystemTable
)
{   
  EFI_STATUS  Status = EFI_SUCCESS;
  Print (L"[Console]  HelloWorldEntry Start..\n");
  
  Print (L"[Console]  HelloWorldEntry  End ... \n"); 
  return Status;
}

  1. 编写C:\edkii\OvmfPkg\HelloWorld\HelloWorld.inf
  INF_VERSION = 0x00010007 
  BASE_NAME = HelloWorld
  FILE_GUID = 69A6DE6D-FA9F-485E-9A4E-EA70FDCFD82F
  MODULE_TYPE = UEFI_APPLICATION
  VERSION_STRING = 1.0
  ENTRY_POINT = HelloWorldEntry 
  
[Sources] 
  HelloWorld.c 
  
[Packages]
  MdePkg/MdePkg.dec
  ShellPkg/ShellPkg.dec 
  MdeModulePkg/MdeModulePkg.dec
  
[LibraryClasses]
  UefiShellCEntryLib
  BaseLib
  BaseMemoryLib
  DebugLib
  PrintLib
  UefiBootServicesTableLib
  MemoryAllocationLib
  UefiLib
  1. 修改C:\edkii\OvmfPkg\OvmfPkgX64.dsc
...
# 
[Components]
  OvmfPkg/HelloWorld/HelloWorld.inf
... 

二、 编译生成EFI文件

  1. 编译UFI文件
    运行edksetup.bat编译整个OvmfPkg Package
    build -a X64 -p OvmfPkg\OvmfPkgX64.dsc -D DEBUG_ON_SERIAL_PORT
  2. 检查efi文件
    UEFI 基础教程 (二) - 运行第一个APP HelloWorld_第1张图片

三、 运行HelloWorld.efi

  1. 创建虚拟U盘
    1)下载安装UltraISO.exe 创建镜像文件HDD_BOOT.img,
    2)下载安装osfmount,挂载HDD_BOOT.img ,然后将 HelloWorld.efi 拷贝到HDD_BOOT.img
    UEFI 基础教程 (二) - 运行第一个APP HelloWorld_第2张图片

  2. 挂载虚拟U盘启动QEMU
    1) 改写启动脚本 setup-qemu-x64.bat
    C:\qemu>echo "C:\Program Files\qemu\qemu-system-x86_64.exe" -bios "OVMF.fd" -M "pc" -m 256 -cpu "qemu64" -boot order=dc -usbdevice disk:HDD_BOOT.img -serial stdio > setup-qemu-x64.bat

  3. 运行HelloWorld.efi
    启动后运行结果如下,
    UEFI 基础教程 (二) - 运行第一个APP HelloWorld_第3张图片
    MyHelloWorldApp DEMO源码

你可能感兴趣的:(15_固件开发,UEFI,固件,bios,FIrmWare)