利用BIOS定制實(shí)現嵌入式產(chǎn)品的差異化
BIOS定制是實(shí)現嵌入式產(chǎn)品差異化特性的有效途徑,本文將討論與創(chuàng )建這些定制BIOS相關(guān)的問(wèn)題,包括快速引導、用戶(hù)界面和功能,以及固件應用能力等。
許多基于x86的嵌入式解決方案都依賴(lài)針對臺式計算機設計的BIOS,通過(guò)對BIOS進(jìn)行配置可實(shí)現更高效的、富有成本效益的設計,以滿(mǎn)足專(zhuān)用硬件和軟件的需求。
在臺式機、服務(wù)器以及筆記本電腦中常見(jiàn)的BIOS(一種專(zhuān)為IT應用而設計的BIOS)已被設計成使這些設備能像通用計算機一樣工作,因此人們能以同樣的方式來(lái)使用這些設備。而諸如網(wǎng)絡(luò )設備和自助式信息服務(wù)終端(如kiosk設備)等基于x86的嵌入式產(chǎn)品,則需要像設備而不是像通用計算機那樣來(lái)工作。嵌入式設備需要使設備具有獨特功能的固件,這正是BIOS可發(fā)揮作用的地方。嵌入式固件(即用在x86架構上的BIOS)正是實(shí)現嵌入式設備差異化的基礎。
為嵌入式系統定制BIOS有兩種方法:一種方法是花費大量的時(shí)間和精力將臺式機和/或服務(wù)器的BIOS改造成可滿(mǎn)足嵌入式系統的要求;另一種方法則是采用一種專(zhuān)為嵌入式市場(chǎng)設計的BIOS。后一方法有助于簡(jiǎn)化為嵌入式系統創(chuàng )建定制BIOS的全過(guò)程,這既可盡量減少工作量和風(fēng)險,又能提供強大的固件能力。
用BIOS實(shí)現嵌入式產(chǎn)品差異化
差異化是嵌入式產(chǎn)品獲得成功并走向具有競爭優(yōu)勢的新方向的一個(gè)關(guān)鍵因素。表1列出的是用BIOS實(shí)現產(chǎn)品功能差異化的一些方法。本文將討論與創(chuàng )建這些BIOS有關(guān)的問(wèn)題,這些BIOS的特點(diǎn)包括:可配置成只包含標準IT BIOS的一部分特性;可定制成包含專(zhuān)用平臺設置屏幕、濺射效果屏幕(splash screen)設置(包括多媒體)以及諸如FPGA初始化代碼等專(zhuān)用代碼;可實(shí)現亞秒級快速引導的目標;提供增強的固件應用能力,比如高可用性監控和引導安全性等。
表:利用BIOS技術(shù)實(shí)現嵌入式產(chǎn)品的差異化。
大多數臺式機或服務(wù)器系統都要求將所有的BIOS初始化功能集成到系統中,包括即插即用(PnP)、高級功率模式(APM)、高級配置和電源接口(ACPI)、PCI設備枚舉與資源分配、增強硬盤(pán)驅動(dòng)器(EDD)、系統管理BIOS(SMBIOS)、系統管理總線(xiàn)(SMBUS)以及其它功能等。在使用通用IT BIOS的情況下,這些功能必須全部被構建到系統的BIOS中,以便系統能支持所有需要這種支持的軟硬件插件。
但對大多數嵌入式應用來(lái)說(shuō),這些功能組件很多都是一些只會(huì )增加設備加電自檢(POST)時(shí)間和消耗ROM空間的非必要功能。Embedded BIOS 2000等可配置BIOS則能提供800多種配置選項,這些選項用來(lái)控制將哪些功能組件包含在BIOS構建過(guò)程中。特定設計不需要的任何功能組件都不會(huì )包含在BIOS二進(jìn)制代碼中。
定制BIOS的用戶(hù)界面和功能
嵌入式設備很少需要標準的BIOS用戶(hù)界面。如果設備是從內部硬盤(pán)驅動(dòng)器上引導,則它既不需要配置成從閃存或CDROM上引導,也不需要提供用于非標準CPU或存儲器時(shí)鐘的選項。另外,若專(zhuān)用硬件(如ASIC)需要在引導時(shí)進(jìn)行初始化和配置,則還需要在核心BIOS中包含這種代碼。
取消設置屏幕可讓BIOS用戶(hù)界面采用新的形式,如無(wú)頭設計、通過(guò)與遠程終端程序相連的RS232串行電纜實(shí)現的菜單或類(lèi)似臺式機的POST,以及借助以太網(wǎng)的遠程登錄對話(huà),甚至一種可在裝載OS時(shí)顯示由OEM定義的圖形、動(dòng)畫(huà)和聲音的圖形化準操作系統(pre-OS)環(huán)境。
構建定制的用戶(hù)界面需要BIOS核心功能的支持,這樣用戶(hù)界面就能在恰當時(shí)候得到控制權。另外,BIOS鍵盤(pán)和視頻調用需要被路由到新設備(例如遠程登錄)上并進(jìn)行適當處理。
初始化專(zhuān)用硬件不但需要定制代碼,而且初始化序列也很重要,例如配置ASIC需要在PCI設備枚舉之前進(jìn)行。對BIOS用戶(hù)來(lái)說(shuō),能在BIOS引導序列的恰當時(shí)候插入定制代碼是非常必要的。如果所有的BIOS代碼都以源代碼的形式提供,則嵌入式BIOS用戶(hù)就能在引導序列的任何點(diǎn)上調用其初始化代碼。此外,可以將這種代碼進(jìn)行打包,這樣就無(wú)需將定制代碼集成到核心BIOS代碼中,從而可將它從一個(gè)平臺移植到另一個(gè)平臺。
快速引導
設備從上電到功能可用的這段時(shí)間的長(cháng)短,將影響用戶(hù)對設備性能和可靠性的看法。引導時(shí)間超過(guò)1秒的設備看起來(lái)就像沒(méi)有響應或者響應緩慢。優(yōu)化BIOS引導時(shí)間并不容易,因為在BIOS加電自檢過(guò)程中,有許多步驟需要優(yōu)化。
實(shí)現快速引導的一種最佳概念是使用微軟的簡(jiǎn)單引導標記增強(simple boot flag enhancement),它能決定引導時(shí)執行哪些POST組件。當然,還可在其它地方減少引導時(shí)間。
利用速度標記,簡(jiǎn)單引導標記以最簡(jiǎn)單的形式被用來(lái)控制引導速度。在首次引導過(guò)程中,BIOS在非易失性存儲器中設置引導速度標記,然后再執行一組完整的診斷測試。在引導末期,BIOS將控制權交給OS,如果OS引導沒(méi)有任何問(wèn)題,它便會(huì )清除引導速度標記。在下一次重啟時(shí),BIOS會(huì )看到引導速度標記已經(jīng)被清除,然后它會(huì )進(jìn)行一組較短的診斷測試,從而減少引導時(shí)間。如果BIOS或OS檢測到任何硬件配置的變化和/或故障,則它們將互相協(xié)調以確保在下一個(gè)引導周期中執行一組完整的診斷測試。
盡管引導速度的提高主要歸功于采用簡(jiǎn)單引導標記,但在其它許多方面也可提高引導速度,包括:視頻ROM擴展(大約需要1至3秒);到屏幕的任何其它BIOS輸出,包括POST及PCI消息等(大約需要100毫秒);不需要BIOS但需要由OS激活的硬件初始化,如鼠標及鍵盤(pán)等(大約需要數秒鐘);由于大多數嵌入式系統具有固定的硬件配置,所以還可利用特定目標的優(yōu)化(如經(jīng)過(guò)優(yōu)化的內存初始化和PCI枚舉)來(lái)進(jìn)一步提高引導速度。
通過(guò)使用簡(jiǎn)單引導標記、消除硬件初始化并使用特定目標的優(yōu)化,目前許多平臺的引導時(shí)間都已可達亞秒級。在個(gè)別平臺上,從復位到OS加載的時(shí)間可小于100毫秒。
增強的嵌入式固件應用能力
嵌入式系統開(kāi)發(fā)商正日益尋求通過(guò)增加更多的特性,來(lái)使產(chǎn)品有別于競爭產(chǎn)品的方法。固件是增強這種特性(特別是那些需要單獨運行平臺OS的特性)的理想地方,其中一個(gè)例子就是高可用性監控與引導安全性。
如果自助式信息服務(wù)終端采用獨立于OS運行的固件,它便能以許多方式檢測出故障情況,然后采取記錄故障、通過(guò)網(wǎng)絡(luò )發(fā)送電子郵件或者重啟等糾正措施。盡管這是一種可見(jiàn)性故障,但無(wú)頭(headless)設備也同樣容易受到攻擊。
固件是實(shí)現這種監控的理想地方,該監控獨立于OS并以系統管理模式(SMM,x86處理器架構的第四種模式)與OS并行運行。例如,Firmbase SMM操作環(huán)境具有自己的32位SMM操作環(huán)境,以便運行用Windows工具構建的可移植可執行程序。Firmbase應用程序駐留在ROM中的BIOS旁邊,在這里它們獨立于OS運行,即使OS已經(jīng)崩潰或丟失。這使BIOS成為對系統故障進(jìn)行檢測和響應的高可用性監控解決方案的最佳實(shí)現地方。
某些情況下,固件可幫助解決終端用戶(hù)篡改設備的問(wèn)題。投票機、游戲機,甚至機頂盒等都需要一系列建立在應用層軟件、固件本身以及平臺之間的信任。如果沒(méi)有這種信任,用戶(hù)就可以在硬盤(pán)驅動(dòng)器上修改關(guān)鍵文件,或者用另一塊主板來(lái)擾亂輪詢(xún)結果或欺騙主機。通過(guò)與運行在Windows或Linux OS下的應用程序、以及運行在SMM并獨立于OS的固件建立可重復性的加密握手,無(wú)論是應用程序還是固件都能夠禁用系統,以免系統進(jìn)行誤操作。
過(guò)去,將硬件與應用程序綁在一起是應用程序員的工作。如今,無(wú)論是擴展系統的系統管理接口(SMI)處理程序來(lái)執行握手,還是授權在固件層具有日志、遠程管理以及OEM級配置的引導時(shí)間安全應用程序,都變得更加安全和簡(jiǎn)單。
還可通過(guò)另外一些方式使用BIOS,以使產(chǎn)品在固件級上具有差異化并獲得競爭優(yōu)勢。在解決BIOS的功能配置、用戶(hù)界面、快速引導以及增加專(zhuān)用功能等問(wèn)題后,還可考慮其它許多方面。例如,可用ROM、RAM、閃存或USB存儲器棒等固態(tài)媒介來(lái)代替硬盤(pán);內置診斷可集成到BIOS中以助于實(shí)現自動(dòng)制造;內置調試程序可加快電路板的推出過(guò)程;此外,專(zhuān)用加載程序(比如那些用于Windows CE與EFI的加載程序)還可為未來(lái)技術(shù)改進(jìn)提供內置路線(xiàn)圖。
由于嵌入式系統之間存在廣泛的應用差異性,所以沒(méi)有一個(gè)單一的BIOS能對它們全部適用或者有效。為能直接開(kāi)發(fā)并高效地、富有成本效益地配置嵌入式設備,用開(kāi)發(fā)商定制硬件和軟件應用的相同方式來(lái)定制固件的能力還有待進(jìn)一步提高。
作者:Steve Jones
Nat Hillary
通用軟件公司
評論