2019年7月31日 星期三

UEFI Application - EntryPoint

一般我們在寫 UEFI Application 時,有 3 種方式可以寫,不同方式有不同的 Entry 及套用的 Library,一般來說越下層的 Entry 其檔案 size 也越大,注意這裡指的下層是指呼叫的層級順序,非指底層。

不同的 Entry,其預設的字串編碼也不同,UEFI 預設是使用 Unicode ﹝UINT16﹞,而標準 C 則是使用 ASCII﹝char﹞。

不過,為了 porting 的方便,我大部份都使用 main 型式,反正還是可以呼叫 UEFI 相關函數。

C code Entry UefiMain ShellAppMain main
parameter EFI_HANDLE        ImageHandle,
EFI_SYSTEM_TABLE  *SystemTable
UINTN Argc,
CHAR16 **Argv
int argc,
char *argv[]
include file   #include <Uefi.h>
#include <Library/UefiLib.h>
#include <Library/UefiApplicationEntryPoint.h>
#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Library/ShellCEntryLib.h>
  
[Defines] (INF)
ENTRY_POINT
UefiMain ShellCEntryLib ShellCEntryLib
[Packages] (INF) MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
MdePkg/MdePkg.dec
ShellPkg/ShellPkg.dec
MdePkg/MdePkg.dec
ShellPkg/ShellPkg.dec
StdLib/StdLib.dec
[LibraryClasses] (INF) UefiApplicationEntryPoint
UefiLib
ShellCEntryLib
UefiLib
ShellCEntryLib
UefiLib
LibC

為了避免不必要的誤解,我都習慣不將不需要的東西放入專案,這樣一來,Code 看起來才會賞心悅目。

沒有留言:

張貼留言