zoukankan      html  css  js  c++  java
  • edk2中子目录介绍

    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

  • 相关阅读:
    启动php-fpm时报错
    安装php时,make test报错
    安装php时,make步骤报错make: *** [sapi/fpm/php-fpm] Error 1
    安装php时,make步骤报错make: *** [ext/gd/gd.lo] Error 1
    运行phpize时出现:Cannot find autoconf. Please check your autoconf installation
    Linux下安装php加速组件XCache
    加速器eaccelerator不兼容高版本php
    Apache下Worker模式MPM参数分析
    Linux SVN直接删除版本库文件
    Linux SVN一次增加多个文件并批量上传
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/11328812.html
Copyright © 2011-2022 走看看