您的位置:首页 > 产品设计 > UI/UE

01_UEFI 的各 Phase

2011-12-19 22:40 399 查看
转自:http://blog.yam.com/wttmama/article/33619399

學習 UEFI 第一個要知道的是…

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 使用的,就是囉。

聽不懂看不懂也沒關係,重點這是我自己的紀錄~ㄏㄏ

這部份就到這裡了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: