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 使用的,就是囉。
聽不懂看不懂也沒關係,重點這是我自己的紀錄~ㄏㄏ
這部份就到這裡了。
學習 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 使用的,就是囉。
聽不懂看不懂也沒關係,重點這是我自己的紀錄~ㄏㄏ
這部份就到這裡了。
相关文章推荐
- UEFI Boot Flow 系列之 SEC Phase
- UEFI Boot Flow 系列之 SEC Phase
- UEFI应用与编程--HelloWorld(01)
- 『ExtJS』01 001. ExtJS 4 类的定义
- PAT 01-2
- Swift 基础_01
- 变种的01背包,POJ - 2184
- 大数据面试-01-大数据工程师面试题
- Unity3D之结合TexturePacker使用显示贴图Part01
- OpenStack-01
- UEFI模式下安装Windows 10和Fedora 23双系统碰到的问题和解决办法
- NATS_01:NATS基础介绍
- 01前端基本功-CSS01-项目规划
- 01背包问题
- nyoj 325 zb的生日 【01-背包】
- 团队计划会议 01
- python基础学习笔记01
- 01背包之深度优先搜索法
- 01: 01背包问题(背包九讲)