edk2中子目录介绍

来源 https://blog.csdn.net/rikeyone/article/details/80760204

参考:https://github.com/tianocore/tianocore.github.io/wiki

AppPkg
UEFI Application Development Kit是一系列用来进行uefi app开发的套件,标准依赖库,工具以及demo,目标是降低UEFI app的开发门槛。

MdePkg
全称为“Module Development Environment Package”,这是一个特殊的package,包含了用于开发一个module所需要的最小环境。一个module可能也会依赖于其他的Package,但是所有modules必须依赖于MdePkg。

MdeModulePkg
此包提供符合UEFI/PI工业标准的模块,也提供该标准相关的开发环境,PPIs/PROTOCOLs/GUIDs和依赖库。

ArmPkg
提供ARM架构相关的protocols,属于ARM平台上的通用代码。

ArmPlatformPkg
ARM开发板相关的UEFI代码,包含ARM平台上通用的一些组件,重复利用这些组建会令ARM平台的不同板型之间的移植变得更加容易。

BaseTools
该包提供编译相关的工具用于EDK和EDK2,比如:AutoGen, Build, GenSec, GenFV, GenFW, GenRds工具。

BeagleBoardPkg
BeagleBoard是一个便宜并且灵活的单板电脑,玩过开发板的同学应该都了解过,基于OMAP3530 SoC (ARM Cortex TM-A8)处理器的开发板。这个包里是对此开发板的支持代码。

CorebootModulePkg
Coreboot原本和UEFI/BIOS是竞争关系,但是现在Coreboot也逐渐向UEFI标准靠拢,目前依靠此包可以轻松从coreboot启动到UEFI,Coreboot Support Modules包含了如下代码:用来解析coreboot table的代码,报告存储器/IO资源的代码,安装acpi table和smbios table 到EFI系统表中的代码。它位于uefi环境和hardware的中间层。

CorebootPayloadPkg
用来加载上层UEFI环境的中间层,Hardware->Coreboot->CorebootPayloadPkg->UEFI->HLOS

CryptoPkg
UEFI定义了HLOS(high level OS)和平台固件之间的接口,多个安全特性也在2.2版本之后加入其中,此包是用来提供加密支持的。

DuetPkg
开发者使用的UEFI模拟器,能够在BIOS机器上模拟UEFI环境。DUET 是基于Legacy BIOS 提供了UEFI模拟器,提供了在传统BIOS系统上的UEFI环境。

EdkCompatibilityPkg
EDK兼容包提供库和头文件用来使能在UEFI2.0+Framework0.9x模式下的EDK编译。

EdkShellPkg, EdkShellBinPkg
EDK Shell开发包以及一个官方的EDK Shell实现,这两个包已经在被Shell 2.x逐渐取代了。

ShellPkg,ShellBinPkg
Shell 2.x版本开发包以及一个官方的UEFI Shell 实现。

EmbeddedPkg
为memory mapped controllers提供protocol实现,以及一个简单的EFI shell(EBL)。

EmulatorPkg
Emulator虚拟环境,用来取代Nt32Pkg和UnixPkg,可以跨平台编译运行的一个虚拟器。

Nt32Pkg
一个win环境下的UEFI虚拟器,不能用语加载实际的OS,只能用来调试UEFI代码。已经逐渐被Emulator取代。

UnixPkg
一个类Unix操作系统下的UEFI虚拟器,已经逐渐被Emulator取代。

OvmfPkg
OVMF是用来给虚拟机提供UEFI支持的包,可以使用QEMU和KVM来引导OVMF固件,并进一步引导HLOS。

NetworkPkg
提供网络支持的包,比如:IPv6网络协议栈/IPsec驱动/PXE驱动/iSCSI驱动/网络配置相关的shell app。

Omap35xxPkg
Omap35xxPkg是Texas Instrument OMAP35xx平台支持包。

OptionRomPkg
这个包的目的是为了提供Option ROM image支持的,如果要编译PCI兼容的Option ROM image,需要依赖此包。

SecurityPkg
提供了四种安全相关的特性:TPM, User identification (UID),secure boot, authenticated variable

StdLib, StdLibPrivateInternalFiles
StdLib提供了标准库的UDK实现,StdLibPrivateInternalFiles包是用来给StdLib使用的,不能用作其他引用。

UefiCpuPkg
提供兼容UEFI的CPU模块和库。

SourceLevelDebugPkg
用来提供debug支持的包。

SignedCapsulePkg
提供了一个签名校验方案,用来支持安全升级和恢复。

PcAtChipsetPkg
这个包提供了符合PcAt标准器件的接口和实现。

FatPkg, FatBinPkg
FAT支持包。

UEFI的运行可以分为如下几个阶段:

SEC阶段
此阶段是安全验证阶段,系统上电后即进入此阶段,作为UEFI的第一阶段,它是可信系统的根,一般可以在此阶段验证后面的PEI,此阶段大部分工作是为后面的PEI阶段提供运行环境。

PEI阶段
PEI(Pre-EFI-Initialization)是EFI前期初始化阶段,资源依然十分有限,内存到了PEI后期才被初始化,其主要功能是为DXE准备执行环境,准备DXE需要的信息并最终将控制权交给DXE。按照功能可以分为PEI Core Services和PEI Modules,另外还需要实现Modules之间通信的接口PPI。

DXE阶段
Driver Execution Environment,此阶段是驱动运行阶段,这是一个非常重要的阶段,完成了外设初始化的大部分工作,此阶段内存已经可以完全被使用了,此阶段还会初始化前面文章所介绍的edk2中的基础服务组件,系统表,启动服务表,运行服务表。在所有driver执行完毕之后,系统会进入下一个阶段,BDS。

