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

  • 相关阅读:
    【leetcode】106. Construct Binary Tree from Inorder and Postorder Traversal
    【leetcode】105. Construct Binary Tree from Preorder and Inorder Traversal
    【leetcode】236. Lowest Common Ancestor of a Binary Tree
    【leetcode】235. Lowest Common Ancestor of a Binary Search Tree
    【leetcode】352. Data Stream as Disjoint Intervals
    【leetcode】897. Increasing Order Search Tree
    【leetcode】900. RLE Iterator
    BEC listen and translation exercise 26
    BEC listen and translation exercise 25
    BEC listen and translation exercise 24
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/11328812.html
Copyright © 2011-2022 走看看