最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲

[公告2019/01/08] 請注意:我再次重申,部落格文章的程式碼,是要提供各位參考與學習,一旦網頁改版請自行修改,別要求東要求西要我主動修改,你們用我寫東西賺錢了、交差了,請問有分我一杯羹嗎?既然賺錢沒分我,請問有什麼理由要求我修改,如果沒能力改,就花錢來找我上課。

[公告2019/12/01] 若各位有 Excel VBA 案子開發需求,歡迎與我聯繫,可接案處理。

[公告2020/05/22] 頁面載入速度慢,起因為部分JS來源(alexgorbatchev.com)失效導致頁面載入變慢,目前已做調整,請多見諒。

2012年8月10日 星期五

Build UEFI Application --- ShellCEntryLib.h + ShellAppMain (EFI Library build)

建立UEFI的Application步驟,可參考如下。
C:\EDK2\MdeModulePkg\ApplicationHelloWorld整個folder複製到C:\EDK2\MyPkg\Application中改名Hello,接下來修改一些地方
 1.1 MyPkg\Application\Hello\Hello.inf
=============================================================
[Defines]
  #為避免衝突而改
  INF_VERSION         = 0x00010006
  #產生文件名字為 Hello.efi
  BASE_NAME             = hello
  #(避免 GUID 與其他文件衝突, Create GUIDs online 產生新的一組GUID,或開啟VS2010 -> Tools -> Create GUID 來產生GUID)
  FILE_GUID            = ab0f9969-0a54-4695-ace7-42fe6bb84a1d  
  #模型種類:UEFI_DRIVER, DXE_DRIVER, DXE_RUNTIME_DRIVER, UEFI_APPLICATION, BASE
  MODULE_TYPE     = UEFI_APPLICATION
  #可自行修改
  VERSION_STRING = 1.0
  #入口函數
  ENTRY_POINT          = ShellCEntryLib

#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#
#主要的編譯文件
[Sources]
  Hello.c
# .dec裡面定義include的路徑
[Packages]
  MdePkg/MdePkg.dec
  ShellPkg/ShellPkg.dec
#連結的函數庫
[LibraryClasses]
  ShellCEntryLib
  UefiLib
=============================================================


 1.2 增加入口函數到Nt32Pkg\Nt32Pkg.dsc,注意紅色字所添加的位置
=============================================================
[LibraryClasses]
  #
  # Entry point
  #
UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
ShellCEntryLib|ShellPkg/Library/UefiShellCEntryLib/UefiShellCEntryLib.inf
============================================================= 


1.3 Hello.inf 添加到 Nt32Pkg.dsc UnixPkg.dsc [Components.IA32]部分
=============================================================
[Components.IA32]
  MdeModulePkg/Application/HelloWorld/HelloWorld.inf
  MyPkg/Application/Hello/Hello.inf


1.4 Hello.c
#include <Uefi.h>
#include <Library/UefiLib.h>

INTN EFIAPI
ShellAppMain (
  IN UINTN Argc,
  IN CHAR16 **Argv
  )
{
  Print(L"Hello !Welcome to the world of EDK II.\n"); //注意’P’大寫
  return(0);
}

1.5 再一次執行以下三行指令即可 
        (1) build cleanall
        (2) build
        (3) build run

1.6 Shell中輸入 hello