UEFI Boot Flow 系列之 PEI Phase

 

PEI:Pre-EFI Initialization

为什么要有PEI Phase?

1. ROM空间的问题,所有的Code都没有压缩

2. Memory还没有初始化

3. Chipset没有初始化

PEI Phase的特性:

1. 在ROM上执行

2. 都是没有被压缩的代码

3. PEI Core与硬体没有关联

PEI Phase的任务:

1. 基本的Chipset初始化

2. Memory Sizing

3. BIOS Recovery

4. S3 Resume

5. 切换Stack到Memory (Disable CAR, Enable Cache)

6. 启动DXEIPL(DXE Initial Program Loader)

PEI Phase包含的两个部分:

1. 一个PEI Foundation,存在于BFV。

2. 一个或多个PEIMs(Pre-EFI Initialize Module),存在于FVs。

一、关于PEI Foundation

PEI Foundation存在于FV0(即BFV),它是在SEC阶段被发现并通过验证的,这也就允许PEI阶段能够确定FV文件有没有被破坏掉。

PEI Foundation负责:

1. Dispatching PEIM

2. Maintaining the boot mode

3. Initialize permanent memory

4. Invoking DXEIPL

PEI Services

PEI Foundation建立了一个system table叫做PEI Services Table,它对所有的PEIM都可见。PEI Services的分类有:

二、关于PEIM(Pre-EFI Initialization Modules)

PEIM就是一些可执行的二进制代码,它封装着一些关于Processor,chipset,device或者是平台相关的一些功能。由PEI Foundation负责来Dispatch这些PEIMs。

大部分的PEIM都存在于ROM上,它们是没有被压缩的,只有极少数的PEIM为了提高性能而存在于RAM上,是被压缩的。

因为PEI Phase存在的环境只有极少的Hardware Resource可用,且PEIM大都位于ROM上,所以强烈建议PEIM只做尽可能少的,不得不做的工作来满足DXE阶段执行的要求。

PPI(PEIM to PEIM Interface)

PEIM与PEIM沟通是通过PPI,即PEIM to PEIM Interface。PPIs包含在数据结构EFI_PEI_PPI_DESCRIPTOR中,由一个GUID和一个指针组成。

一个PEIM通过PEI Service InstallPPI()和ReinstallPPI()来发布一个有效的PPI到PPI Database;

其他的PEIM通过PEI Service LocatePPI()来找到相关的PPI。

PEI Phase 代码流程图

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值