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源程序/简析

(随学习进度推进、博客内容继续增加~哪里阐述有误,希望批评指正~



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