UEFI 簡介
Unified Extensible Firmware Interface
OS
platform firmware
之間溝通的介面。例如跟一般都會有firmware的GPU 卡。
UEFI的出現是INTEL為了要取代傳統的 BIOS(Legacy BIOS) 然後發展EFI最後移交出去改名成UEFI
1. Legacy BISO的執行環境都是在16 bit下,之後的CPU儘管支援64 bit還是必須"額外"實作支援16 bit 環境以支援BIOS執行。於是像INTEL的vendor就想改變這點取代傳統的BIOS
2. 16 bit的CPUaddressing可以到2^20 Bytes ,也就是說極限到1024 KBytes,這當然大大的限制了BIOS可以做的事情。
3. 對開發者來說,Legacy BIOS多以ASM來開發,懂的人相對地少且對於開發速度也會有程度的受限。
Unified EFI Forum
2. Intel Release了代號為Tiano 的EFI的實作後,我們可以直接從SourceForge去抓代號為Tianocore的Opensource project.
UEFI and Platform Initialization(PI)
前一篇說明了UEFI的大概,也提到了Tiano這個OpenSource Project. 這一篇將簡介UEFI的PI。
The Intel Platform Innovation framwork for UEFI
The Framework
" 是一個符合UEFI規範的一個firmware實作。這一個幾乎以C來實作的framework支援了大部分的Intel CPU family。
而目前,這個framework已經被更全面支援的UEFI Platform Initialization (PI)所取代了。UEFI和PI有兩個主要不同的點。
- UEFI定義了OS, add-in driver和system firmware之間的Interface。(下圖藍色部分)
- PI則定義了偏向Implementation的部分 e.g. 從 power on 到移交control給OS之間的所有操作。 (下圖綠色部分)
PI負責從開機到UEFI可以work之間的流程,舉例來說,UEFI是負責跟OS做溝通,然而,UEFI本身並不處理memory initialization、recovery或platform initialization等等跟platform有關的事情。這些都是由PI做掉的。
另外,UEFI跟PI的SPEC都是UEFI Fourm所制定的。
從開機的過程來看,順序是由左到右。下面一一解釋各個流程在做什麼。
- SEC
SEC是Security的簡稱,這一個phase是開機後第一個執行的phase。任務是確保在reset 或 power on之後的integraty是完整的。
- PEI
PEI是pre-EFI initialization的簡稱。任務是先做CPU、Chipset及Memory等等的初始化。在這一個階段,PEI初始化基本的環境 for下一個 phase。另外,PEI執行完會有Hand-off block (HOB)傳給DXE
- DXE
Driver Execution Environment這個階段負責enumerate及init device、初始化UEFI services、 及 protocol等等
- BDS
Boot Dev Select這邊負責how and where to boot OS.
- TSL
Transient System Load這個階段將control transit 給OS
- RT
Runtime的階段已經脫離boot sequence了,這個階段是由OS執行中
- AL
After Life指的是系統reboot或shutdown
|