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

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



This Unified Extensible Firmware Interface (hereafter known as UEFI) Specification describes an interface between the operating system (OS) and the platform firmware. UEFI was preceded by the Extensible Firmware Interface Specification 1.10 (EFI). As a result, some code and certain protocol names retain the EFI designation. Unless otherwise noted, EFI designations in this specification may be assumed to be part of UEFI. The interface is in the form of data tables that contain platform-related information, and boot and runtime service calls that are available to the OS loader and the OS. Together, these provide a standard environment for booting an OS. This specification is designed as a pure interface specification. As such, the specification defines the set of interfaces and structures that platform firmware must implement. Similarly, the specification defines the set of interfaces and structures that the OS may use in booting. How either the firmware developer chooses to implement the required elements or the OS developer chooses to make use of those interfaces and structures is an implementation decision left for the developer. The intent of this specification is to define a way for the OS and platform firmware to communicate only information necessary to support the OS boot process. This is accomplished through a formal and complete abstract specification of the software-visible interface presented to the OS by the platform and firmware. Using this formal definition, a shrink-wrap OS intended to run on platforms compatible with supported processor specifications will be able to boot on a variety of system designs without further platform or OS customization. The definition will also allow for platform innovation to introduce new features and functionality that enhance platform capability without requiring new code to be written in the OS boot sequence. Furthermore, an abstract specification opens a route to replace legacy devices and firmware code over time. New device types and associated code can provide equivalent functionality through the same defined abstract interface, again without impact on the OS boot support code. The specification is applicable to a full range of hardware platforms from mobile systems to servers. The specification provides a core set of services along with a selection of protocol interfaces. The selection of protocol interfaces can evolve over time to be optimized for various platform market segments. At the same time, the specification allows maximum extensibility and customization abilities for OEMs to allow differentiation. In this, the purpose of UEFI is to define an evolutionary path from the traditional “PC-AT”- style boot world into a legacy-API free environment.
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值