EFI各Phase比較
|
SEC
|
PEI
|
DXE
|
BDS
|
用途簡介 特點
|
-
開機第一個執行的程式碼
-
驗證平台與程式碼的可靠性
-
在Cache內建立暫存memory供後續phase執行
|
-
初始化
-
處理器
-
晶片組
-
主板
-
提供下一個phase一個完整的執行環境,最重要的是找到實體記憶體
-
與下一個Phase間用HOB溝通
-
處理S3 Resume / Recovery
|
-
初始化多數系統元件
-
提供載入作業所必須的環境
-
提供作業系統EFI Services (EFI System Table)
|
建立好boot時所需的console環境
依照boot順序到boot device載入OS loader將控制權交給OS
如果fail的話,將控制權轉回DXE
|
組成元件
(核心部分)
|
|
PEI Core
-
Service
-
Dispatcher
|
DXE Core
-
Service (Architecture Protocol)
-
Dispatcher
|
|
組成元件
(執行模組)
|
|
PEIM
|
DXE Driver
|
|
相關
|
|
PPI
HOB
|
Protocol
|
|
進行到下一個Phase的條件
|
|
執行完所有PEIM
最後執行DXE IPL進入DXE phase
|
執行完所有DXE Driver
最後Dispatcher呼叫BDS.Entry()
|
|
解釋名詞
通用
名詞
|
敘述
|
FV(Firmware Volume)
|
存放firmware的儲存空間,有可能有多個Firmware Volume,一開機執行的程式碼放在Boot Firmware Volume內
|
FFS
|
Firmware Volume的檔案系統
|
SMM Mode
|
BIOS會提供SMM handler
Runtime phase之後會有部分的DXE core service可以在此階段用
|
HII
(Human Interface Infrastructure)
|
提供architecture for setup code
包含String & Font & Form(IFR)
|
Form (Setup)
|
用IFR(Internal Form Representation)表示 (從VFR轉換),架構類似HTML
|
CSM
|
功能:
提供legacy Os會用到的interrupt & table
載入option ROM
Boot legacy OS (Only support ACPI capable Legacy OS)
限制:
Not all DOS program will work
|
PEI & DXE
名詞
|
敘述
|
PEI / DXE Service
|
整個EFI架構者提供的核心function,提供執行模組一些會用到的函式,執行模組就可以用這些service function完成所期望的目標(初始化硬體元件...等).
|
Dispatcher
|
負責驗證,載入,執行執行模組的程式,並且提供執行順序(與模組間相依性有關)的功能
|
PPI (PEI) / Protocol(DXE)
|
PEIM (PEI) / Driver(DXE) 間溝通橋樑,包含
Data
Function
Notifications
|
Notification
|
一種通知的機制,或者可以稱為call back. 平常程式的執行都是你指定要執行什麼程式碼,然後執行. Call back而是Programmer提供的一個函式給系統,你向系統(PEI Core/DXE Core)註冊在某個情況下, 要呼叫這個函式,讓Programmer去處理對應的情況下,要做的事情.
比較: Function-Programmer主動做某些事 , Notification被動被別人呼叫來做事
|
PEI
名詞
|
敘述
|
HOB
|
PEIM產生的data,用來傳遞給資料給DXE, HOB為Link List的形態
第一個HOB為PHIT (記錄Boot Mode)
最後一個HOB為Termination HOB
記錄memory, firmware device相關資訊
GUIDed HOB可以存放自定的information
|
S3 Resume
|
記憶體恢復到sleep之前,並且不執行DXE
|
DXE
名詞
|
敘述
|
SOR
(Schedule On Request)
|
設在DXE Driver的相依敘述內,若有此mark表示預設不執行這個DXE Driver. 會有鄉對應的DXE Driver去清除SOR的標籤,讓原本有SOR mark的DXE Driver執行.
|
|
|
EFI Architecture Protocol
名稱
|
功能
|
Security
|
驗證firmware volume上的檔案
|
CPU
|
管理CPU cache, interrupt
取得頻率,processer based timer
|
Metronome
|
delay功能
|
Timer
|
提供Timer功能,讓Core在間隔某段時間後,來呼叫Programmer所提供的Notification function
|
BDS
|
DXE進入BDS的進入點
負責建立boot用的console
|
Watchdog Timer
|
提供timeout機制,若指定的時間內沒有執行完指定的code,則Core會reset或執行某段程式碼之後reset
|
Runtime
|
轉換runtime service & driver所使用的實體記憶體位置到與作業系統相同的虛擬記憶體位置
|
Variable
|
存取環境變數
|
Monotonic Counter
|
取得monotonic counter (64 bit,每次取得都比上次大)
Low 32bit : reset清成0, 每次GetNextMonotonicCount()加1
High 32bit: 非揮發性的,Low 32bit overflow,或系統reset時加1
|
Reset
|
重置系統 (重開機)
|
Status Code
|
輸出Debug code到外部裝置
|
Real Time Clock
|
存取真實世界的時間
|
DXE Driver Type
種類
|
Type 1
|
Type 2
|
Driver Model
|
Non EFI Driver Model
|
EFI 1.1 Driver Model
|
執行順序
|
In early in the DXE phase
|
|
執行動作
|
提供protocol interface for DXE core
|
提供特定硬體的軟體function
有Driver binding protocol
BDS階段會Connect IO driver
|
資料來源:
http://blog.xuite.net/sammy902583/DontThink?st=c&p=1&w=2439241
|