專利名稱:一種efi平臺(tái)的兼容方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,尤其是一種在EFI平臺(tái)的兼容方法。
背景技術(shù):
目前現(xiàn)有的計(jì)算機(jī)技術(shù)里,要讓計(jì)算機(jī)硬件能啟動(dòng)操作系統(tǒng),必須由BIOS (基本輸入/輸出系統(tǒng))提供支持,其內(nèi)容集成在微機(jī)主板上的一個(gè)ROM芯片上,
主要保存著有關(guān)微機(jī)系統(tǒng)最重要的基本輸入輸出程序、系統(tǒng)信息設(shè)置、開(kāi)機(jī)上 電自檢程序和系統(tǒng)啟動(dòng)自舉程序等。而在計(jì)算機(jī)技術(shù)突飛猛進(jìn)的今天,現(xiàn)有BIOS 系統(tǒng)已經(jīng)大大制約了計(jì)算機(jī)產(chǎn)業(yè)的發(fā)展,所以現(xiàn)有BI0S系統(tǒng)被替代是歷史發(fā)展 的必然。
2004年英特爾公司首度大幅改造個(gè)人計(jì)算機(jī)BIOS后,即提出以新EFI規(guī)范 和標(biāo)準(zhǔn)替代現(xiàn)有BIOS的設(shè)想,并已經(jīng)得到微軟、惠普、安邁兒等幾乎所有世界 一流軟硬件廠商的支持,所以,該標(biāo)準(zhǔn)作為新公開(kāi)的IT (Information Technologies)行業(yè)標(biāo)準(zhǔn),成為未來(lái)的工業(yè)標(biāo)準(zhǔn)已經(jīng)是業(yè)內(nèi)共識(shí)。EFI的英文全 稱為Extensible Firmware Interface,中文名稱為可擴(kuò)展固件接口 。 EFI是用 于所有PC(個(gè)人計(jì)算機(jī))和現(xiàn)行智能設(shè)備的固件標(biāo)準(zhǔn)接口,它可以用于PC在開(kāi)機(jī) 前進(jìn)行診斷和操作,同時(shí)能夠用于簡(jiǎn)單的啟動(dòng)操作系統(tǒng)和配置硬件環(huán)境,并可 用于各種設(shè)備和系統(tǒng)初始化及配置。它具有類似于DOS (Disk Operating System) 功能,但又遠(yuǎn)比D0S功能要強(qiáng)大得多。它支持網(wǎng)絡(luò),支持最新IPV6標(biāo)準(zhǔn),同時(shí) 支持從外部存儲(chǔ)設(shè)備,比如說(shuō)軟盤(pán),光盤(pán),USB,硬盤(pán)等設(shè)備上面來(lái)加載BIOS的模塊和驅(qū)動(dòng)程序,或者從這些設(shè)備上面來(lái)執(zhí)行一些shell命令,從而擺脫了 BIOS容量和功能的限制,沒(méi)有重新燒制BIOS的風(fēng)險(xiǎn)和麻煩。它是位于PC機(jī)硬 件(或者其它外設(shè))和操作系統(tǒng)(如Windows, Linux)之間的固件接口 (即連接 硬件系統(tǒng)和系統(tǒng)軟件之間的底層的軟固件)。EFI不僅可以具有傳統(tǒng)PC中 BIOS(Basic Input Output System)所有的功能,而且它的功能更強(qiáng)大。英特 爾公司已經(jīng)利用EFI建立一個(gè)可以取代BIOS開(kāi)機(jī)前軟件的框架,計(jì)算機(jī)廠商可 以自由撰寫(xiě)開(kāi)機(jī)前軟件的模塊,并填入這個(gè)框架,這種模塊功能很像Windows 的驅(qū)動(dòng)程序,本發(fā)明簡(jiǎn)稱此軟件框架為EFI平臺(tái)。
然而,在EFI技術(shù)被廣泛運(yùn)用之前,還需要一段過(guò)渡階段,其中最亟待解 決的技術(shù)問(wèn)題就是怎樣在32位的EFI環(huán)境中使用現(xiàn)有的操作系統(tǒng),例如 D0S,WIND0S 9X/NT/2000/2003/XP, LINUX等,本發(fā)明稱之為傳統(tǒng)操作系統(tǒng)。這 些基于16位BIOS的操作系統(tǒng)無(wú)法直接在設(shè)置EFI的PC上使用?,F(xiàn)有技術(shù)所運(yùn) 用的16位BI0S、基于16位BIOS的OpROMs (Optional ROM,可選只讀存儲(chǔ)器, 如存儲(chǔ)在主板,顯卡,網(wǎng)卡等只讀存儲(chǔ)器上的程序)、加電自檢內(nèi)存管理器均可 以"傳統(tǒng)"簡(jiǎn)單標(biāo)示。注意"傳統(tǒng)BIOS"區(qū)別于"傳統(tǒng)16位形式的BIOS程序"。 而微軟公司即將推出的基于32位EFI的LONGHORN操作系統(tǒng),本發(fā)明稱之為新 型操作系統(tǒng),并取代用戶數(shù)量龐大的傳統(tǒng)操作系統(tǒng)將是一段長(zhǎng)期過(guò)程。因?yàn)閷?來(lái)EFI不僅用于個(gè)人計(jì)算機(jī)、還會(huì)用于嵌入式系統(tǒng),甚至廣泛應(yīng)用于所有家電 或手執(zhí)設(shè)備(例如手機(jī)),因此完整的EFI平臺(tái)的兼容方案不僅應(yīng)對(duì)提供傳統(tǒng)操 作系統(tǒng)兼容,還要提供傳統(tǒng)OpROMs兼容。提供EFI平臺(tái)的兼容方案是目前本領(lǐng) 域尚未解決的難題。 發(fā)明內(nèi)容本發(fā)明目的是針對(duì)現(xiàn)有技術(shù)存在的問(wèn)題,提供一種EFI平臺(tái)的兼容方法。
為實(shí)現(xiàn)上述目的,本發(fā)明提供一種EFI平臺(tái)的兼容方法,設(shè)置兼容性支持 模塊并掛接到EFI平臺(tái),兼容性支持模塊構(gòu)建16位實(shí)環(huán)境并提供與傳統(tǒng)16位 BIOS運(yùn)行期間一致的功能,以便支持基于16位BIOS的OpROMs、安裝或啟動(dòng)基 于16位BIOS的操作系統(tǒng)、和在基于16位BIOS的操作系統(tǒng)安裝或運(yùn)行期間提 供支持。
兼容性支持模塊的工作流程有以下基本步驟,
(1) 進(jìn)行兼容性支持模塊內(nèi)部初始化的步驟;
(2) 進(jìn)行兼容性模塊與EFI的交互步驟;
(3) 激活并調(diào)用基于16位BI0S的0pR0Ms的步驟。 同時(shí),所述兼容性支持模塊還包括以下部分,
與EFI的接口部分,用于兼容性支持模塊與EFI的聯(lián)系; 內(nèi)部初始化程序部分,用于兼容性支持模塊的內(nèi)部初始化; OpROMs處理功能塊,用于激活并且調(diào)用基于16位BIOS的OpROMs; 形實(shí)切換功能塊,用于兼容性支持模塊與EFI的交互; BIOS運(yùn)行期間支持部分,用于實(shí)現(xiàn)與傳統(tǒng)16位BIOS運(yùn)行期間一致的功能; 來(lái)自EFI的數(shù)據(jù)發(fā)送到與EFI的接口部分后轉(zhuǎn)發(fā)到兼容性支持模塊的其它 部分,并通過(guò)與EFI的接口部分調(diào)用內(nèi)部初始化程序部分進(jìn)行初始化;來(lái)自EFI 的數(shù)據(jù)中需要OpRoms的數(shù)據(jù)傳送到OpRoms處理功能塊處理;與EFI的接口部 分和OpRoms處理功能塊調(diào)用Bios運(yùn)行期間支持部分進(jìn)行支持;當(dāng)Bios運(yùn)行期 間支持部分需要用到32位EFI環(huán)境時(shí)調(diào)用形實(shí)切換功能塊,來(lái)進(jìn)入到32位環(huán) 境獲取數(shù)據(jù)或服務(wù)。
而且,形實(shí)切換功能塊提供兩種機(jī)制,把控制權(quán)從32位EFI環(huán)境轉(zhuǎn)到16 位實(shí)環(huán)境然后返回32位EFI環(huán)境的切換機(jī)制;把控制權(quán)從16位實(shí)環(huán)境轉(zhuǎn)到32 位EFI環(huán)境然后返回到16位實(shí)環(huán)境的反切換機(jī)制。而且,通過(guò)兼容性支持模塊啟動(dòng)操作系統(tǒng)時(shí),提供從基于16位BIOS的 0pR0Ms啟動(dòng)操作系統(tǒng)的選擇。
而且,所述兼容性支持模塊的85 95%代碼采用C語(yǔ)言編寫(xiě)。
而且,兼容性支持模塊編譯過(guò)程中生成用于支持遠(yuǎn)程源代碼調(diào)試的PDB文件。
而且,所述兼容性支持模塊中與EFI的接口部分遵循英特爾的EFI規(guī)范, 與基于16位BIOS的操作系統(tǒng)聯(lián)系的部分遵循傳統(tǒng)16位BIOS的規(guī)范。
本發(fā)明提供了一個(gè)兼容性支持模塊,能夠在EFI平臺(tái)兼容傳統(tǒng)操作系統(tǒng)和 傳統(tǒng)0pR0Ms。其功能主要是在將來(lái)設(shè)有EFI的計(jì)算機(jī)上既能夠啟動(dòng)新型操作系 統(tǒng)(例如微軟即將要推出的LONGHORN),也能夠啟動(dòng)現(xiàn)有的各種傳統(tǒng)操作系統(tǒng)。 本發(fā)明移植性好,能夠?qū)Σ僮飨到y(tǒng)提供更好的支持,使操作系統(tǒng)的啟動(dòng)速度更 快,運(yùn)行更加穩(wěn)定。并且能夠廣泛適用于設(shè)有EFI的個(gè)人計(jì)算機(jī)、嵌入式系統(tǒng), 甚至于所有設(shè)有EFI的家電或手執(zhí)設(shè)備。
圖1兼容性支持模塊組成示意圖; 圖2本發(fā)明實(shí)施例BIOS啟動(dòng)設(shè)備選擇示意圖; 圖3切換與反切換機(jī)制示意圖; 圖4本發(fā)明實(shí)施例啟動(dòng)傳統(tǒng)操作系統(tǒng)示意圖; 圖5本發(fā)明實(shí)施例啟動(dòng)新型操作系統(tǒng)示意圖; 圖6本發(fā)明實(shí)施例的兼容性支持模塊各部分關(guān)系圖。
具體實(shí)施例方式
為了在EFI環(huán)境下兼容現(xiàn)有操作系統(tǒng),設(shè)置兼容性支持模塊并掛接到EFI 平臺(tái),兼容性支持模塊構(gòu)建16位實(shí)環(huán)境并提供與傳統(tǒng)16位BIOS運(yùn)行期間一致 的功能,以便支持基于16位BIOS的0pR0M、安裝或啟動(dòng)基于16位BIOS的操作
7系統(tǒng)、和在基于16位BI0S的操作系統(tǒng)安裝或運(yùn)行期間提供支持。在本發(fā)明中, 兼容性支持模塊簡(jiǎn)稱為CSM。因?yàn)閭鹘y(tǒng)操作系統(tǒng)基于16位BIOS,而EFI (可擴(kuò) 展固件接口)系統(tǒng)是32位EFI環(huán)境,所以,在已設(shè)有EFI系統(tǒng)的計(jì)算機(jī),在傳 統(tǒng)操作系統(tǒng)下無(wú)法啟動(dòng)。本發(fā)明構(gòu)建出16位實(shí)環(huán)境,轉(zhuǎn)換由從EFI中得到的各 種32位數(shù)據(jù),使之成為16位數(shù)據(jù),激活和調(diào)用基于16位BIOS的0pR0Ms信息, 提供傳統(tǒng)操作系統(tǒng)所需各種服務(wù)。本發(fā)明設(shè)置兼容性支持模塊并掛接到EFI平 臺(tái),計(jì)算機(jī)設(shè)備加電啟動(dòng)后由EFI控制,兼容性支持模塊提供16位實(shí)環(huán)境以便 安裝、啟動(dòng)基于16位BIOS的操作系統(tǒng)。EFI作為連接硬件系統(tǒng)和系統(tǒng)軟件之間 的底層的軟固件,擔(dān)負(fù)操作系統(tǒng)與硬件之間聯(lián)系的責(zé)任,因此除安裝和啟動(dòng)這 兩種情況外,兼容性支持模塊還需在傳統(tǒng)操作系統(tǒng)運(yùn)行期間提供支持??傮w來(lái) 說(shuō),兼容性支持模塊的任務(wù)就是從32位EFI環(huán)境轉(zhuǎn)換到16位實(shí)環(huán)境,并提供 與傳統(tǒng)16位BIOS運(yùn)行期間一致的功能。對(duì)于BIOS的運(yùn)行期間來(lái)說(shuō),安裝或者 啟動(dòng)操作系統(tǒng)也是BIOS運(yùn)行期間的內(nèi)容,不單純指操作系統(tǒng)的運(yùn)行期間。所述 即能夠擁有EFI的優(yōu)勢(shì),比如快速的啟動(dòng)、更好的平臺(tái)適應(yīng)性、更好的穩(wěn)定性、 更容易的開(kāi)發(fā)和降低開(kāi)發(fā)的成本,同時(shí)也與傳統(tǒng)16位BIOS運(yùn)行期間一致的功 能,既包括與傳統(tǒng)16位BI0S運(yùn)行期間一樣的功能,也可包括更多的擴(kuò)展功能, 比如能夠較為快速的啟動(dòng)系統(tǒng)。
所謂兼容性支持模塊掛接到EFI平臺(tái),即指兼容性支持模塊是EFI中的一 個(gè)部分, 一個(gè)模塊。具體實(shí)施時(shí),EFI其它部分可以直接采用遵循EFI規(guī)范的軟 硬件廠商提供的開(kāi)源代碼,兼容性支持模塊則根據(jù)本發(fā)明提供的組成部分和工 作流程由本領(lǐng)域技術(shù)人員編寫(xiě)即可,本發(fā)明所要求的技術(shù)方案保護(hù)范圍并不包 括EFI其它部分的具體構(gòu)成。在具體實(shí)施過(guò)程中,兼容性支持模塊可以與EFI 的其它部分整體固化。但在本發(fā)明中,為了簡(jiǎn)便說(shuō)明兼容性支持模塊與EFI其 它部分的交互,所稱EFI沒(méi)有包含兼容性支持模塊。為了實(shí)現(xiàn)從32位EFI環(huán)境 轉(zhuǎn)換倒16位實(shí)環(huán)境,并提供傳統(tǒng)16位BIOS運(yùn)行期間一致的功能,本發(fā)明的兼容性支持模塊工作流程有以下基本步驟(1)進(jìn)行兼容性支持模塊內(nèi)部初始化的步驟;(2)進(jìn)行兼容性模塊與EFI的交互步驟;(3)激活并調(diào)用基于16位BIOS 的0pR0Ms的步驟。上述基本步驟完成后,16位實(shí)環(huán)境已構(gòu)建完畢,若任務(wù)為啟 動(dòng)傳統(tǒng)操作系統(tǒng),則進(jìn)入啟動(dòng)傳統(tǒng)操作系統(tǒng)步驟,啟動(dòng)基于16位BI0S的操作 系統(tǒng)。在EFI CSM構(gòu)建的16位實(shí)模式環(huán)境下安裝基于16位BIOS的操作系統(tǒng), 與啟動(dòng)基于16 BIOS的操作系統(tǒng)過(guò)程基本類似,只是操作系統(tǒng)所調(diào)用的BIOS服 務(wù)不一樣,因此本發(fā)明將主要以啟動(dòng)傳統(tǒng)操作系統(tǒng)作為實(shí)施例進(jìn)行說(shuō)明,安裝 過(guò)程不予贅述。兼容傳統(tǒng)0pR0Ms則只需進(jìn)行到步驟(3)。開(kāi)機(jī)運(yùn)行EFI到Shell (EFI的命令行執(zhí)行外殼,與DOS或者LINUX的命令 行執(zhí)行外殼有點(diǎn)類似)階段后,開(kāi)始加載并初始化兼容性支持模塊,執(zhí)行上述 各步驟。值得注意的是,因?yàn)樾枰执无D(zhuǎn)換各類傳統(tǒng)0pR0M信息,步驟(2)反 復(fù)運(yùn)用從32位EFI環(huán)境轉(zhuǎn)到16位實(shí)環(huán)境然后返回EFI的切換機(jī)制。為了應(yīng)對(duì) 可能出現(xiàn)的異常情況,本發(fā)明提供了與之相反的反切換機(jī)制,即把控制權(quán)從16 位實(shí)環(huán)境轉(zhuǎn)到32位EFI環(huán)境然后返回到16位實(shí)環(huán)境。為了能夠在EFI環(huán)境下兼容現(xiàn)有傳統(tǒng)操作系統(tǒng),本發(fā)明提供的兼容性支持 模塊包括以下部分,(a)與EFI的接口部分,通過(guò)這些接口,把CSM和EFI有機(jī)的聯(lián)系在一起, 在控制權(quán)完全交到基于16位BI0S的操作系統(tǒng)之前,CSM的操作離不開(kāi)該部分的 支持。為了實(shí)行兼容性支持模塊與EFI其它部分的交互,首先必須能建立兼容性 支持模塊與EFI其它部分的聯(lián)系,本發(fā)明通過(guò)在CSM中設(shè)立與EFI的接口部分 來(lái)實(shí)現(xiàn)這種聯(lián)系。如圖1所示,英特爾公司為了使BI0S廠商能夠更好的遵循EFI 規(guī)范并實(shí)現(xiàn)兼容性支持,已經(jīng)在EFI里面包含了用來(lái)幫助BIOS廠商實(shí)現(xiàn)兼容性 支持的EFI驅(qū)動(dòng)。這些驅(qū)動(dòng)包括把EFI從32位保護(hù)模式切換到16位實(shí)模式的 驅(qū)動(dòng),BIOS啟動(dòng)設(shè)備選擇驅(qū)動(dòng),為傳統(tǒng)BIOS內(nèi)存區(qū)域管理提供支持的EFI驅(qū)動(dòng),控制器8259提供支持的EFI驅(qū)動(dòng),為傳統(tǒng)BIOS提供磁盤(pán)信 息的EFI驅(qū)動(dòng),為工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)的高級(jí)電源管理提供支持的EFI驅(qū)動(dòng)。這些驅(qū) 動(dòng)為BIOS廠商將要實(shí)現(xiàn)的CSM提供了接口 , BIOS廠商把自己的CSM編譯成64K 或者128K的二進(jìn)制文件,英特爾公司提供的這些EFI驅(qū)動(dòng),負(fù)責(zé)把以上二進(jìn)制 文件的內(nèi)容映像到1M以下的內(nèi)存區(qū)域。本發(fā)明具體實(shí)施時(shí),EFI通過(guò)CSM中與 EFI的接口部分(即CSM向EFI提供的接口),連接上述EFI向CSM提供的接口, 將CSM與EFI聯(lián)系到一起。由于本發(fā)明提供的CSM處在EFI環(huán)境中,需要與EFI進(jìn)行交互,所以兼容 性支持模塊中與EFI的接口部分必須遵循EFI的規(guī)范,這些規(guī)范可以在英特爾 公司的網(wǎng)站找到。同時(shí),由于CSM需要給操作系統(tǒng)提供16位實(shí)環(huán)境,因此CSM 中與基于16位BI0S的操作系統(tǒng)的聯(lián)接部分必須參照傳統(tǒng)BIOS的規(guī)范。傳統(tǒng)BIOS7^c力/lz'csJ y e/kre/7ce. Second edition. IBM Corporation, IBM No. S68X-234卜00, 1988。該聯(lián)接部分提供與傳統(tǒng)BIOS運(yùn)行期間一致的16位形式 的接口。由于本發(fā)明CSM的實(shí)現(xiàn)目的,該接口是由CSM中的所有部分實(shí)現(xiàn)的,特 殊的是,與EFI的接口部分為間接實(shí)現(xiàn),因此不算與基于16位BIOS的操作系 統(tǒng)聯(lián)系的部分,它遵循的是EFI的規(guī)范。雖然本發(fā)明CSM并沒(méi)有提供與傳統(tǒng)16 位BIOS完全相同的內(nèi)容,并沒(méi)有POST部分,但是遵循的規(guī)范仍然是一致的。(b) 內(nèi)部初始化程序部分,用于內(nèi)部的一些初始化,以便本身能夠正常的工作。(c) OpROMs處理功能塊,傳統(tǒng)的OpROMs雖然已由EFI映像到內(nèi)存,但是 仍然需要CSM程序來(lái)啟動(dòng)并且調(diào)用OpROMs上面的程序。(d) 形實(shí)切換功能塊,具體實(shí)施時(shí),由EFI的32位模式切換CSM的16位 實(shí)模式程序,可采用英特爾公司的形實(shí)切換驅(qū)動(dòng),但是,由BI0S廠商提供由16 位實(shí)模式切換到32位EFI環(huán)境的程序。10(e) BIOS運(yùn)行期間支持部分,實(shí)現(xiàn)與傳統(tǒng)BIOS運(yùn)行期間一樣的功能,向 操作系統(tǒng)提供中斷服務(wù),內(nèi)存管理信息,電源管理接口,桌面管理接口,系統(tǒng) 管理BI0S,是操作系統(tǒng)正常安裝,啟動(dòng),運(yùn)行的關(guān)鍵。參見(jiàn)附圖6,本發(fā)明還提供了實(shí)施例的各部分關(guān)系,以供實(shí)施參考來(lái)自 EFI的數(shù)據(jù)發(fā)送到與EFI的接口部分后轉(zhuǎn)發(fā)到兼容性支持模塊的其它部分,并通 過(guò)與EFI的接口部分調(diào)用內(nèi)部初始化程序部分進(jìn)行初始化;來(lái)自EFI的數(shù)據(jù)中 需要0pRoms的數(shù)據(jù)傳送到0pRoms處理功能塊處理;與EFI的接口部分和0pRoms 處理功能塊調(diào)用Bios運(yùn)行期間支持部分進(jìn)行支持;當(dāng)Bios運(yùn)行期間支持部分 需要用到32位EFI環(huán)境時(shí)調(diào)用形實(shí)切換功能塊,來(lái)進(jìn)入到32位環(huán)境獲取數(shù)據(jù) 或服務(wù)。因?yàn)?6位實(shí)環(huán)境與32位EFI環(huán)境交錯(cuò)混雜,本發(fā)明的實(shí)現(xiàn)需要一定技巧。 在具體實(shí)施過(guò)程中,采用模塊化設(shè)計(jì)方式,絕大部分使用C語(yǔ)言編程,只有少 部分匯編程序,擴(kuò)展性更大,功能性更強(qiáng)。本發(fā)明實(shí)施例將實(shí)現(xiàn)兼容性支持的 代碼分為幾個(gè)代碼塊為兼容性提供支持的EFI環(huán)境下32位程序(此部分由英 特爾公司提供),提供16位實(shí)環(huán)境的16位程序(本發(fā)明稱為L(zhǎng)EGACY16),在32 位和16位之間切換的程序,兼容性支持S醒(System Management Mode,系統(tǒng)管 理模式)程序。由于上述啟動(dòng)傳統(tǒng)操作系統(tǒng)的四個(gè)步驟都需要由EFI平臺(tái)引導(dǎo)開(kāi) 始,為了說(shuō)明EFI與兼容性支持模塊之間的互動(dòng),EFI環(huán)境里面為兼容性提供支 持的程序被稱為32位CSM,而EFI的其它代碼被統(tǒng)稱為EFI或者32位EFI,本 發(fā)明實(shí)現(xiàn)的16位兼容性程序稱為16位CSM。由于從傳統(tǒng)16位BIOS轉(zhuǎn)換到32位EFI會(huì)是一個(gè)長(zhǎng)期的過(guò)程,而基于16 位的硬件和硬件上面固化的程序(主要是傳統(tǒng)的0pR0Ms和傳統(tǒng)操作系統(tǒng))不能 識(shí)別EFI。出于提供一種兼容可能性的目的,英特爾公司己經(jīng)在EFI架構(gòu)內(nèi)提供 部分為兼容性提供支持的32位EFI的驅(qū)動(dòng)代碼,也提出CSM的設(shè)計(jì)思路,但是, 這種思路很抽象,沒(méi)能解決兼容性的難題。而本發(fā)明則提出了完整的兼容方案,完善了兼容切換機(jī)制,實(shí)現(xiàn)了兼容傳統(tǒng)操作系統(tǒng)的目的。為了便于實(shí)施,本發(fā)
明說(shuō)明英特爾公司為兼容性提供支持的32位EFI驅(qū)動(dòng)內(nèi)容,及其與兼容性16 位BIOS程序、兼容性16位系統(tǒng)管理模式程序之間的關(guān)系,參見(jiàn)圖1:為32位 EFI提供兼容性支持驅(qū)動(dòng)的主體是為傳統(tǒng)內(nèi)存區(qū)域管理提供支持的EFI驅(qū)動(dòng)、為 傳統(tǒng)BIOS可編程控制器8259提供支持的EFI驅(qū)動(dòng)、為傳統(tǒng)BIOS提供磁盤(pán)信息 的EFI驅(qū)動(dòng)和為工業(yè)標(biāo)準(zhǔn)架構(gòu)的高級(jí)電源管理接口提供支持的EFI驅(qū)動(dòng),由于 為BIOS啟動(dòng)設(shè)備選擇提供支持的EFI驅(qū)動(dòng)(該驅(qū)動(dòng)是為傳統(tǒng)BIOS啟動(dòng)提供支持 的EFI驅(qū)動(dòng)中的)和EFI形實(shí)切換驅(qū)動(dòng)抽象出的傳統(tǒng)BI0S協(xié)議(該協(xié)議是為EFI 啟動(dòng)提供支持的BIOS驅(qū)動(dòng)中的),初始化后提供的為傳統(tǒng)BIOS提供支持的EFI 驅(qū)動(dòng)。具體實(shí)施過(guò)程中,需要編寫(xiě)兼容性16位的系統(tǒng)管理模式程序和兼容性16 位的BIOS程序。為傳統(tǒng)BIOS提供支持的EFI驅(qū)動(dòng)與兼容性16位的系統(tǒng)管理模 式程序進(jìn)行交互,并為兼容性16位的系統(tǒng)管理模式程序提供支持,為兼容性提 供支持的32位的EFI驅(qū)動(dòng)與兼容性16位的BIOS程序進(jìn)行交互,并為兼容性16 位的BIOS程序提供支持。根據(jù)傳統(tǒng)操作系統(tǒng)協(xié)議編寫(xiě)的兼容性16位BIOS程序 最終提供了 16位實(shí)環(huán)境,為傳統(tǒng)操作的啟動(dòng)和運(yùn)行提供支持。兼容性16位的 系統(tǒng)管理模式程序和兼容性16位的BIOS程序都是面向傳統(tǒng)操作系統(tǒng)提供16位 BI0S接口,可以稱之為傳統(tǒng)16位形式的BI0S程序。為了方便實(shí)施,本發(fā)明還 在附圖1中標(biāo)記了兼容性支持模塊各部分的性質(zhì)來(lái)源標(biāo)記A表示是EFI框架 下的普通程序,B表示與具體硬件平臺(tái)有關(guān)的程序,C表示兼容性16位BI0S, D 表示由獨(dú)立BIOS廠商提供的程序。
本發(fā)明提供進(jìn)一步分析程序代碼與兼容性支持模塊各部分的關(guān)系以便實(shí)
施
本發(fā)明實(shí)施例主要提供了兼容性16位的BIOS程序代碼和兼容性16位的系 統(tǒng)管理模式程序代碼。兼容性16位的BIOS程序支持除了為OpROMs和傳統(tǒng)的硬 件提供中斷服務(wù)函數(shù)以外,還提供所有的運(yùn)行期間支持,是正常啟動(dòng),安裝和運(yùn)行傳統(tǒng)操作系統(tǒng)所必須的。因此兼容性16位的BIOS程序代碼包括與EFI的 接口部分、內(nèi)部初始化程序部分,傳統(tǒng)OpROMs處理功能塊,形實(shí)切換功能塊, 傳統(tǒng)BIOS運(yùn)行期間支持部分。具體實(shí)施時(shí),形實(shí)切換功能塊中從32位EFI環(huán) 境切換到16位實(shí)模式可以直接利用屬于為兼容性提供支持的32位的EFI驅(qū)動(dòng), 從16位實(shí)模式環(huán)境返回32位EFI環(huán)境屬于兼容性16位的BIOS程序,這一過(guò) 程本發(fā)明稱之為"切換";從16位實(shí)模式到32位EFI環(huán)境屬于兼容性16位的 BIOS程序,返回屬于為兼容性提供支持的32位的EFI驅(qū)動(dòng),這一過(guò)程我們稱之為 "反切換"。兼容性16位的系統(tǒng)管理模式程序是可選擇的,用戶的需求或者傳 統(tǒng)的部分屬性也有可能迫使它成為一個(gè)需要的代碼塊,用于提供特殊情況下傳 統(tǒng)操作系統(tǒng)的系統(tǒng)管理所需的額外支持。兼容性16位的系統(tǒng)管理模式程序是與 芯片組和/或平臺(tái)相關(guān)的。下面是可能需要兼容性16位的系統(tǒng)管理模式程序的 一些例子為支持INT 15 D042的系統(tǒng)配置數(shù)據(jù);為鼠標(biāo)和鍵盤(pán)提供舊型USB 支持;用USB啟動(dòng)設(shè)備信息更新BBS (Bios Boot Specif ication, BIOS啟動(dòng)規(guī) 范)。
結(jié)合代碼,本發(fā)明提供了具體實(shí)施例的啟動(dòng)傳統(tǒng)操作系統(tǒng)過(guò)程和啟動(dòng)新型 操作系統(tǒng)過(guò)程
參見(jiàn)圖4,本發(fā)明實(shí)施例在EFI平臺(tái)啟動(dòng)基于16位BIOS的操作系統(tǒng)有以下 步驟,
(11)由內(nèi)部初始化程序部分進(jìn)行初始化步驟。當(dāng)進(jìn)入到BDS (BIOS Boot Device Selection, BIOS啟動(dòng)設(shè)備選擇)階段后,依據(jù)使用者意愿,可選擇從 CSM或shell啟動(dòng)。對(duì)于選擇從EFI啟動(dòng)到Shell后,使用者仍然可以通過(guò)Shell 命令裝載并初始化兼容性支持模塊。對(duì)于直接選擇從CSm啟動(dòng),則EFI系統(tǒng)直 接裝載并初始化兼容性支持模塊。裝載并初始化之后,EFI系統(tǒng)將找到32位CSM 的入口點(diǎn),并執(zhí)行里面的程序。32位的CSM程序首先檢查是否加載了 16位的 CSM,如果沒(méi)有,則不能啟動(dòng)傳統(tǒng)的操作系統(tǒng)。具體操作為初始化基于16位BIOS的加電自檢內(nèi)存管理器,把兼容性支持模塊映像到內(nèi)存,并從這個(gè)內(nèi)存區(qū) 域里面以特定的標(biāo)識(shí)搜索兼容性支持模塊與EFI的聯(lián)系表格,從表格里面得到 16位兼容性支持模塊的入口地址,切換到16位實(shí)模式,并轉(zhuǎn)到16位兼容性支 持模塊的入口執(zhí)行。本發(fā)明實(shí)施例中內(nèi)部初始化程序部分由英特爾的EFI驅(qū)動(dòng) 完成。
從控制權(quán)角度看16位的CSM程序向32位的CSM程序提供16位BIOS程序 的入口點(diǎn)等信息,32位的CSM程序得到這些信息,在進(jìn)行了一些其本身的內(nèi)部 初始化以后,切換到16位實(shí)模式,并把控制權(quán)交給16位的CSM程序。16位的 CSM程序執(zhí)行一些初始化步驟以后,把控制權(quán)交還給32位的CSM程序。
(12) 與EFI的交互步驟。這個(gè)步驟需要幾次用到由形實(shí)切換功能塊實(shí)現(xiàn) 的切換和反切換機(jī)制(如圖3所示)。通過(guò)這個(gè)步驟,CSM從EFI得到高級(jí)電源 管理接口的數(shù)據(jù),得到內(nèi)存管理信息的數(shù)據(jù),系統(tǒng)管理BIOS的數(shù)據(jù),磁盤(pán)信息 的數(shù)據(jù),多處理器數(shù)據(jù),PCI(周邊組件擴(kuò)展接口)中斷路由表的數(shù)據(jù),BBS(Bios 啟動(dòng)規(guī)范)的相關(guān)數(shù)據(jù)來(lái)完成CSM內(nèi)部的初始化,同時(shí),CSM向EFI提供由 OEM (Original Equipment Manufacturer,原始設(shè)備制造商)提供的16位或者32 位的程序和/或數(shù)據(jù),來(lái)實(shí)現(xiàn)BI0S的個(gè)性化和/或某些額外的功能。
從控制權(quán)角度看32位的CSM程序加載顯卡驅(qū)動(dòng),并把相關(guān)信息傳遞給16 位的CSM,然后把控制權(quán)交給16位的CSM程序。
(13) 通過(guò)0pR0Ms處理功能塊啟動(dòng)并調(diào)用基于16位BIOS的0pR0Ms信息 的步驟。某些0pR0M可能會(huì)接管某些中斷,比如顯卡上的0pR0M可能就會(huì)接管 INT 10H,某些帶啟動(dòng)功能的0pR0M可能會(huì)接管INT 19H和INT 18H;其它PCI 只讀存儲(chǔ)器(如網(wǎng)卡)的初始化過(guò)程與顯卡的過(guò)程類似,也是由32位的CSM程 序把0pR0M里面的內(nèi)容映像到內(nèi)存,并把相關(guān)信息傳遞給16位的CSM,把硬件 設(shè)備按傳統(tǒng)16位實(shí)模式的方式初始化,切換到16位實(shí)模式。
從控制權(quán)角度看由16位的CSM程序進(jìn)行進(jìn)一步的初始化工作,啟動(dòng)并調(diào)用0pR0M里面的程序,然后把控制權(quán)交還給32位的CSM程序。
(14)所有上述操作完成以后,進(jìn)行傳統(tǒng)操作系統(tǒng)啟動(dòng)步驟。16位的CSM 將進(jìn)行一些操作系統(tǒng)啟動(dòng)之前的準(zhǔn)備工作,最后32位的CSM程序把控制權(quán)交給 16位的CSM程序,由16位的CSM程序來(lái)完成最終的傳統(tǒng)方式的啟動(dòng)工作,啟動(dòng) 成功后控制權(quán)將交給操作系統(tǒng),不再返回EFI環(huán)境。在操作系統(tǒng)的運(yùn)行期間, 16位的CSM繼續(xù)通過(guò)BIOS運(yùn)行期間支持部分對(duì)操作系統(tǒng)提供運(yùn)行期間支持。
參見(jiàn)圖5,啟動(dòng)新型操作系統(tǒng)則兼容性支持模塊為EFI啟動(dòng)到Shell后, 裝載并初始化兼容性支持模塊,找到32位CSM的入口點(diǎn),并執(zhí)行里面的程序。 接著就開(kāi)始新型操作系統(tǒng)的啟動(dòng)。新型操作系統(tǒng)的啟動(dòng)不涉及到16位的CSM程 序,整個(gè)啟動(dòng)過(guò)程都是由英特爾提供的EFI驅(qū)動(dòng)來(lái)完成的,與本發(fā)明的技術(shù)目 的無(wú)關(guān),放在此處與傳統(tǒng)操作系統(tǒng)的啟動(dòng)做為對(duì)比。
為了實(shí)現(xiàn)啟動(dòng),首先需要構(gòu)建出兼容性支持模塊的工作模式,因?yàn)镋FI已 經(jīng)完成了與傳統(tǒng)BIOS的POST (Power On Self Test,加電自檢)相類似的功能, 本發(fā)明主要實(shí)現(xiàn)的是傳統(tǒng)16位BIOS程序的運(yùn)行期間支持部分,內(nèi)容如下與 EFI的接口代碼;內(nèi)部初始化代碼;從EFI得到高級(jí)電源管理接口數(shù)據(jù)并提供給 操作系統(tǒng)的代碼;從EFI得到內(nèi)存管理數(shù)據(jù)并提供給操作系統(tǒng)的代碼;從EFI 得到PCI中斷路由表的數(shù)據(jù),并用傳統(tǒng)的中斷請(qǐng)求資源來(lái)更新硬件信息的代碼; 從EFI得到啟動(dòng)設(shè)備列表的代碼;形實(shí)切換代碼;啟動(dòng)和調(diào)用傳統(tǒng)0pR0Ms的代 碼;進(jìn)一步初始化硬件的代碼;中斷環(huán)境的構(gòu)建和中斷服務(wù)函數(shù)代碼;裝載一 個(gè)傳統(tǒng)操作系統(tǒng)的代碼。其中裝載一個(gè)傳統(tǒng)的操作系統(tǒng)的代碼即操作系統(tǒng)啟動(dòng) 程序,該程序的執(zhí)行步驟為從EFI得到數(shù)據(jù),并且把這些數(shù)據(jù)轉(zhuǎn)化為為傳統(tǒng) 16位形式BI0S提供支持的模塊所需要的數(shù)據(jù)結(jié)構(gòu)形式;更新標(biāo)準(zhǔn)的BDA (BIOS Data Area, BIOS數(shù)據(jù)區(qū)域,內(nèi)存里面的開(kāi)辟一個(gè)區(qū)域,斷電以后數(shù)據(jù)消失)、EBDA (Extended BIOS Data Area,擴(kuò)展BIOS數(shù)據(jù)區(qū)域,內(nèi)存里面的開(kāi)辟一個(gè)區(qū)域,斷電以后數(shù)據(jù)消失)、禾口 CMOS (Complementary Metal-Oxide-Semiconductor Transistor, 互補(bǔ)型金屬氧化物半導(dǎo)體, 一般在主板上,有專門的CMOS電池 供電,斷電以后數(shù)據(jù)不會(huì)消失)里面的數(shù)據(jù);用傳統(tǒng)的資源(IRQs)來(lái)更新硬 件配置信息。本發(fā)明的操作系統(tǒng)啟動(dòng)功能塊提供由16位BIOS的0pR0Ms啟動(dòng)操 作系統(tǒng)的選擇,這種情況通常是應(yīng)用在PC以外所安裝的EFI設(shè)備上。為了選擇 具體的啟動(dòng)設(shè)備啟動(dòng)操作系統(tǒng),EFI驅(qū)動(dòng)會(huì)產(chǎn)生一個(gè)啟動(dòng)設(shè)備的列表,以便更新 BDS (BIOS Boot Device Selection, BI0S啟動(dòng)設(shè)備選擇)數(shù)據(jù),CSM從EFI得 到BDS的數(shù)據(jù),從而使用戶能夠自由選擇啟動(dòng)設(shè)備。
本發(fā)明的傳統(tǒng)16位形式的BIOS程序用于提供16位實(shí)環(huán)境,可看作是提供 了一個(gè)與傳統(tǒng)操作系統(tǒng)相對(duì)應(yīng)的BIOS,并去掉加電自檢和BIOS設(shè)置部分。這個(gè) "BIOS"包含以下內(nèi)容運(yùn)行期間支持程序;INT 18h,用于處理啟動(dòng)失敗時(shí)的 中斷服務(wù)函數(shù);INT 19h,用于傳統(tǒng)操作系統(tǒng)引導(dǎo)的中斷服務(wù)函數(shù); 一小段處理 為兼容性提供支持的EFI驅(qū)動(dòng)和傳統(tǒng)16位形式的BIOS程序接口的程序。具體 實(shí)施時(shí)過(guò)程中,傳統(tǒng)16位形式的BIOS程序可由本領(lǐng)域技術(shù)人員自行參考技術(shù) 手冊(cè)進(jìn)行設(shè)計(jì),實(shí)現(xiàn)與現(xiàn)有BIOS提供商提供的BIOS相似的功能。為了使兼容 性支持模塊對(duì)每一類平臺(tái)都通用(如桌面,服務(wù)器,移動(dòng)平臺(tái)),本發(fā)明的傳統(tǒng) 16位形式的BIOS程序與芯片組和具體硬件平臺(tái)無(wú)關(guān),它通過(guò)傳統(tǒng)的硬件接口控 制硬件,把芯片組的編程留給EFI和/或?yàn)榧嫒菪蕴峁┲С值腅FI驅(qū)動(dòng)來(lái)做。這 樣可以使代碼的可重用性最大化,減少代碼的BUG。本發(fā)明具體實(shí)施時(shí),Legacyl6 代碼被編譯為一個(gè)64K或者128K的無(wú)格式的二進(jìn)制文件,然后這個(gè)二進(jìn)制文件 配合為兼容性提供支持的EFI驅(qū)動(dòng), 一起編譯為一個(gè)FV (Firmware Volume)檔。 在運(yùn)行的時(shí)候,16位代碼將被裝載到內(nèi)存。
為了將從EFI得到的數(shù)據(jù)轉(zhuǎn)化為兼容的16位數(shù)據(jù)結(jié)構(gòu),即為兼容性提供支 持的EFI驅(qū)動(dòng)和傳統(tǒng)16位形式的BIOS程序之間的通訊,本發(fā)明采用形實(shí)切換
16功能塊,具體實(shí)施時(shí)可以采用數(shù)據(jù)表格和函數(shù)形式。兼容性16位表格,該表由
EFI建立,然后將傳統(tǒng)0pR0Ms信息傳遞給16位實(shí)環(huán)境構(gòu)建功能塊。傳統(tǒng)16位 形式的BIOS程序的函數(shù)提供為兼容性提供支持的EFI驅(qū)動(dòng)需要的指定信息。本 發(fā)明具體實(shí)施例提供的傳統(tǒng)16位形式的BIOS程序的函數(shù)舉例如下 LEGACY16InitializeYourself (),用來(lái)允許LEGACY16做一些初始化的工作; LEGACY16Pr印areToBoot (),允許LEGACY16在啟動(dòng)一個(gè)傳統(tǒng)的操作系統(tǒng)之前再 做一些清理或者其它的工作,為操作系統(tǒng)的最終成功啟動(dòng)做最后的準(zhǔn)備工作; LEGACY16GetTableAddress(),請(qǐng)求LEGACY16內(nèi)存區(qū)域里面分配指定大小的一 個(gè)內(nèi)存塊,為兼容性提供支持的EFI驅(qū)動(dòng)就會(huì)把數(shù)據(jù)拷貝到內(nèi)存塊里面去。操 作系統(tǒng)啟動(dòng)之前,需要BI0S做一些初始化工作,在操作系統(tǒng)啟動(dòng)以后,還需要 BIOS提供一些運(yùn)行期間的支持,因?yàn)樵诓僮飨到y(tǒng)的運(yùn)行過(guò)程中,它還需要調(diào)用 BIOS的一些中斷服務(wù)或者從BIOS得到一些參數(shù)信息等。傳統(tǒng)16位形式的BIOS 程序?qū)崿F(xiàn)的傳統(tǒng)操作系統(tǒng)運(yùn)行期間支持功能塊滿足上述需求。中斷服務(wù)是最重 要的一部分,包括INT 0x08 (系統(tǒng)時(shí)鐘中斷)、INT 0x09 (鍵盤(pán)中斷)、INT 0x10 (顯示服務(wù))、INT 0x11 (返回系統(tǒng)配置信息)、INT 0x12 (返回基本內(nèi)存的大 小)等,按照中斷服務(wù)手冊(cè)編寫(xiě)即可。其它支持還有ACPI支持和APM支持等。 ACPI是一個(gè)高級(jí)電源管理的接口,它會(huì)告訴操作系統(tǒng)如何管理和節(jié)省電源。某 些傳統(tǒng)操作系統(tǒng),如WINDOWS XP, LINUX等會(huì)在啟動(dòng)的時(shí)候在內(nèi)存中搜索ACPI 表,如果沒(méi)有找到則不能啟動(dòng)。操作系統(tǒng)在運(yùn)行的時(shí)候,隨時(shí)都可能需要調(diào)用 ACPI表里面的數(shù)據(jù)來(lái)管理設(shè)備的電源。這個(gè)特性對(duì)于一些移動(dòng)設(shè)備,比如筆記 本電腦來(lái)說(shuō),是非常重要和有意義的。最常見(jiàn)的一種情況就是如果在規(guī)定的時(shí) 間內(nèi),用戶沒(méi)有移動(dòng)鼠標(biāo)或鍵盤(pán),WINDOWS就進(jìn)入省電模式,當(dāng)用戶移動(dòng)鼠標(biāo)或 敲擊鍵盤(pán)的時(shí)候,計(jì)算機(jī)又從省電模式中恢復(fù)過(guò)來(lái)。APM是一個(gè)比較老的標(biāo)準(zhǔn), 但是某些操作系統(tǒng)卻需要它,比如說(shuō)Windows95, Windows98等就需要用它來(lái)對(duì) 設(shè)備進(jìn)行電源管理。因?yàn)樵赪indows95, Windows98開(kāi)始推廣時(shí),ACPI的標(biāo)準(zhǔn)尚
17未普及。
參見(jiàn)圖3,本發(fā)明模式切換程序用來(lái)提供一個(gè)把控制權(quán)從32位EFI環(huán)境轉(zhuǎn) 到16位實(shí)環(huán)境然后返回EFI的切換機(jī)制;為了應(yīng)對(duì)可能出現(xiàn)的異常情況,本發(fā) 明提供了與之相反的反切換機(jī)制。具體的說(shuō),模式切換程序進(jìn)行從傳統(tǒng)BIOS的 16位實(shí)模式環(huán)境或者傳統(tǒng)0pR0Ms的16位實(shí)模式環(huán)境到32位EFI環(huán)境的切換, 需要進(jìn)行以下步驟處理任何PIC (Programmable Interrupt Controller,可編 程中斷控制器)禾口 APIC (Advanced Programmable Interrupt Controller,高級(jí) 可編程中斷控制器)的重編程序,并且裝載新的GDT (Global Description Tab le,全局描述符)和IDT (Interrupt Description Table,中斷描述符)表;執(zhí)行 請(qǐng)求的動(dòng)作;保存32位EFI環(huán)境的寄存器狀態(tài);恢復(fù)16位的中斷環(huán)境并且返 回16位實(shí)模式環(huán)境。切換機(jī)制的步驟與之相反,此屬英特爾公司提供的內(nèi)容, 在此不予贅述。
為了能夠從磁盤(pán)以外的設(shè)備啟動(dòng)傳統(tǒng)操作系統(tǒng),操作系統(tǒng)啟動(dòng)功能塊提供 基于16位BIOS的0pR0Ms啟動(dòng)操作系統(tǒng)的選擇。關(guān)于BDS (BIOS Boot Device Selection, BIOS啟動(dòng)設(shè)備選擇)在前文已有闡述,現(xiàn)提供傳統(tǒng)BDS流程,參見(jiàn) 圖2:判斷是否需要傳統(tǒng)的服務(wù)(傳統(tǒng)的0pR0Ms的情況、啟動(dòng)各個(gè)傳統(tǒng)操作系 統(tǒng)的情況、是否存在一個(gè)可啟動(dòng)的操作系統(tǒng)情況),如果不需要就選擇普通EFI 啟動(dòng)路徑來(lái)啟動(dòng)EFI系統(tǒng)或者新型的操作系統(tǒng);如果需要的話,就選擇從傳統(tǒng) 路徑來(lái)啟動(dòng)傳統(tǒng)的操作系統(tǒng),首先加載對(duì)傳統(tǒng)路徑提供支持的驅(qū)動(dòng),然后加載 傳統(tǒng)BI0S程序(指EFI之前的BIOS, —般是用匯編語(yǔ)言編寫(xiě)的16位程序);判 斷是否需要傳統(tǒng)的視頻可選只讀存儲(chǔ)器,如果需要的話,就載入傳統(tǒng)視頻可選 只讀存儲(chǔ)器,否則直接進(jìn)入下一步;判斷是否需要用其它的傳統(tǒng)可選只讀存儲(chǔ) 器,如果需要的話,則加載傳統(tǒng)可選只讀存儲(chǔ)器,否則直接進(jìn)入下一步;判斷 是否啟動(dòng)傳統(tǒng)操作系統(tǒng),如果不需要的話,就進(jìn)入普通EFI啟動(dòng),如果需要,則進(jìn)入下一步;生成系統(tǒng)管理BIOS數(shù)據(jù)結(jié)構(gòu),生成傳統(tǒng)設(shè)備的結(jié)構(gòu),生成BBS (bios啟動(dòng)規(guī)范)和INT15 E820數(shù)據(jù)結(jié)構(gòu)(INT 15是一個(gè)復(fù)雜的中斷,主要 用來(lái)向操作系統(tǒng)提供多種系統(tǒng)服務(wù), 一些傳統(tǒng)操作系統(tǒng)調(diào)用INT15的E820功能 査詢內(nèi)存大小和分配情況),生成高級(jí)電源管理接口;裝載兼容性系統(tǒng)管理模式 程序,然后嘗試啟動(dòng)傳統(tǒng)操作系統(tǒng);如果啟動(dòng)成功,則將控制權(quán)交給操作系統(tǒng), 傳統(tǒng)16位形式的BIOS對(duì)其運(yùn)行期間提供支持,保障操作系統(tǒng)的穩(wěn)定運(yùn)行。如 果啟動(dòng)失敗,則存儲(chǔ)啟動(dòng)表信息,重新尋找可以使用的可啟動(dòng)設(shè)備;如果仍然 無(wú)法正常使用,將有,就從下一個(gè)可啟動(dòng)設(shè)備來(lái)啟動(dòng)操作系統(tǒng),否則重啟系統(tǒng)。
為了提高實(shí)用性,本發(fā)明提供更進(jìn)一步的技術(shù)方案目前的BIOS均采用匯 編語(yǔ)言編程,本發(fā)明實(shí)施例的兼容性支持模塊中的85 95%的代碼均采用C語(yǔ) 言進(jìn)行編寫(xiě),移植性好,便于調(diào)試。本發(fā)明實(shí)施時(shí),兼容性支持模塊編譯過(guò)程 中生成用于支持遠(yuǎn)程源代碼調(diào)試的PDB文件,PDB文件是微軟公司支持調(diào)試的一 個(gè)文件格式,在pdb文件里面記錄了源代碼的行號(hào),標(biāo)識(shí)等信息。
權(quán)利要求
1.一種EFI平臺(tái)的兼容方法,其特征是設(shè)置兼容性支持模塊并掛接到EFI平臺(tái),兼容性支持模塊構(gòu)建16位實(shí)環(huán)境并提供與傳統(tǒng)16位BIOS運(yùn)行期間一致的功能以便支持基于16位BIOS的OpROMs、安裝或啟動(dòng)基于16位BIOS的操作系統(tǒng)、和/或在基于16位BIOS的操作系統(tǒng)安裝或運(yùn)行期間提供支持。
2. 如權(quán)利要求1所述兼容方法,其特征是兼容性支持模塊的工作流程有 以下基本步驟,(1) 進(jìn)行兼容性支持模塊內(nèi)部初始化的步驟;(2) 進(jìn)行兼容性模塊與EFI的交互步驟;(3) 激活并調(diào)用基于16位BIOS的0pR0Ms的步驟。
3. 如權(quán)利要求1或2所述兼容方法,其特征是所述兼容性支持模塊包括 以下部分,與EFI的接口部分,用于兼容性支持模塊與EFI的聯(lián)系; 內(nèi)部初始化程序部分,用于兼容性支持模塊的內(nèi)部初始化; 0pR0Ms處理功能塊,用于激活并且調(diào)用基于16位BIOS的0pR0Ms; 形實(shí)切換功能塊,用于兼容性支持模塊與EFI的交互; BIOS運(yùn)行期間支持部分,用于實(shí)現(xiàn)與傳統(tǒng)16位BIOS運(yùn)行期間一致的功能; 來(lái)自EFI的數(shù)據(jù)發(fā)送到與EFI的接口部分后轉(zhuǎn)發(fā)到兼容性支持模塊的其它 部分,并通過(guò)與EFI的接口部分調(diào)用內(nèi)部初始化程序部分進(jìn)行初始化;來(lái)自EFI 的數(shù)據(jù)中需要0pRoms的數(shù)據(jù)傳送到0pRoms處理功能塊處理;與EFI的接口部 分和0pRoms處理功能塊調(diào)用Bios運(yùn)行期間支持部分進(jìn)行支持;當(dāng)Bios運(yùn)行期 間支持部分需要用到32位EFI環(huán)境時(shí)調(diào)用形實(shí)切換功能塊,來(lái)進(jìn)入到32位環(huán) 境獲取數(shù)據(jù)或服務(wù)。
4. 如權(quán)利要求3所述的兼容方法,其特征是形實(shí)切換功能塊提供兩種機(jī)制,把控制權(quán)從32位EFI環(huán)境轉(zhuǎn)到16位實(shí)環(huán)境然后返回32位EFI環(huán)境的切換 機(jī)制;把控制權(quán)從16位實(shí)環(huán)境轉(zhuǎn)到32位EFI環(huán)境然后返回到16位實(shí)環(huán)境的反 切換機(jī)制。
5. 如權(quán)利要求1或2所述的兼容方法,其特征是通過(guò)兼容性支持模塊啟 動(dòng)操作系統(tǒng)時(shí),提供從基于16位BIOS的0pR0Ms啟動(dòng)操作系統(tǒng)的選擇。
6. 如權(quán)利要求1或2所述的兼容方法,其特征是所述兼容性支持模塊的 85 95%代碼采用C語(yǔ)言編寫(xiě)。
7. 如權(quán)利要求1或2所述的兼容方法,其特征是兼容性支持模塊編譯過(guò) 程中生成用于支持遠(yuǎn)程源代碼調(diào)試的PDB文件。
8. 如權(quán)利要求1或2所述的兼容方法,其特征是所述兼容性支持模塊中 與EFI的接口部分遵循Intel的EFI規(guī)范,與基于16位BIOS的操作系統(tǒng)聯(lián)系 的部分遵循傳統(tǒng)16位BIOS的規(guī)范。
全文摘要
一種在EFI平臺(tái)上兼容操作系統(tǒng)的方法,設(shè)置兼容性支持模塊并掛接到EFI平臺(tái),實(shí)現(xiàn)16位BIOS模塊以及獨(dú)立的EFI與16位BIOS模塊之間的交互層。實(shí)現(xiàn)兩者之間的互相通信,交互層可以從16位BIOS模塊中收集信息提供給EFI,同時(shí)也從EFI收集信息提供給16位BIOS模塊。計(jì)算機(jī)設(shè)備加電啟動(dòng)后由EFI控制,兼容性支持模塊提供16位實(shí)環(huán)境以便安裝、啟動(dòng)基于16位BIOS的操作系統(tǒng),并在該操作系統(tǒng)運(yùn)行期間提供支持。運(yùn)用本發(fā)明在將來(lái)設(shè)有EFI的計(jì)算機(jī)上即能夠啟動(dòng)新型操作系統(tǒng)(例如微軟即將要推出的LONGHORN),也能夠啟動(dòng)現(xiàn)有的各種傳統(tǒng)操作系統(tǒng)。本發(fā)明移植性好,啟動(dòng)速度快,能夠?qū)Σ僮飨到y(tǒng)提供更好的支持,使操作系統(tǒng)啟動(dòng)的速度更快,運(yùn)行更加穩(wěn)定。
文檔編號(hào)G06F9/44GK101650647SQ200810048770
公開(kāi)日2010年2月17日 申請(qǐng)日期2008年8月12日 優(yōu)先權(quán)日2008年8月12日
發(fā)明者牧 李 申請(qǐng)人:武漢卓華軟件有限責(zé)任公司