實作一個Pei Phase 的 Ppi (Protocol)

提供兩個service

1. PeiGetVariable

    讀取特定Variable (指定Name, Guid )

2. PeiCreateHob

    製作一個 Extension type 的HOB , 讓DXE 階段可以透過 HOB 讀取 指定的Variable 的資訊

 

注意事項 :

一. 在 Pei phase 之前 (PEI Memory 尚未 Init 之前) ,所謂的 RAM 指的是 Cache ,

     Menory Init 之後,RAM 指的是Main Momory 。

二. 在PEI Module 內的 存放 Global 變數的Data Segment位置 是 "ROM" ,所以在Pei Module

     內如果使用 Global 變數 是 Read-Only 。

三. 使用Hob 的限制

     1. 空間限制  (PHIT)

     2. Hob 內不能存放 Pointer , 因為不知道 甚麼時候 Memory Init ,所以位址可能會錯

     3. 盡量不要使用UINTN,因為 PEI Module 是使用 PE32 (32 bits) , 但進到 DXE 會是64 bits ,所以 使用

         UINTN 時,在PEI 是 32 bits ,在 DXE 是 64 bits。雖然Hob Size 不會有問題,但如果在DXE 階段時

         使用 Pei Hob Structure ,且裡面有包含 UINTN 型態的變數 ,就會造成 Offset 的偏移。

四. HOB always 在 RAM , 而非像是 Variable 可以存放在 NV

創作者介紹
創作者 linch0520的部落格 的頭像
linch0520

linch0520的部落格

linch0520 發表在 痞客邦 留言(0) 人氣( 4747 )