03_PEI_Phase

转自:http://blog.yam.com/wttmama/article/33760946

PEI Phase 是我第一次追 EFI 的 code 。

第一次看其實霧傻傻的~


PEI Phase 在原版的 EDK 中,就已經存在的 code 
它可以當成是 EFI Framwork 的一部份。

下圖是是所有的 Phase ,應該很容易觀察到 PEI 是哪個。


由上圖可以知道,這裡要做的事如上圖
CPU Init
Chipset Init
Board Init
但實際上我不知道它在哪@@~ㄏㄏ。

有關 PEI 的內容,其實是有 spec 可以看的,可以去查 PI Sepc
PI Spec ( Platform Implemntation Spec )

PI Spec 中有一張圖,它把 PEI Phase 的大流程指了出來。
解釋一下專有名詞
PEIM : PEI Module
Entry Point : Module 被 Dispatch 時的進入點

這張圖的的意思解釋一下就很簡單了。
PEI Phase 必須準備一下它的 Foundation ( 想像成環境 )
所以必須做 Initialize 。
做好 Initialize 後,就可以進行 Dispatch 了。
Dispatch 的對象是啥?
就是 PEI Module 囉!

PEI Module Dispatch 完後,就會進入 DXEIPL 。
DXEIPL 是啥?就是剛剛 Dispatch PEIM 的其中一個。

而這個 Phase 最重要的,就是 Init Memory 。
也就是 PEIM 中有一個是 Memory 的 Module 。( 俗稱 MRC Init)
當 Memory 有  Init  後,內容會有一個技巧,會讓整個 PEI Phase 重做一次
做記憶體資料的搬移。

之後就會進入 DXE Phase 了。
( 當然,dxeipl 也負責 Crisis , S3 之類的動作,但不提 )

這邊的 code 很簡單,但有幾個點必須深入討論。

1. cache mode , memory mode 
PEI 在一開始是 cache mode  ,在 Memory Initalize ok後才會使用 Memory 。

2. HOB 的使用
Hand Off Block ,在 PEI 與 DXE Phase 中,會留下的資料只有一樣
就是 Hob 的 Data。
EFI 有提供 Foundation Service 讓 PEIM 可以 set Data 到 HOB 裡。
( 我忘了 Variable 能不能用… )

以下是 SPEC 挖出來的例圖,它理論上是這樣用的。
PHIT ...我忘了它是什麼的縮寫了,它是 HOB 這東東的開頭。
為什麼是開頭,因為它是一種結構的集合。
詳情請看 PI Spec。( 其實我個人很討厭這句話…因為就是因為看不懂才要找教學啊… )
多說一點好了
HOB 它是多個串起來的,它有分 Type 。
頭是 PHIT ,尾是 END_OF_HOB 。
中間就是上圖描述的東西了,每一個都有一種 Type。
但~真正的詳情,真的要看 SPEC 。以上。
m, 想到有一張圖,再補一下。這是另一種角度的 HOB 方塊圖,參考一下。


3. PEIM 哪來的?
PEIM 其實它存在 ROM 裡面,但,也是有格式的。
PEIM 它會存在 FV( Firmware Volume )中。
這又牽扯到另一本 spec 了,叫 Firmware Storage Spec
PEI 的 Foundation 會提供 Serivce 去 access 這些東西( 應該也有 hob )
看一下spec 提供的圖
由圖可知,它是一個一層包一層的結構
Firmware Volume 可以放很多 Firmware Files
而 Firmware Files 可以有很多 Sections
每一層都有一個 Header 。
程式就是負責讀懂 Header 就行了。
另一種圖長這樣
會意去吧~~它就是長這樣。
解析完,那它就是 PEIM 了。

4. Dispatch 演算法。
這是 Option ,可看可不看,我個人是沒看,但懂大概的概念。
主要是如下
 a. 去 FV 找 PEIM ,有的話,就抓出來做 Dispatch
 b. 如果 該FV 沒 PEIM 那就就找下一個 PEIM( 因為別的 Volume 理論上是可以存在獨立的 PEIM 的 )
 c. 給 Dispatch 過的 PEIM 做個記錄,下次重找時就不要再 Dispatch 了。
 d. 處理 MRC Init 的事。


m…大概是這樣子,沒想到其它事了。
以上…
下次換介紹 DXE , ipl 主要是判斷 BootMode ,所以就不說了。

你可能感兴趣的:(03_PEI_Phase)