UEFI Boot Flow 系列之 DXE Phase

原创 2012年03月28日 16:53:26

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

               

相关文章推荐

BIOS工程师第一课 DXE Dispatcher 源代码分析

如果用C语言(伪)代码描述整个BIOS 的执行流程,我想应该是这样的: main() { SecStartup ( SizeOfRam, TempRamBase, *BootFi...

[小技巧]快速地知道BIOS跑了哪些DXE Module和顺序(AMI EFI)

做EFI案子的朋友都碰到过这样的情况,有时候因为某些原因想知道BIOS各个Module执行的顺序或者到底有没有执行到,最笨的办法是用80 port一个点一个点的丢出来,不过我相信应该没有这么笨的人用这...
  • oddxyz
  • oddxyz
  • 2011年08月24日 17:29
  • 3175

UEFI Boot Flow系列之DXE

转自CeliaQianhj DXE: Driver Execution Environment 为什么要有DXE Phase? 大部分系统的初始化工作都是在DXE 阶段实现的。 DXE Pha...
  • LifeIce
  • LifeIce
  • 2012年09月15日 09:17
  • 712

UEFI Boot Flow 系列之 PEI Phase

PEI:Pre-EFI Initialization 为什么要有PEI Phase? 1. ROM空间的问题,所有的Code都没有压缩 2. Memory还没有初始化 3. Chipset没有...

UEFI Boot Flow 系列之 SEC Phase

为什么要有SEC Phase? 1. 需要用汇编语言来完成C无法处理的工作,如C语言无法处理CPU的特殊寄存器(MSR,MTRR,CRX)。 2. C语言需要Memory当成Stack来处理Loc...

UEFI Boot Flow系列

  • 2017年11月01日 02:56
  • 383KB
  • 下载

UEFI Boot Flow 系列之概述

转自CeliaQianhj 有图有真相: 1. SEC Phase (Security) 开机之后,系统开始执行第一条指令,此时就已经进入了SEC阶段。这时的Memory还没有被初始化,还不...
  • LifeIce
  • LifeIce
  • 2012年09月15日 09:00
  • 687

UEFI Boot Flow系列之 概述

有图有真相: 1. SEC Phase (Security) 开机之后,系统开始执行第一条指令,此时就已经进入了SEC阶段。这时的Memory还没有被初始化,还不可用,所以这一阶段最主要的工作...

UEFI Boot Flow 系列之SEC

转自CeliaQianhj   为什么要有SEC Phase? 1. 需要用汇编语言来完成C无法处理的工作,如C语言无法处理CPU的特殊寄存器(MSR,MTRR,CRX)。 2. C语言需要M...
  • LifeIce
  • LifeIce
  • 2012年09月15日 09:04
  • 587

05_DXE_Phase

转自: http://blog.yam.com/wttmama/article/33762726 這次要說的是 Dxe Phase 了。 這部份說真的,也花了我不少時間看。 主要還是在於瞭解它的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UEFI Boot Flow 系列之 DXE Phase
举报原因:
原因补充:

(最多只允许输入30个字)