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

Figure 1: The UEFI Forum
由UEFI論壇定義的第一個(gè)規(guī)范(UEFI 2.0)在AMD和英特爾的幫助下定義了x64處理器的綁定,。 “框架”也演變成了平臺(tái)初始化(PI)規(guī)范,。UEFI的ARM綁定作為UEFI 2.3規(guī)范的一部分于2009年公布。
開(kāi)源社區(qū)“tianocore.org”于2004年開(kāi)始,,采用BSD許可證,。隨著ARM綁定的公布,蘋(píng)果和惠普向tianocore.org貢獻(xiàn)了UEFI的參考實(shí)現(xiàn),,其中對(duì)Beagle Board(beagleboard.org)的一個(gè)實(shí)現(xiàn),,使硅片供應(yīng)商可為他們的硬件提供UEFI的驅(qū)動(dòng)程序。 ARM公司近日貢獻(xiàn)了使用Cortex A9 多核處理器的Versatile Express參考平臺(tái)的核心代碼,,以及
· 修復(fù)了ARM GCC工具鏈的構(gòu)建環(huán)境
· ARM的RealView仿真底板代碼的更新
· 新的包含ARM參考平臺(tái)通用組件的ArmPlatformPkg
· 支持TrustZone控制器
· 支持多核
· 支持PL18x MMC卡控制器
· 一個(gè)特制的啟動(dòng)設(shè)備選擇BDS庫(kù)以支持直接啟動(dòng)Linux
有關(guān)在ARM上實(shí)現(xiàn)UEFI的優(yōu)越性和UEFI論壇組織結(jié)構(gòu)的詳細(xì)說(shuō)明,,請(qǐng)見(jiàn)下回分解。
現(xiàn)在我將探討它,,特別是在ARM的系統(tǒng)上的優(yōu)越性,。我也會(huì)更詳細(xì)地描述UEFI論壇的組織結(jié)構(gòu)。優(yōu)越性
盡管現(xiàn)有的ARM預(yù)引導(dǎo)固件并沒(méi)有BIOS的束縛,,使用UEFI標(biāo)準(zhǔn)對(duì)ARM預(yù)引導(dǎo)固件仍有很多優(yōu)越性,。 OEM / ODM廠商一直在試圖降低開(kāi)發(fā)成本。代碼共享是在預(yù)引導(dǎo)固件領(lǐng)域?qū)崿F(xiàn)這目標(biāo)的一種方式,。
ARM和x86都注重計(jì)算連續(xù)性,,UEFI不僅使得在ARM產(chǎn)品之間或在x86產(chǎn)品之間代碼共享,還可以讓代碼在不同處理器架構(gòu)的產(chǎn)品之間共享,。產(chǎn)品可以共享外圍設(shè)備(網(wǎng)絡(luò),,SATA,USB控制器等),,以及眾多的設(shè)計(jì)功能集,。
圖2顯示了從x86到ARM的一個(gè)移植有99.42%的代碼不需要更改。

圖2: ARM移植中添加和更改的程序行數(shù)
模塊化的UEFI技術(shù)還可以使芯片廠商能夠?yàn)樽约旱挠布峁?qū)動(dòng)程序,。這使得OEM / ODM廠商能夠靈活地使用來(lái)自不同供應(yīng)商的模塊,,擴(kuò)大了選擇余地。
UEFI在ARM的實(shí)現(xiàn)提供了真正獨(dú)立于操作系統(tǒng)的啟動(dòng)解決方案,,而其他大多數(shù)現(xiàn)有的ARM啟動(dòng)解決方案(UBoot,,小內(nèi)核等)是與他們的支持操作系統(tǒng)相耦合的。對(duì)計(jì)算連續(xù)性的追求也包括支持Windows和Linux等多個(gè)操作系統(tǒng),。
把預(yù)引導(dǎo)固件標(biāo)準(zhǔn)化于UEFI也使?jié)撛诘莫?dú)立固件供應(yīng)商能夠進(jìn)入市場(chǎng)提供支持,。這將有可能讓這些廠商為多個(gè)客戶(hù)提供支持,有效地部署模塊,并提供可擴(kuò)展的共同解決方案,。這種標(biāo)準(zhǔn)化也將減少芯片廠商的開(kāi)發(fā)成本,,現(xiàn)在他們只需要支持一種類(lèi)型的驅(qū)動(dòng)程序給所有的OEM/ ODM來(lái)整合。這可以提高驗(yàn)證效率和調(diào)試的能力,。
對(duì)于操作系統(tǒng)廠商,,這種標(biāo)準(zhǔn)化使它們能夠集中在同一個(gè)引導(dǎo)程序方面的投資。這種標(biāo)準(zhǔn)化也將為獨(dú)立軟件開(kāi)發(fā)商提供新的創(chuàng)新的機(jī)會(huì),。
組織結(jié)構(gòu)
UEFI論壇是一個(gè)非贏利的合作貿(mào)易組織,,旨在促進(jìn)和管理UEFI標(biāo)準(zhǔn)。 AMD,,安邁,,蘋(píng)果,戴爾,,惠普,,IBM,系微,,英特爾,,聯(lián)想,微軟和鳳凰科技是發(fā)起人在董事會(huì)任職,。 ARM公司,,博通,博科,,ARCI,,Emulex,富士通,,鴻海,,浪潮,LSI,,百敖軟件,,日電,英偉達(dá),,甲骨文,,QLogic,桑迪亞國(guó)家實(shí)驗(yàn)室,,希捷,,東芝,威盛和威睿是貢獻(xiàn)者成員,,還有130多個(gè)公司和個(gè)人的使用者成員,。這是在預(yù)引導(dǎo)固件行業(yè)最廣泛的行業(yè)代表,。
如圖3所示,論壇有四個(gè)工作組,。發(fā)起者和貢獻(xiàn)者有機(jī)會(huì)在這些工作組貢獻(xiàn)和施加影響:

