天天看点

05_DXE_Phase

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

這次要說的是 Dxe Phase 了。

這部份說真的,也花了我不少時間看。

主要還是在於瞭解它的思路和架構。

05_DXE_Phase

又要套用這張圖了。

看看上圖的 DXE 在做啥…

Intrinsic Service … ( 應該是 Dxe Foudation )

再來還是一樣,Dispatch ,Dispatch Device , Bus or Service Driver。

然後進入 Boot Manager ( BDS Phase )

這張圖真的很好用吧?mm…

接下來導入正題…

從 PEI -> DXE 到底做了什麼事,DXE 本身又做了什麼事呢。

一樣,看圖吧,如下圖

05_DXE_Phase

這一張,真的是好圖,它表現了很多事。

1. PEI 會留下 Hob 給 Dxe Foundation 使用( 圖有 ,也可以看 PEI Phase 說明 )

2. Hob 本身含有重要的 Information ,一樣如圖

3. Dxe Foudation 和 Dxe Drivers 透過 Achitecture Protocols 和 Motherboard 溝通( 其就是指硬體的意思 )

  換句話說~ Dxe Foudation 其實是 Depend on Hob 的。這很重要,這樣才能安排 Resource。

05_DXE_Phase

而 Dxe Foudation 到底有什麼東西,之前其實大概有說過,會建立 System Table 

而 System Table 有什麼東西呢?如下圖所示

 a. Boot Service Table 

 b. Runtime Service Table

 c. Configuration Table

 d. Active Consoles

05_DXE_Phase

其中,最重要的,其實就是 Boot Services, Runtime Services ,及可以透過 Boot Serivices Access的Handle Database 。

1. Boot Services

可以看到它含有很多 Service ,其中 之前提到過的 Event , Timer  , Image Serives

還有,Memory Service。都是寫 Dxe Driver 不可或缺的 Services 。

2. Runtime Services 

其中最重要的應該就是 Variable Serives 用來存 non-Valitile Data。

3. Dxe 必須含有的 Dispatch Services。

還有其它拉里拉喳…

有一張圖,其實有大概含入 Foudation 需要啥,如下所示,其實剛好就是System Table藍底的部份

05_DXE_Phase

還有一張圖,也算是蠻經典的

05_DXE_Phase

暗紅色,其實就是 System Table 可連到的 Architecture Protocols 。

而比較特別的是 Configuration Table ( 看 System Table 那張圖 )

其實是可以放自己喜歡的東西,是可擴充的。還不錯,目前是沒塞啥,但是~如果你有擴充需求

是可以放 reference 在這裡的。

整個 Dxe Phase 花了不少 code 在 Initialize 。

然後會進入 Dispatch 。

Dispatch 在 Dxe Phase 就很講究了,這又要看 PI Spec 了,裡面有張圖如下

05_DXE_Phase

一個 Dxe Driver 它的週期就是這樣,特別的是它的 Dependence 是用 recursive 來做的。

這裡的 Dxe Driver 也是要從 FV 找。

但這裡的 Firmware file 是有壓縮的。( Foudation 有提供解壓縮 )

當 Dispatch 完畢後,就會把 Boot Manager 這個 Dxe Driver 拉出來進入 BDS

其實做的大項目事情和 PEI 很像, Initialize , Dispatch , next Step 。

但它很聰明的分開了,以責任的方式分開了。

而這一段的目的是什麼?別忘了,看圖

05_DXE_Phase

應該有 fu 吧?

目前談到的是 Dxe Phase 在 Framwork 中,做了什麼。

但很多事沒談到,這裡稍為寫一下…

1. EFI Driver Model

 1.1 Device Driver

 1.2 Bus Driver

 1.3 Device Path 的說明

 1.4 Driver Binding Protocol 。

2. 這一階段的 Driver 都在做啥?

 這其實就是接下來要研究的東西,每一個 Driver 都是一個課題。 

3. 重要的 Dxe Serivce 

4. BDS 其實還是在 Dxe Phase 裡,但它是 DXE 的最後一部份了。

5. SMM Mode, SMI

6. CSM 

7. ACPI