Monday, April 29, 2013

UEFI Overview from Rookie

 

而UEFI(Unified Extensible Firmware Interface)演進過程簡單來說就是2005從Intel所釋出的EFI而衍生而來,主要是希望能夠取代 BIOS的呆版功能和一些限制,就有如<3>所提到IA32架搆的CPU只能訪問1MB的基本內存,影響了程序員的創造性。同時,各種板卡上的BIOS在映射到系統內存中的時候,受到128Kbytes的大小***。這使得一台計算機不能安裝太多的板卡,否則他們的BIOS的容量將很容易突破128Kbytes。

Intel Platform Innovation Framework for EFI,讓整個EFI流程非常明確,在設計上真可以說是如虎添翼,當然一好必有一弊,這樣的一套規範相對編譯出來的Machine Code一定很肥大。在硬體層面來說,需要的硬體資源相對需要提昇許多,但已研發角度來說,可說是大幅減少撰寫時間,我想這省下可是在這一大筆的專業人事成本上,這取捨之間,以長遠的角度來看或許UEFI有它存在的必要性。

image

在大略的掃過UEFI的架構後,它真的可以說是迷你型的OS。如上圖所示,一個EFI image涵蓋了Driver和Application,此外也有類似排程的Event功能, 想想這三個功能就有點OS的味道了。

image

UEFI Architecture提供一個Handle database的機制來供給UEFI System Table使用。

UEFI System Table

  • UEFI Boot Services
  • UEFI Runtime Services(RS)
  • Protocol Services

Protocol負責提供功能函式給主要的兩個程序(UEFI Boot和UEFI Runtime)所使用。

image

UEFI主要是用Framework的概念下去設計,目的是為了區分工作內容,讓設計者能夠更明確的排除問題且加速發展速度。而它主要區分六大步驟,分別為SEC(Security),PEI(Pre-EFI Initialization),DXE(Driver Execution Envronment),BDS(Boot Device Seletction/ BD Service),TSL(Transient System Load),RT(Run Time)。

我們可以在Shell下這段指令,讓我們能更加了解概念。Shell phase已經是透過BDS所選擇出的小型OS,使用者可以透過console來控制或查詢整個UEFI系統狀況。

Shell> dp –d

image_thumb1

Reference

<1>http://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface

<2>http://blog.yam.com/wttmama/article/33619399

<3>http://stenlyho.blogspot.tw/2008/10/efi.html

<4>http://www.intel.com/content/www/us/en/architecture-and-technology/unified-extensible-firmware-interface/efi-homepage-general-technology.html

No comments:

Post a Comment

Register Transfer Level Design with Verilog (1) [ebook]

設計程式之所以有趣不外乎是它的千變萬化,同樣的結果卻有不同的寫法。 但這些不同寫法當中也並沒有分誰對誰錯,也沒有制定標準來規範何事該用何解。 這也就是我們設計者的珍貴!! [1] Primitive Instantiations 在Verilog中最基本的邏輯...