找尋幸福的方向

關於部落格
  • 57750

    累積人氣

  • 12

    今日人氣

    0

    訂閱人氣

01_UEFI 的各 Phase

m,重要的是它的 Phase
以下這張圖是學習 UEFI 一開始一定會看過的東西
 

上圖是說…UEFI 在每個 Phase 在做的事的大略。
而下圖則是,他歸出來的 Phase 以及更細一些的說明。


雖然前輩說他沒追過這些 phase 的 code也可以做事,
但,我還是蠻鼓勵有志青年,還是要追一下,每一個 phase 大概快的話可以花一星期看一個。

當這張圖,你愈來愈懂的時候,表示你對 "UEFI 的流程開始愈瞭解了"
但,注意,這完全幫不了你什麼,你只知道"UEFI的流程而已",還不知道"BOIS"的。


從上圖來說,UEFI 有幾個重要 Phase。
SEC ->PEI->DXE->BDS  這四個最重要( 我也只看過這四個 )

目前以總結式的來說。

一開始 BOOT 時,CPU 所有的 resource 都還沒準備好。
SEC ...
  我不大知道它在做啥,但大致上就是準備好 Cache ( 因為 Ram 還沒準備好 )
PEI...
  這時候資源短缺,就是做一些進 DXE 前要做的準備工作,這裡做的事都盡量的少。因為速度不快
  最重要的就是 Memory 的 Init。而 PEI -> DXE 的資料交換,則是利用 Hob ( Hand-off Block )
DXE...
  這裡就是  Port Driver 的主要 Phase 了。這裡會做很多很多事( 廢話,但,真的… ),準備的東西包含
  1. 一般 Routine
  2. 可以給別人用的 Handle
  3. Binding Protocol Handle
BDS
  這裡則是開始 Connect 需要的 Device 。進行 "Boot",這裡也是進入 setup Menu 的點
  在這時候 input , output 才明顯有作用,例如  螢幕與鍵盤…以及進入 OS。

以上的Phase 其實一開始聽沒啥fu,但,先記著,然後,下一階段就是開始追追各 Phase 的 code了。

PEI,DXE
都會準備自己的 foundation。

PEI 一開始用的是 cache ,會準備好RAM,內部有演算法去 dispatch 需要的 PEIM( PEI Module )
而重要資料會存在 Hob

DXE 則是使用 RAM ,並把 HOB 的資料拿出來初始化,用來準備它的一些 Foudantion
當然,它也會 Dispatch 很多東東。這是給 Designer 設計的。之後會提到 Dispatch 後的 driver
都會成為一個 Handle 。 Handle 是一個 UEFI 拿來代表一個抽象物體的單位( 我自己的稱乎 )

BDS
會去將 Device 有效化,這個動作一般稱為 Connect ,Connect 啥?在UEFI 裡面這稱為 EFI Driver Model 。Host Controller 會去 Connect 適當的 UEFI Binding Protocol 的 Handle 。

解釋一下:
Connect: 搜尋並連接適合的 Driver。
Binding Protocol Handle : DXE Driver 在被 Dispatch 時,如果它是一個 EFI Driver Model 的類型,那它會自行安裝這東東。

而符合 EFI  Driver Model 的 driver 有兩類,一個叫 Bus Driver ,  一個叫 Device Driver ,它有它的設計理念。目前只要知道 90%以上的 Binding Protocol Handle 所在的 driver 都是這兩類
為什麼要說90%?因為10%我也不瞭…

回到 BDS 。將 Device 有效化,就是讓相關 Driver 有作用,做完 Connect  就可以了。

而 Foundation 我覺得需要解釋一下:
PEI , DXE ,  BDS 都有 稱為 Foundation 的東西。
這代表了他們這個 Phase 可以使用的 "公用資源",例如 DXE 的 System Table 中。提供的 Boot Service.
如下圖


裡面有一些就是 Foundation。Framwork 提供給其它 driver 使用的,就是囉。
聽不懂看不懂也沒關係,重點這是我自己的紀錄~ㄏㄏ

這部份就到這裡了。



 

相簿設定
標籤設定
相簿狀態