圖3: UEFI 論壇組織結(jié)構(gòu)圖
工業(yè)通訊工作組(ICWG)
ICWG旨在通過(guò)教育,,宣傳和營(yíng)銷(xiāo)各種方案使業(yè)界對(duì)UEFI規(guī)范有清楚的認(rèn)識(shí)并鼓勵(lì)業(yè)界普及其使用。ICWG與ODM和OEM,,產(chǎn)業(yè)界的合作伙伴,,技術(shù)聯(lián)盟/協(xié)會(huì)團(tuán)體同行,,以及行業(yè)媒體進(jìn)行交流和協(xié)作,,以達(dá)到他們對(duì)UEFI的認(rèn)識(shí)和廣泛采納。
ICWG負(fù)責(zé)有關(guān)UEFI論壇進(jìn)展和成功的對(duì)外交流,。這個(gè)工作組將制定如新聞稿,,新聞文章,白皮書(shū),,演示文稿,,相關(guān)文件等必要的技術(shù)和市場(chǎng)營(yíng)銷(xiāo)方式。
ICWG將幫助指引會(huì)員公司的營(yíng)銷(xiāo)和新聞發(fā)布,,以確保信息內(nèi)容及相關(guān)UEFI活動(dòng)的時(shí)間安排上的一致性,。
平臺(tái)初始化工作組(PIWG)
該工作組的范圍如下:PI規(guī)范和其他由工作組的大多數(shù)商定的相關(guān)規(guī)范。這些規(guī)范的實(shí)現(xiàn)是作為固件在UEFI規(guī)范的界面層之下提供計(jì)算機(jī)系統(tǒng)初始化服務(wù),。PI的實(shí)現(xiàn)不是UEFI規(guī)范的必須,。
UEFI規(guī)范工作組(USWG)
該工作組的范圍是管理和發(fā)展的“統(tǒng)一可擴(kuò)展固件接口”規(guī)范的定義。該規(guī)范的目的是定義在平臺(tái)固件和操作系統(tǒng)軟件之間的控制轉(zhuǎn)移中使用的編程接口和相關(guān)數(shù)據(jù)結(jié)構(gòu)和約定,。此外,,操作系統(tǒng)啟動(dòng)前環(huán)境中附加卡適配器引導(dǎo)支持,制造測(cè)試和自動(dòng)化等的編程接口需要也在考慮的范圍,。
為支持主要規(guī)范工作,,該工作組還被授權(quán)編寫(xiě)“UEFI的驅(qū)動(dòng)程序作者指南”及任何類(lèi)似的材料,這將有助于在UEFI產(chǎn)品的開(kāi)發(fā),。
UEFI測(cè)試工作組(UTWG)
該小組負(fù)責(zé)(1)制作和維護(hù)UEFI自我認(rèn)證測(cè)試套件,,(2)認(rèn)可開(kāi)源的平臺(tái)初始化規(guī)范的自我認(rèn)證為測(cè)試套件和(3)組織UEFI的插拔大會(huì)活動(dòng)和培訓(xùn)。
每個(gè)工作組可組建子團(tuán)隊(duì)來(lái)就特定專(zhuān)題召集專(zhuān)家對(duì)某些界面和功能深入探討,。例如,,USWG有一個(gè)網(wǎng)絡(luò)子團(tuán)隊(duì)專(zhuān)職網(wǎng)絡(luò)有關(guān)的協(xié)議,包括對(duì)IPv6的支持,,一個(gè)安全子團(tuán)隊(duì)專(zhuān)職與安全相關(guān)的協(xié)議,,一個(gè)配置子團(tuán)隊(duì)專(zhuān)職人機(jī)接口基礎(chǔ)設(shè)施相關(guān)的協(xié)議。當(dāng)然,,還有一個(gè)ARM綁定子團(tuán)隊(duì)來(lái)定義UEFI2.3規(guī)范中的ARM綁定,。 ARM公司,,蘋(píng)果,惠普,,微軟和鳳凰科技是該子團(tuán)隊(duì)的主要成員,。