EFI各Phase比較
|
SEC |
PEI |
DXE |
BDS |
---|---|---|---|---|
用途簡介 |
|
|
|
建立好boot時所需的console環境 依照boot順序到boot device載入OS loader將控制權交給OS 如果fail的話,將控制權轉回DXE |
組成元件 (核心部分) |
|
PEI Core
|
DXE Core
|
|
組成元件 (執行模組) |
|
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
限會員,要發表迴響,請先登入