05_DXE_Phase
来源:互联网 发布:黑马程序员 达内 编辑:程序博客网 时间:2024/06/08 16:02
转自: http://blog.yam.com/wttmama/article/33762726
這次要說的是 Dxe Phase 了。
這部份說真的,也花了我不少時間看。主要還是在於瞭解它的思路和架構。
又要套用這張圖了。
看看上圖的 DXE 在做啥…
Intrinsic Service … ( 應該是 Dxe Foudation )
再來還是一樣,Dispatch ,Dispatch Device , Bus or Service Driver。
然後進入 Boot Manager ( BDS Phase )
這張圖真的很好用吧?mm…
接下來導入正題…
從 PEI -> DXE 到底做了什麼事,DXE 本身又做了什麼事呢。
一樣,看圖吧,如下圖
這一張,真的是好圖,它表現了很多事。
1. PEI 會留下 Hob 給 Dxe Foundation 使用( 圖有 ,也可以看 PEI Phase 說明 )
2. Hob 本身含有重要的 Information ,一樣如圖
3. Dxe Foudation 和 Dxe Drivers 透過 Achitecture Protocols 和 Motherboard 溝通( 其就是指硬體的意思 )
而 Dxe Foudation 到底有什麼東西,之前其實大概有說過,會建立 System Table
而 System Table 有什麼東西呢?如下圖所示
a. Boot Service Table
b. Runtime Service Table
c. Configuration Table
d. Active Consoles
其中,最重要的,其實就是 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藍底的部份
還有一張圖,也算是蠻經典的
暗紅色,其實就是 System Table 可連到的 Architecture Protocols 。
而比較特別的是 Configuration Table ( 看 System Table 那張圖 )
其實是可以放自己喜歡的東西,是可擴充的。還不錯,目前是沒塞啥,但是~如果你有擴充需求
是可以放 reference 在這裡的。
整個 Dxe Phase 花了不少 code 在 Initialize 。
然後會進入 Dispatch 。
Dispatch 在 Dxe Phase 就很講究了,這又要看 PI Spec 了,裡面有張圖如下
一個 Dxe Driver 它的週期就是這樣,特別的是它的 Dependence 是用 recursive 來做的。
這裡的 Dxe Driver 也是要從 FV 找。
但這裡的 Firmware file 是有壓縮的。( Foudation 有提供解壓縮 )
當 Dispatch 完畢後,就會把 Boot Manager 這個 Dxe Driver 拉出來進入 BDS
其實做的大項目事情和 PEI 很像, Initialize , Dispatch , next Step 。
但它很聰明的分開了,以責任的方式分開了。
而這一段的目的是什麼?別忘了,看圖
應該有 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
- 05_DXE_Phase
- 05
- 05
- 05
- 05
- 05
- 05/07/05
- 05/09/05
- 05/10/05
- 10-05-05
- 2008/05/05
- CHAPTER 05:EX 05
- 2010-05-05
- 10 05 05 繁杂
- 2015-05-05
- 2005.10.05
- 2005.11.05
- 2006.01.05
- Delphi6开发人员指南学习杂记4-变体类型
- recvfrom 错误 GetLastError() SOCKET_ERROR 100142008年12月23日 星期二 11:48 A.M.int PASCAL FAR recvfrom( SOCK
- c语言socket编程指南 (转)
- jrtplib学习
- 去掉gmail右部和底部的广告
- 05_DXE_Phase
- 团队开发的“软约束”和“硬约束”
- C#判断操作系统类型总结
- Solaris 网络安装 操作系统
- 用Java实现FTP批量大文件上传下载
- 实现类似手机QQ的可折叠固定标题列表
- architecture of kernel
- 06_DXE_InstallProtocolInterface
- 提供Magento上一个和下一个产品的简单帮助(Helper)类