UEFI Boot Flow系列之DXE

来源:互联网 发布:海盗 蔡依林 知乎 编辑:程序博客网 时间:2024/05/20 23:59

转自CeliaQianhj

DXE: Driver Execution Environment

为什么要有DXE Phase?

大部分系统的初始化工作都是在DXE 阶段实现的。

DXE Phase由以下几部分组成:

1. DXE Core (DXE Foundation)

     产生一组Boot Services, Runtime Services, DXE Services。 由boot service code组成,boot到OS之后就不存在了。

2. DXE Dispatcher

    负责发现并以正确的顺序执行DXE Drivers。

3. DXE Drivers

    负责初始化CPU,Chipset,系统组件以及为Sysem Services、控制台和启动设备提供系统概要。

这几部分协同工作以完成platform的初始化,并提供启动到操作系统所要求的services.

DXE Phase与PEI Phase的关系:

可以执行DXE Phase的唯一的条件是:有一个有效的HOB List。 有很多种方式产生HOB List, PEI只是其中一种。所以DXE Phase之前并不要求一定先执行PEI Phase。

DXE Phase与BDS Phase的关系

DXE Phase与BDS Phase协同工作以建立工作台并尝试boot OS。当OS成功启动,即BDS Phase开始的时候,DXE Phase就结束了。

DXE Driver 的分类:

1. Early DXE Driver--Platform initialization Drivers

       a. 在DXE Phase最早执行的Driver

       b. 包含Dependency Expression Syntax(DEPEX) 来描述Dispatch的顺序。

       c. 典型的包含:

              Basic Services

              Processor Initialization Code

              Chipset Initialization Code

              Platform Initialization Code

       d. 产生Architectural Protocols

2. EFI Drivers that follow EFI Driver Model

        a. 初始化的过程中不会涉及到硬件

        b. Follow EFI Driver Model

        c. 典型的提供对Console Devices 和 Boot Devices的访问

        d. Abstract Bus Controller

        e. 只有Boot OS 所需要的Driver才被初始化

        f. DXE Dispather完成的时候才被呼叫

        g. 像个Driver一样被执行

        h. 需要建立控制台(Keyboard,Video)和处理EFI Boot Option(Boots OS)的时候要连接EFI Drivers