?
ARM處理器已經在智能手機市場占主導地位,并越來越成為整個嵌入式領域的主流。最近,ARM處理器也進軍服務器領域,追求計算連續性。
然而,歷史上,ARM系統沒有一個預引導固件的標準。這使得每個設計都有自己獨特的與所引導的操作系統緊密結合的模式。這種傳統的方法意味著固件開發者必須保持完全不同的代碼庫,即使系統可能使用的外圍設備(網絡,SATA接口,USB控制器等)和整個設計功能集是相同的。傳統的ARM設計依賴諸如UBoot,Redboot,或專有軟件啟動軟件包。
如何有效地開發生產這些產品來滿足快捷上市需求已成為一個挑戰。很有必要用某種形式的融合固件基礎設施來實現代碼重用的最大化,使這些產品可在有限的工程資源條件下實現更快推上市場,并同時添加創新功能。
統一可擴展固件接口(UEFI)對ARM系統的預引導固件是一個新機遇。 UEFI負責定義操作系統和系統固件之間以及固件驅動程序和系統固件之間的接口。此外,UEFI的平臺初始化(PI)負責定義固件到芯片之間和固件內部的接口。 UEFI是處理器架構無關。
ARM公司,蘋果,惠普和微軟的專家們一起確定了UEFI的ARM綁定。這樣,使用UEFI就可以最大限度地實現不同設計間的代碼重用,包括那些使用不同的處理器架構的設計。
歷史
在UEFI之前,有EFI(可擴展固件接口)。EFI最初創立于1998年,為的是讓使用英特爾安騰處理器的系統擺脫BIOS對設計大型計算機的束縛,例如,BIOS對原有8259中斷控制器的依賴,僅有64K的IO端口空間,僅有192K的OptionROM執行空間,單一的PCI段組。所有這些都影響系統的可擴展性。我們也預見到將要遇到的2.2TB主引導記錄(MBR)硬盤驅動器分區限制,并定義了新的GUID分區表(GPT)格式。
在擺脫束縛的同時,EFI還采用了一個模塊化的,靈活的可擴展體系結構,并使用高層次的編程語言。創建EFI時就考慮到它應與處理器架構無關,當時就支持安騰,x86和一個與處理器無關的字節代碼,叫EFI字節代碼(EBC)。
EFI是一個英特爾公司擁有的規范定義操作系統和系統固件之間,以及設備引導驅動程序和系統固件之間的接口。英特爾還創建了“框架”來定義系統固件內部接口以使EFI的實現進一步模塊化。
2005年,計算機行業決定組建UEFI論壇來規范EFI和“框架”所涵蓋的接口。英特爾貢獻了EFI和“框架”規范給UEFI論壇作為新的起點。名稱從EFI變為UEFI(U為統一的縮寫)標志著定義、推廣和使用的任務從此落在業界的肩膀上。

?
Figure 1: The UEFI Forum
由UEFI論壇定義的第一個規范(UEFI 2.0)在AMD和英特爾的幫助下定義了x64處理器的綁定。 “框架”也演變成了平臺初始化(PI)規范。UEFI的ARM綁定作為UEFI 2.3規范的一部分于2009年公布。
開源社區“tianocore.org”于2004年開始,采用BSD許可證。隨著ARM綁定的公布,蘋果和惠普向tianocore.org貢獻了UEFI的參考實現,其中對Beagle Board(beagleboard.org)的一個實現,使硅片供應商可為他們的硬件提供UEFI的驅動程序。 ARM公司近日貢獻了使用Cortex A9 多核處理器的Versatile Express參考平臺的核心代碼,以及
· 修復了ARM GCC工具鏈的構建環境
· ARM的RealView仿真底板代碼的更新
· 新的包含ARM參考平臺通用組件的ArmPlatformPkg
· 支持TrustZone控制器
· 支持多核
· 支持PL18x MMC卡控制器
· 一個特制的啟動設備選擇BDS庫以支持直接啟動Linux
有關在ARM上實現UEFI的優越性和UEFI論壇組織結構的詳細說明,請見下回分解。
現在我將探討它,特別是在ARM的系統上的優越性。我也會更詳細地描述UEFI論壇的組織結構。
評論