BDS阶段
Boot Device Selection阶段,只要是启动策略的执行,它其实是一个特殊的应用程序,当用户选择了启动设备之后,此阶段就会继续运行,跳转到TSL阶段。

TSL阶段
Transient System Loader阶段,也是一个应用程序运行阶段。UEFI Shell就属于此阶段的人机交互界面。但一般情况下不会进入此界面,而是直接执行OS Loader。最后会执行ExitBootServices来结束启动服务,只保留RunTime Services,进入下一个阶段,RT。

RT阶段
Runtime 阶段是OS Loader阶段,系统控制权已经由UEFI内核转交给OS Loader,UEFI占用的资源都已经被回收了,所有控制权都交给了OS Loader。OS Loader负责夹在真正的操作系统OS。

AL阶段
After Life阶段,当系统出现故障时进入的阶段,UEFI目前没有定义此阶段的行为。

=============== End

edk2中子目录介绍的更多相关文章

  1. JavaWeb——tomcat安装及目录介绍

    一.web web可以说,就是一套 请求->处理->响应 的流程.客户端使用浏览器(IE.FireFox等),通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Reque ...

  2. SharePoint常用目录介绍

    SharePoint常用目录介绍 stsadm命令管理程序目录:C:\Program Files\Common Files\Microsoft Shared\web server extensions ...

  3. Android sdk目录介绍

    android sdk目录介绍 build-tools 各版本SDK编译工具 docs 离线开发者文档Android SDK API参考文档 extras 扩展开发包,如兼容架包. platforms ...

  4. android 源码目录介绍

    Android 4.0源码目录介绍|-- Makefile|-- bionic (bionic C库)|-- bootable  (启动引导相关代码)|-- build (存放系统编译规则及gener ...

  5. weblogic基本目录介绍,位数查看,启动与发布项目,修改JVM参数,设置项目为默认项目

    这里的基本目录%base%表示安装目录,如我的目录为:E:/weblogic就是%base% 1.weblogic目录介绍 weblogic主要的目录介绍: 1.日志目录: 每个domain(域)都有 ...

  6. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

  7. Linux中 /boot 目录介绍 【转载】

    Linux中 /boot 目录介绍 转自:点击打开链接 一./boot/目录中的文件和目录 Linux系统在本地启动时,目录/boot/非常重要,其中的文件和目录有: (1)系统Kernel的配置文件 ...

  8. mysql 源代码目录及安装目录介绍

    1.源代码目录介绍: 1.BUILD    BUILD目录是编译.安装脚本目录,绝大部分以compile-开头,其中的SETUP.sh脚本为C和C++编译器设置了优化选项.2.client    cl ...

  9. mysql--mysql的安装与目录介绍

    一.mysql的下载安装 1.下载安装 1.windows10下安装 我们采用绿色免安装版, 打开你的mysql文件夹中的bin目录,我的是这个样子的 将这个路径添加入系统环境变量,首先右键此电脑-- ...

随机推荐

  1. JavaScript箭头函数(Lambda表达式)

    箭头函数也叫lambda表达式 据说其主要意图是定义轻量级的内联回调函数 栗有: 1 var arr = ["wei","ze","yang" ...

  2. nVidia GPGPU vs AMD Radeon HD Graphics执行模式对比

    大家做高性能计算的朋友,想必对CPU的执行模式已经非常熟悉了吧.当代高级些的CPU一般采用超标量流水线,使得毗邻几条相互独立的指令能够并行执行——这称为指令集并行(ILP,Instruction-Le ...

  3. javascript的promise

  4. c# 扫描局域网IP列表的几种方法

    很多软件都有获知局域网在线计算机IP的功能,但是在.net怎么实现呢,有好多方法, 下面我给大家介绍几种,供大家参考. 1.微软社区上介绍了使用Active Directory 来遍历局域网 利用Di ...

  5. python 高阶函数、柯里化

    高阶函数 First Class Object 函数在python中是一等公民 函数也是对象,可调用的对象 函数可作为普通变量.参数.返回值等等 高阶函数 数学概念 y=g(f(x)) 在数学和计算机 ...

  6. k8s常可能问的问题

    k8s常可能问的问题 1.为什么要用k8s 自我修复.pod水平自动伸缩.密钥和配置管理动态对应用进行扩容.缩容 服务发现.负载均衡 1.1.自我修复 比如误删pod后会自动创建,用 kind: Re ...

  7. iOS从App跳转至系统设置菜单各功能项

    跳到系统设置里的WiFi界面 info里面设置: 在项目中的info.plist中添加 URL types 并设置一项URL Schemes为prefs,如下图 代码: 复制代码 代码如下: NSUR ...

  8. WordPress主题制作:基础样式文件

    1.style.css文件,其中必须包含 /* Theme Name:主题名称 Theme URI: 主题链接 Version: 版本 Description: 主题简介 Author: 主题作者 A ...

  9. (二)MVC项目+c3p0连接池

    一.项目架构 注:删除了原有的数据库工具,添加了c3p0数据库工具类,添加了c3p0的配置文件,修改了Dao类以及servlet类 二.修改或添加的类 1.C3p0Helper(暂时不了解事务回滚之类 ...

  10. python set集合(16)

    在python变量中除了以前文章所提到的整形int / 浮点数float / 布尔值bool / 列表list / 字典dict 之外,还有一个类型我们还没有做详细介绍,这个变量类型就是集合set. ...