- UEFI Firmware Hierarchy
- Firmware Storage
- Firmware Storage 是非揮發性的memory儲存BISO或Firmware的code。UEFI的其中一個優勢是DXE和PEI 可以把code解壓到firmware storage外。 Firmware Storage最小的單位是UEFI Firmware File,再來是Firmware File System(FFS)、Firmware Volumn(FV)及Firmware Device(FD)。
- UEFI Firmware Files
- UEFI Firmware Files是最小/少的模組化的code,包含了Code及Data存放在FV中。每一個UEFI Firmware File都有Name、Type、Alignment及Size等四個attribute。 UEFI build tool會建立Firmware Files。Firmware Files的組成如下圖:
- 其中,entry point包含在Data區塊裡頭。
- Firmware File System
- Firmware File System(FFS)描述FV的file及free space的資訊。每一個FFS都有一個unique的GUID來連結FV。FFS參考FAT 32的作法,他的header如下圖。
- 同時,我們也利用UEFI Build tool建立FFS。
- Firmware Volumes
- 一個Firmware Volumes對應著一個logical firmware device。FV是由FFS來組成的,Firmware file則是FV組成的元件。FV可以表示flash的一部分或是多個flash或甚至一個partition或是network。所有PI component都存放在FV,在PI的過程中,必須透過FFS去讀取。
- Firmware Devices
- Firmware Device是指非揮發性的Storage。包含了Firmware Code、Firmware Data及Fault Tolerant。
- Firmware Device包含了FV Main放置了DXE Driver,FV Recovery放置了security及PEI code。我們以Recovery FV為例作解釋。Recovery FV包含了FFS放置著Boot Block Code(包含了PEI security phase code) 及Recovery code(包含了也許USB stack來讀取USB device)。
- Creating UEFI Firmware Files
- 我們如何產生UEFI Image呢?
- 撰寫C code
- 用build tool編譯產生Library及object file
- 產生的Library及object file是intermediate file,利用微軟的compiler把他們轉成PE/COFF格式的image。
- 如果是在Linux的環境,我們可以使用GCC來取代。
- Build Tool會將標準的header置換成UEFI header。
- Physical Memory Map
- 從下圖我們可以看到各個層級之間的關係。Firmware Device被load進system memory之後,它包含了firmware volume。而firmware volume又包含了許多Firmware File System,Firmware File System又放置著許多Firmware File。
- Firmware Storage
字體:小 中 大 | |
|
|
2013/07/31 00:24:49瀏覽4486|回應0|推薦0 | |
UEFI Firmware Hierarchy |
|
( 知識學習|科學百科 ) |