UEFI規範實現EDKII項目學習筆記緒論[0]

UEFI規範實現EDKII項目學習筆記緒論[0]

2015-07-10   北京海淀區  張俊浩 

這段時間在學習UEFI( Unified Extensible Firmware Interface,統一的可擴展固件接口),熟悉EDKIIEFI Developer KitIIEFI開發工具包)項目,本想對UEFI框架脈絡和EDKII項目的組織結構較爲熟悉時候再着手寫UEFIEDKII項目的學習筆記,這樣會對一些概念、工程的開發把握、闡述會更準確些~但發現冰凍三尺非一日之寒,一口也吃不下一個大胖子,所以先把博客寫成散、零碎的UEFIEDKII筆記,較爲真實的記錄自己的學習過程~等到對UEFIEDKII較爲明朗的時候,再反過來整理這些博客~

學習UEFIEDKII項目,發現中文資料很少,主要是UEFI論壇(http://www.uefi.org)、Tianocore社區(http://www.tianocore.org)上的各類規範、手冊進行學習、開發。本人的UEFIEDK學習也是通過UEFI論壇、Tianocore社區,還有一本中文書籍戴正華的《UEFI原理與編程》,當然也有百度各種文庫、博客資源,從中國知網下載一些期刊、文獻來科普、學習。發現UEFI規範、EDKII項目的剛開始學習重點不在於解決一些具體概念(比如key concepts)或者EDKII項目中某個具體的技術點,而在於有一條宏觀上的較爲清晰、明確的學習路線,或者說是對UEFI論壇、Tianocore社區上各類文檔、說明性資源的有一個較爲明晰的把握,這也是期望接下來的學習之路能理清的。

剛接觸UEFI及其實現EDKII項目,能感覺到UEFIBIOSBasic Input Output System,基本輸入/輸出系統 )、 Uboot ( Universal Boot Loader,通用的引導程序)等常用的引導程序更爲強大的生命力(硬件芯片上原則上BIOSUbootUEFI都可以支持MIPS、 x86ARMPowerPC等諸多CPU系列。BIOS開發採用彙編開發效率低,而且技術壟斷在少數大公司;Uboot主要支持Linux類操作系統;UEFI由於可編程性好、可擴展性、高性能、安全性獲得主流操作系統Linux系、WindowsMacOS等支持),但陌生的UEFI概念、EDKII項目框架,還有網上對於UEFI的介紹鋪天蓋地的好評,自然的高大上~找到一條相對明朗的學習路線成了很關鍵的事情:自己是通過EDKII項目來熟悉UEFI的,Tianocore社區http://www.tianocore.org ->EDKII->Getting Started for Developers>Getting Started with EDK II->Step-by-step Instructions,還有《EDKII_UserManual_0_7》是EDKII項目學習的一個入門線路,還有戴正華的《UEFI原理與編程》作爲輔助(畢竟手冊式文檔,幾乎很少個人感情色彩、學習體驗的呈現)。

開始的幾篇EDKII學習筆記,模仿EDKII_UserManual框架來整理目前的學習情況,主要包括:EDKII概述, EDKII源碼的下載,EDKII項目LinuxWindows開發環境的搭建,EDKII項目的配置編譯,模擬器的運行,還有簡單UEFI應用程序的編寫。These blogs provides detailed instructions for downloading,  configuring and building an EDKII project , running EDKII Emulation Environments as well as writing a simple UEFI EDK II Application

最近幾篇UEFI規範實現EDKII項目博客內容安排如下:

1. UEFI&EDKII Introduction(UEFI&EDKII概述

      ->1.1 EFI,UEFI,PI,Tianocore,EDK,EDKII

      ->1.2 Several key concepts introduced by EDKII:

                Package,Library Class/Library Instance, PCD, Module, UEFI Application and UEFI Driver

2. Setting Up EDKII Development EnvironmentEDKII開發環境的搭建)

      ->2.1 The General Procedure Of Setting Up EDKII Development Environment(搭建EDKII項目的通用流程)

      ->2.2 Setting up a EDK II build environment on Windows and Linux(搭建WindowsLinux開發環境)

      ->2.3 ToolsInstalling and using the Required Tools for downloading and Building EDKII(工具篇)

3. EDKII Build ProcessEDKII項目源碼的配置、編譯流程)

      ->3.1 The General Process Of EDKII BuildEDKII項目源碼的配置、編譯一般流程)

            ->3.1.1 Tool chain:BaseTools

            ->3.1.2 Setup build shell environment

            ->3.1.3 Modify Conf Files

            ->3.1.4 Build

      ->3.2 The Process Of EDKII Build on WindowsWindows環境下EDKII項目源碼的配置、編譯流程)

      ->3.3 The Process Of EDKII Build on LinuxLinux環境下EDKII項目源碼的配置、編譯流程)

4. Build/Launch EDKII emulator in Windows and Linux(編譯/運行EDKII模擬器)

      ->4.1 Emulation Platforms Introduction (EDKII模擬器平臺介紹)

      ->4.2 In WindowsNt32Pkg(Windows環境下編譯/運行Nt32模擬器)

            ->4.2.1 Tool chain:BaseTools

            ->4.2.2 Setup Nt32 build shell environment

            ->4.2.3 Modify Conf Files

            ->4.2.4 Build Nt32Pkg

            ->4.2.5 Run Nt32

      ->4.3 In LinuxEmulatorPkg(Linux環境下編譯/運行Emulator模擬器)

5.  How to Write a simple UEFI EDKII ApplicationGetting Started Writing Simple Application (寫一個簡單UEFI應用程序例程)

      ->5.0 EDKII Project Introduction

      ->5.1 Setup build shell environmentRun the edksetup

      ->5.2 Modify Conf FilesEdit the file conf/target.txt

      ->5.3 Create a project:MyHelloWorld

            ->5.3.1 Create a new directory. 

            ->5.3.2 Create MyHelloWorld.c file in the project directory

            ->5.3.3 Create MyHelloWorld.inf file in the project directory 

      ->5.4 Build your UEFI Application

      ->5.5 Run your UEFI Application

            ->5.5.1 Run Nt32 and UEFI Application

            ->5.5.2 Run Emulator and UEFI Application

6. UEFI簡單的應用程序模塊MyHelloWorldC源文件//INF工程文件源碼/簡析

      ->6.1 MyHelloWorld.c源程序/簡析

      ->6.2 MyHelloWorld.inf源程序/簡析

(隨學習進度推進、博客內容繼續增加~哪裏闡述有誤,希望批評指正~



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章