UEFI Boot Flow 系列之 PEI Phase

news/2025/2/23 14:03:58

转自:http://blog.csdn.net/celiaqianhj/article/details/6793211

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 代码流程图


http://www.niftyadmin.cn/n/1516369.html

相关文章

语言浅显,道理很深

无论你是男人,还是女人,做人,想成功,下面就是你必须要做到的: 1,这是个现实的社会,感情不能当饭吃,贫穷夫妻百事哀。不要相信电影里的故事情节,那只是个供许多陌生人喧嚣…

01_UEFI 的各 Phase

转自:http://blog.yam.com/wttmama/article/33619399 學習 UEFI 第一個要知道的是… m,重要的是它的 Phase 以下這張圖是學習 UEFI 一開始一定會看過的東西上圖是說…UEFI 在每個 Phase 在做的事的大略。而下圖則是,他歸出來的 Phase 以及更…

02_基本的UEFI架構

转自:http://blog.yam.com/wttmama/article/33757450 在 EFI 中,有一些基本的觀念必須先建立 先知道一些觀念、結構,有助於後續的理解。 幾個EFI的重要角色要記得1. System Table : 含有很多重要的資料結構以及系統 function 的 interface。2…

03_PEI_Phase

转自:http://blog.yam.com/wttmama/article/33760946 PEI Phase 是我第一次追 EFI 的 code 。 第一次看其實霧傻傻的~PEI Phase 在原版的 EDK 中,就已經存在的 code 它可以當成是 EFI Framwork 的一部份。下圖是是所有的 Phase ,應該很容易…

Maven简介(六)——Dependency

尊重原创,原文链接 7 Dependency介绍 7.1 依赖的传递性 当项目A依赖于B,而B又依赖于C的时候,自然的A会依赖于C,这样Maven在建立项目A的时候,会自动加载对C的依赖。 依赖传递对版本的选择 假设A依赖于B和C&…

04_PEI之InstallPpi演算法

转自:http://blog.yam.com/wttmama/article/33762035 m,這部份是第一個理解的東西 但,說真的,它對BIOS 真的沒幫助,只能幫你瞭解 PEI 的 IntallPpi 是怎麼做的而已。這個內容可以套用在InstallPpiLocatePpiNotifyPpi…

Maven简介(七)——整合Eclipse

尊重原创,原文链接 8 Maven整合Eclipse Maven整合Eclipse就是在Eclipse中安装Maven的插件,这样我们就可以直接在Eclipse上使用Maven,而不需要去命令窗口敲Maven命令了。有两个Maven插件我们可以用来整合Eclipse,实际应用中安…

05_DXE_Phase

转自: http://blog.yam.com/wttmama/article/33762726 這次要說的是 Dxe Phase 了。 這部份說真的,也花了我不少時間看。主要還是在於瞭解它的思路和架構。又要套用這張圖了。看看上圖的 DXE 在做啥…Intrinsic Service … ( 應該是 Dxe Foudation )再…