PEI笔记

PEI phase

在PEI的階段主要負責下列的事情。
1. 在記憶體初始化的前後做一些routine。
2. 把HOB的資訊交代好,如:memory, FV location。
3. 把控制權交代到DXE階段。
4. crisis recovery and S3, S5, normal boot。
因為這些重要的因素,所以PEI要求被放在fault-tolerant FV。
 

PEI Service

PEI foundation建立一個system table叫做PEI service table,是可以被所有的PEIMs所存取的。因為記憶體的空間只有在PEI最後的階段才可以使用,
所以PEI所可以使用的資源比起後面的DXE phase變的非常的有限。因為PEI foundation和暫時可以使用的RAM,在build time並不知道,所以PEI service table的指標必須要pass到PEIM's entry point,同時也是PPI的一部分。
PEI foundation提供以下的服務。
1. PPI Service:管理PPI並在必要時,從temporary ROM裡頭的database呼叫他。
2. Boot Mode Services: 管理系統的boot mode( s3, s5, normal boot, diagnostic, etc.)
3. HOB Service: 創造一個HOB的資料結構,並傳到下一個DXE階段。
4. Firmware Volume Service:走訪FV的FFS(Firmware File System)去找出PEIMs,並找出位在Flash device的Firmware file。
5. PEI memory Service:提供記憶體管理的服務在初始化記憶體以前,或是以後。
6. Status Code Service:提供錯誤回報的服務,例如:port 80h。
7. Reset Service:提供cold or warm系統的重啟動。
 

PEI foundation(reside in Boot Firmware Volume, BFV)

是一個image。主要有四種功能。1. 成功的dispatch peims . 2.維護boot mode 3. 初始化memory   4.呼叫DXE loader
PEI foundation 是與底層硬體有關的一層。他專門處理和指令集相依的平台結構,並且提供統一的介面給PEIMS 用c語言跨平台使用。
例如: IA-32平台有相對的PEI Foundation binary,Itanium processor有相對應的 PEI foundation binary。
 

PEIMS ( Pre-EFI Initialization Modules )

PEIMs他類似DXE drivers在DXE層扮演的角色。是由PEI Foundation來dispatch。在memory pool的環境裡頭,PEIMs是很難進行溝通的。因此在PEI裡頭提供
了一個機制讓PEIMs可以呼叫其他PEIMs的interface( PPIs )。在PEI的環境裡頭,我們盡可能的使用最少的資源來完成必要的工作。雖然PEI的code和SEC的code
沒有編譯在一起,但是有定義說PEI foundation要放在FV0也就是BFV的地方,這樣SEC最後才能喚起PEI foundation。
 

PPIS ( PEIMs to PEIMs Interfaces )

PPIs在EFI_PEI_PPI_DESCRIPTOR的資料結構裡頭。他的指標包含了指向這個資料結構和service set的用途。
有分做兩種
1. Architectural PPI:提供介面給PEI foundation做使用。  2. Additional PPI:給peims之間溝通所使用。
PPIs是放在相對應的PEIMs裡頭。當我們要做一個PPIs給其他程式使用時使用InstallPpi() or ReinstallPpi()。
若是要使用別的PEIMs的PPIs時使用LocatePpi()找出相對應的PPI。
 

PEI Diapatcher

這是在PEI foundation裡頭的一個state machine,他會衡量每個FV裡頭的PEIMS之間的相依性。決定哪些PEIMS應該要先Dispatch。而他們之間的相依性
是由PPIs所決定,PPIs裡頭敘述了PEIMs之間的相依性。
再一開始的時候PEI dispatcher會去PEI foundation裡頭的PPI Database檢查哪些PPI已經被install如果已經被install,他PEIM的dependency expression會被評估成true,代表所屬的PEIMs已經可以被dispatch。在PEI dispatcher評估過全部FV裡頭所有PEIM的dependency expression發現全部都是FALSE以後,代表已經沒有PEIM可以被dispatch,PEI dispatcher結束,在來PEI foundation把control foward給DXE IPL PPI,進入DXE phase。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值