實作一個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
請先 登入 以發表留言。