專利名稱:一種基于開源系統(tǒng)基本輸入輸出系統(tǒng)的bios系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)應(yīng)用領(lǐng)域,尤其涉及一種基于開源基本輸入輸出系統(tǒng)(BIOS) 的BIOS系統(tǒng)和方法。
背景技術(shù):
自從1981年,IBM為世界上第一臺(tái)個(gè)人計(jì)算機(jī)(PC)開發(fā)出針對(duì)其的基本輸入輸出系統(tǒng)(BIOS)以來,為了保持向后兼容,雖然各種計(jì)算機(jī)軟硬件層出不窮,但傳統(tǒng)的PC BIOS 作為軟硬件接口,它的架構(gòu)并沒有發(fā)生太大改變。通用的PC BIOS由兩部分組成一是板級(jí)模塊,特定于每個(gè)系統(tǒng)平臺(tái),用于初始化系統(tǒng)平臺(tái)中所有的設(shè)備到可以工作的穩(wěn)定狀態(tài), 包括中央處理器(CPU)、南橋、北橋以及連接在南北橋上的硬件模塊等;一是接口模塊,普遍適用于所有平臺(tái),作為通用接口,通過對(duì)板級(jí)設(shè)備進(jìn)行抽象提供給操作系統(tǒng)統(tǒng)一的接口與板級(jí)設(shè)備進(jìn)行通信。其功能主要包括1)開機(jī)自測(cè)試(POST,Power On Self Test),計(jì)算機(jī)系統(tǒng)加電后,控制權(quán)交給BIOS,BIOS執(zhí)行系統(tǒng)檢測(cè),包括CPU和各種傳統(tǒng)設(shè)備的初始化,傳統(tǒng)設(shè)備包括可編程間隔計(jì)時(shí)器、可編程中斷控制器、直接內(nèi)存訪問控制器等;幻初始化高速緩沖存儲(chǔ)器、主板芯片組、顯卡及相關(guān)外圍設(shè)備的寄存器;幻保存系統(tǒng)的設(shè)置,存儲(chǔ)在非易失性存儲(chǔ)器中;4)將中斷服務(wù)例程保存于內(nèi)存中,提供給操作系統(tǒng)啟動(dòng)過程和運(yùn)行過程的調(diào)用。典型的中斷服務(wù)例程包括INT10H的圖形服務(wù)例程,INT13H的磁盤服務(wù)例程, INT16H的鍵盤服務(wù)例程等。但是隨著計(jì)算機(jī)的發(fā)展,PC BIOS由于軟硬件接口不公開、業(yè)界工業(yè)規(guī)范內(nèi)容廣泛、運(yùn)行在x86系統(tǒng)下的PC BIOS大部分采用匯編語言實(shí)現(xiàn),而匯編語言提供的語言級(jí)抽象較少,編譯復(fù)雜,并且PC BIOS中不斷加入新的功能模塊使得傳統(tǒng)PC BIOS的規(guī)模和容量變得龐大冗余、晦澀難懂,架構(gòu)陳舊,啟動(dòng)速度慢并且存在較多漏洞(BUG)。因此,在可擴(kuò)展固件接口(UEFI)規(guī)范推出之前,開源BIOS應(yīng)運(yùn)而生,如由Los Alamos國(guó)家實(shí)驗(yàn)室創(chuàng)建的 coreboot系統(tǒng)(原名LinuxBIOS),以及現(xiàn)由德國(guó)DENX軟件工程中心Wolfgang Denk維護(hù)的 U-Boot系統(tǒng),它們普遍具備模塊化架構(gòu)設(shè)計(jì)、可擴(kuò)展性強(qiáng)、使用高級(jí)語言開發(fā)、可移植性強(qiáng)以及系統(tǒng)平臺(tái)支持豐富等優(yōu)勢(shì)。開源BIOS的主要功能包括1)開機(jī)自測(cè)試(POST),當(dāng)計(jì)算機(jī)系統(tǒng)加電后,系統(tǒng)控制權(quán)交給開源BIOS,開源BIOS執(zhí)行系統(tǒng)檢測(cè),包括CPU各項(xiàng)寄存器、 可編程間隔計(jì)時(shí)器、可編程中斷控制器和直接內(nèi)存訪問控制器等;幻初始化高速緩沖存儲(chǔ)器、主板芯片組、顯卡及相關(guān)外圍設(shè)備的寄存器;幻保存系統(tǒng)設(shè)置,存儲(chǔ)在非易失性存儲(chǔ)器中。但是這些開源BIOS由于不提供商業(yè)非開源操作系統(tǒng)所依賴的中斷服務(wù)例程,無法支持如Windows家族在內(nèi)的大型商業(yè)非開源操作系統(tǒng)。因此,開發(fā)出一種支持傳統(tǒng)和現(xiàn)代操作系統(tǒng)的基于開源BIOS啟動(dòng)操作系統(tǒng)的系統(tǒng)和方法是亟待解決的問題。
發(fā)明內(nèi)容
本發(fā)明要解決的問題是提供一種基于開源系統(tǒng)基本輸入輸出系統(tǒng)的BIOS系統(tǒng)和啟動(dòng)方法。為解決上述技術(shù)問題,本發(fā)明提供了如下技術(shù)方案基本輸入輸出系統(tǒng)(BIOS)的操作系統(tǒng)接口(INTERFACE)模塊的中斷服務(wù)例程采用可選擇性唯讀記憶體(Option ROM)模組(Module)方式實(shí)現(xiàn);所述BIOS在計(jì)算機(jī)系統(tǒng)加電時(shí),板級(jí)核心模塊(CORE)初始化板級(jí)設(shè)備并輸出系統(tǒng)信息,板級(jí)核心模塊抽象層(MAPPER)模塊根據(jù)所述系統(tǒng)信息轉(zhuǎn)換得到可由所述操作系統(tǒng)接口模塊識(shí)別的系統(tǒng)信息表格,所述板級(jí)核心模塊對(duì)所述操作系統(tǒng)接口模塊包含的所述中斷服務(wù)例程根據(jù)所述系統(tǒng)信息表格中的信息依次進(jìn)行初始化,所述系統(tǒng)信息包括所述計(jì)算機(jī)系統(tǒng)的硬件列表、相應(yīng)的端口地址以及內(nèi)存大小的信息。進(jìn)一步的,所述操作系統(tǒng)接口模塊采用Option ROM Module方式實(shí)現(xiàn)所述中斷服務(wù)例程具體包括,所述操作系統(tǒng)接口模塊包括多個(gè)Option ROM,每個(gè)Option ROM對(duì)應(yīng)一個(gè)服務(wù)例程,所述Option ROM包括所述服務(wù)例程、所述服務(wù)例程的初始化例程和可選擇性唯讀記憶體頭(Option ROM Header),所述服務(wù)例程的初始化例程包括所述服務(wù)例程的入口地址信息,所述OptionROM Header包括所述Option ROM的大小和所述服務(wù)例程的初始化例程地址的信息。進(jìn)一步的,所述板級(jí)核心模塊為可擴(kuò)展開源BIOS;所述MAPPER模塊是所述開源 BIOS相關(guān)的。進(jìn)一步的,所述板級(jí)核心模塊還保存所述操作系統(tǒng)接口模塊的地址范圍,所述 Option ROM依次進(jìn)行初始化具體包括所述MAPPER模塊初始化完成后,所述板級(jí)核心模塊根據(jù)所述OptionROM規(guī)定的數(shù)據(jù)單元的大小在所述操作系統(tǒng)接口模塊的地址范圍內(nèi)掃描所述操作系統(tǒng)接口模塊,掃描到第一個(gè)Option ROM,調(diào)用所述Option ROM 的 Option ROM Header 中指定的所述Option ROM 的服務(wù)例程初始化例程的函數(shù)入口,初始化所述Option ROM對(duì)應(yīng)的服務(wù)例程;所述Option ROM初始化完成后,所述板級(jí)核心模塊掃描所述操作系統(tǒng)接口模塊中所述Option ROM的下一 Option ROM,調(diào)用當(dāng)前掃描的所述Option ROM的Option ROM Header中指定的所述Option ROM的服務(wù)例程初始化例程的函數(shù)入口,初始化當(dāng)前所述 Option ROM對(duì)應(yīng)的服務(wù)例程,直到所述操作系統(tǒng)接口模塊最后一個(gè)Option ROM對(duì)應(yīng)的服務(wù)例程初始化完畢。進(jìn)一步的,所述Option ROM Header中還包含簽名信息,所述板級(jí)核心模塊判斷掃描到所述Option ROM的方法為所述板級(jí)核心模塊根據(jù)所述Option ROM規(guī)定的數(shù)據(jù)單元的大小在所述操作系統(tǒng)接口模塊的地址范圍內(nèi)掃描所述操作系統(tǒng)接口模塊,如檢測(cè)前兩個(gè)字節(jié)為所述簽名信息, 則掃描到一個(gè)所述Option ROM。進(jìn)一步的,所述板級(jí)核心模塊掃描所述Option ROM,掃描到所述簽名后,還根據(jù)所述Option ROM Header中保存的對(duì)應(yīng)的服務(wù)例程大小的信息對(duì)所述Option ROM整體進(jìn)行奇偶校驗(yàn),如所述奇偶校驗(yàn)和正確,則初始化所述Option ROM對(duì)應(yīng)的服務(wù)例程。進(jìn)一步的,如所述奇偶校驗(yàn)和正確,所述板級(jí)核心模塊初始化所述OptionROM對(duì)應(yīng)的服務(wù)例程后,還根據(jù)所述Option ROM Header保存的所述服務(wù)例程大小的信息更新 Option ROM掃描算法的基址;
6
如所述奇偶校驗(yàn)和不正確,所述板級(jí)核心模塊以所述Option ROMHeader中提供的數(shù)據(jù)單元大小為單位更新Option ROM掃描算法的基址;所述板級(jí)核心模塊更新完所述掃描算法的基址后還判斷所述基址是否超出所述操作系統(tǒng)接口模塊的地址范圍,如是,則根據(jù)用戶設(shè)置,到軟盤、硬盤或CD ROM中加載操作系統(tǒng),如否,則掃描下一 Option ROM。進(jìn)一步的,所述Option ROM對(duì)應(yīng)服務(wù)例程的根據(jù)所述系統(tǒng)信息表格進(jìn)行初始化具體包括所述服務(wù)例程初始化過程中需要判斷所述服務(wù)例程操作的相關(guān)硬件是否存在,或查詢端口地址或可用內(nèi)存大小時(shí),所述操作系統(tǒng)接口模塊通過查詢所述MAPPER模塊維護(hù)的系統(tǒng)信息表格獲得需要的信息,所述系統(tǒng)信息表格存儲(chǔ)在BIOS數(shù)據(jù)區(qū)或非易失性存儲(chǔ)器(Non-Volatile RAM)中。進(jìn)一步的,所述Option ROM對(duì)應(yīng)的服務(wù)例程初始化時(shí),還包括所述Option ROM 中的服務(wù)例程初始化例程注冊(cè)所述服務(wù)例程的入口地址到中斷服務(wù)向量表(Interrupt Vector Table)中,所述中斷服務(wù)向量表由所述MAPPER模塊維護(hù)。進(jìn)一步的,所述操作系統(tǒng)接口模塊的中斷服務(wù)例程為計(jì)算機(jī)操作系統(tǒng)啟動(dòng)所必須的服務(wù)例程,包括圖形服務(wù)例程INT10H,獲取內(nèi)存大小服務(wù)例程INT12H,磁盤服務(wù)例程 INT13H,雜項(xiàng)服務(wù)例程INT15H、鍵盤服務(wù)例程INT16H和外部設(shè)備互聯(lián)總線設(shè)備基本輸入輸出系統(tǒng)(PCI BIOS)服務(wù)例程INTlAH等。為了解決上述技術(shù)問題,本發(fā)明還提供了一種基于開源基本輸入輸出系統(tǒng)(BIOS) 的BIOS系統(tǒng),其特征在于,包括板級(jí)核心模塊、板級(jí)核心模塊抽象層(MAPPER)模塊和操作系統(tǒng)接口模塊,其中所述板級(jí)核心模塊,用于計(jì)算機(jī)系統(tǒng)加電后,初始化板級(jí)設(shè)備并輸出系統(tǒng)信息,所述系統(tǒng)信息包括所述計(jì)算機(jī)系統(tǒng)的硬件列表、相應(yīng)的端口以及內(nèi)存大小的信息;所述MAPPER模塊,用于根據(jù)所述系統(tǒng)信息轉(zhuǎn)換得到可由所述操作系統(tǒng)接口模塊識(shí)別的系統(tǒng)信息表格;所述操作系統(tǒng)接口模塊,用于采用可選擇性唯讀記憶體(Option ROM)模組 (Module)方式實(shí)現(xiàn)中斷服務(wù)例程,根據(jù)所述系統(tǒng)信息表格依次進(jìn)行初始化所述中斷服務(wù)例程。進(jìn)一步的,所述操作系統(tǒng)接口模塊包括多個(gè)Option ROM,每個(gè)OptionROM對(duì)應(yīng)一個(gè)服務(wù)例程,所述Option ROM包括服務(wù)例程本身、所述服務(wù)例程的初始化例程和可選擇性唯讀記憶體頭(Option ROM Header),其中,所述服務(wù)例程的初始化例程用于保存所述服務(wù)例程的入口地址信息,配置硬件, 并注冊(cè)所述服務(wù)例程的入口地址信息至中斷向量表中;所述Option ROM Header用于保存所述服務(wù)例程的大小和所述服務(wù)例程的初始化例程地址的信息。進(jìn)一步的,所述板級(jí)核心模塊,還用于初始化板級(jí)設(shè)備后,跳轉(zhuǎn)到所述MAPPER模塊,所述板級(jí)核心模塊是可擴(kuò)展開源BIOS ;所述MAPPER模塊,還用于執(zhí)行內(nèi)部的初始化函數(shù)完成自身的初始化,讀取并解析所述板級(jí)核心模塊輸出的系統(tǒng)信息,根據(jù)所述系統(tǒng)信息創(chuàng)建和維護(hù)所述系統(tǒng)信息表格,跳轉(zhuǎn)到所述板級(jí)核心模塊,所述MAPPER模塊是所述開源BIOS相關(guān)的。進(jìn)一步的,所述板級(jí)核心模塊還用于保存所述操作系統(tǒng)接口模塊的地址范圍,初始化INTERFACE模塊,根據(jù)所述地址范圍掃描所述INTERFACE模塊,掃描到第一個(gè)Option ROM,保存所述Option ROM的基址,調(diào)用所述Option ROM的Option ROM Header中指定的所述Option ROM的服務(wù)例程初始化例程的函數(shù)入口,從所述Option ROM跳轉(zhuǎn)回來,掃描所述操作系統(tǒng)接口模塊中所述Option ROM的下一 Option ROM,根據(jù)當(dāng)前掃描的所述OptionROM 的Option ROM Header中指定的所述Option ROM的大小,更新所述掃描算法的基址,并判斷所述基址是否超出所述操作系統(tǒng)接口模塊的地址范圍,如是,則根據(jù)用戶設(shè)置,到軟盤、 硬盤或CD ROM中加載操作系統(tǒng),如否,則掃描當(dāng)前Option ROM的下一 Option ROM ;所述MAPPER模塊還用于維護(hù)BIOS數(shù)據(jù)區(qū)和中斷服務(wù)向量表;所述操作系統(tǒng)接口模塊還用于所述Option ROM的服務(wù)例程初始化例程的函數(shù)入口被調(diào)用,執(zhí)行所述Option ROM對(duì)應(yīng)的服務(wù)例程的初始化例程,對(duì)所述服務(wù)例程進(jìn)行初始化,初始化完成跳回所述板級(jí)核心模塊;所述操作系統(tǒng)接口模塊的所述Option ROM的服務(wù)例程初始化例程還用于注冊(cè)所述服務(wù)例程的入口地址到所述中斷服務(wù)向量表。進(jìn)一步的,所述Option ROM Header中還包含簽名信息,所述板級(jí)核心模塊還用于根據(jù)所述INTERFACE模塊地址范圍掃描所述INTERFACE 模塊,如檢測(cè)前兩個(gè)字節(jié)為所述簽名信息,則掃描到一個(gè)所述Option ROM,根據(jù)所述Option ROM Header中保存的對(duì)應(yīng)的服務(wù)例程大小的信息對(duì)所述Option ROM整體進(jìn)行奇偶校驗(yàn),如所述奇偶校驗(yàn)和正確,則調(diào)用所述Option ROM的Option ROM Header中指定的所述Option ROM的服務(wù)例程初始化例程的函數(shù)入口,根據(jù)所述Option ROM Header保存的所述服務(wù)例程大小的信息更新掃描算法的基址;如所述奇偶校驗(yàn)和不正確,所述板級(jí)核心模塊以512字節(jié)為單位更新掃描算法的基址,所述板級(jí)核心模塊更新完所述掃描的基址后還判斷所述基址是否超出所述操作系統(tǒng)接口模塊的地址范圍,如是,則根據(jù)用戶設(shè)置,到軟盤、硬盤或CD ROM中加載操作系統(tǒng),如否,則掃描下一 Option ROM。進(jìn)一步的,所述操作系統(tǒng)接口模塊還用于所述服務(wù)例程初始化過程中需要判斷所述服務(wù)例程操作的相關(guān)硬件是否存在或查詢端口地址或可用內(nèi)存大小時(shí),查詢所述MAPPER 模塊維護(hù)的系統(tǒng)信息表格獲得需要的信息。本發(fā)明提供的一個(gè)或多個(gè)實(shí)施例,該板級(jí)核心模塊(CORE)選擇開源基本輸入輸出系統(tǒng)(BIOS)初始化板級(jí)設(shè)備,輸出系統(tǒng)信息,該系統(tǒng)信息包括內(nèi)存大小和設(shè)備類型等,該操作系統(tǒng)接口模塊中的中斷服務(wù)例程(Interrupt ServiceRoutine)采用Option ROM模組方式實(shí)現(xiàn),該中斷服務(wù)例程根據(jù)由所述系統(tǒng)信息轉(zhuǎn)換得到可由該操作系統(tǒng)接口 (INTERFACE)模塊識(shí)別的系統(tǒng)信息表格依次初始化,并注冊(cè)該中斷服務(wù)例程至中斷向量表中。通過擴(kuò)展開源BIOS的架構(gòu),引入板級(jí)核心模塊抽象層(MAPPER)模塊作為板級(jí)核心模塊和操作系統(tǒng)接口模塊之間的接口,并且操作系統(tǒng)接口模塊采用Option ROM模組方式實(shí)現(xiàn)計(jì)算機(jī)操作系統(tǒng)啟動(dòng)所需的服務(wù)例程,開發(fā)出操作系統(tǒng)接口模塊和開源BIOS相結(jié)合的BIOS 系統(tǒng),不僅能夠支持開源操作系統(tǒng),也能夠支持非開源商業(yè)操作系統(tǒng),如Windows操作系統(tǒng)等,具有很好的兼容性。
圖1為基于本發(fā)明的BIOS系統(tǒng)和方法的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖;圖2 (a)為本發(fā)明基于開源BIOS的BIOS系統(tǒng)在計(jì)算機(jī)閃存(FLASH)中的結(jié)構(gòu)示意圖;圖2(b)為本發(fā)明的基于開源BIOS的BIOS系統(tǒng)在計(jì)算機(jī)內(nèi)存中的結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)施例一的基于開源BIOS的BIOS系統(tǒng)的結(jié)構(gòu)示意圖;圖4為本發(fā)明的BIOS系統(tǒng)在計(jì)算機(jī)啟動(dòng)過程中的方法流程圖;圖5為本發(fā)明的方法在計(jì)算機(jī)啟動(dòng)過程中板級(jí)核心模塊CORE初始化操作系統(tǒng)接口模塊INTERFACE的一 Option ROM的流程圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述。需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。圖1為基于本發(fā)明的BIOS系統(tǒng)和方法的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖,包括相互連接的南橋和北橋,與北橋相連接的中央處理器(CPU)、顯卡和內(nèi)存,與南橋相連接的大容量存儲(chǔ)和系統(tǒng)基本輸入輸出系統(tǒng)(System BIOS),少針腳型接口(LPC)總線,外設(shè)部件互聯(lián)標(biāo)準(zhǔn) (PCI)總線以及與PCI總線相連接的PCI設(shè)備。其中本申請(qǐng)的System BIOS在閃存(FLASH)中的結(jié)構(gòu)如圖2(a)所示,包括板級(jí)核心模塊(CORE)、板級(jí)核心模塊抽象層(MAPPER)模塊和操作系統(tǒng)接口模塊(INTERFACE)。本申請(qǐng)的BIOS系統(tǒng)通過擴(kuò)展開源BIOS得到。其中該操作系統(tǒng)接口模塊采用可選擇性唯讀記憶體(Option ROM)模組(Module)方式實(shí)現(xiàn)中斷服務(wù)例程,該服務(wù)例程為編譯后的二進(jìn)制代碼經(jīng)過壓縮后形成的壓縮的二進(jìn)制代碼。本申請(qǐng)的BIOS在計(jì)算機(jī)硬件系統(tǒng)上電后,為了得到更快的執(zhí)行速度,該板級(jí)核心模塊和該MAPPER模塊拷貝到內(nèi)存中執(zhí)行,該操作系統(tǒng)接口模塊經(jīng)過解壓縮后拷貝到內(nèi)存中執(zhí)行,該操作系統(tǒng)接口模塊中的服務(wù)例程解壓縮為二進(jìn)制代碼。BIOS在內(nèi)存中的結(jié)構(gòu)如圖2 (b)所示,按照地址從高到低的順序包括System BIOS (即板級(jí)核心模塊、該MAPPER模塊和該操作系統(tǒng)接口模塊)、VGA BIOS及數(shù)據(jù)區(qū)、傳統(tǒng)DOS應(yīng)用程序工作區(qū)、BIOS數(shù)據(jù)區(qū)和中斷向量表。該板級(jí)核心模塊,用于計(jì)算機(jī)硬件系統(tǒng)加電后,初始化板級(jí)設(shè)備并輸出系統(tǒng)信息, 跳轉(zhuǎn)到該MAPPER模塊,該系統(tǒng)信息包括該計(jì)算機(jī)系統(tǒng)的硬件列表、相應(yīng)的端口地址以及內(nèi)存大小的信息,還用于保存該操作系統(tǒng)接口模塊的地址范圍。該板級(jí)核心模塊是開源BIOS相關(guān)的,其功能和結(jié)構(gòu)依賴于所采用的開源BIOS的功能和結(jié)構(gòu)。該板級(jí)核心模塊抽象層(MAPPER)模塊,用于執(zhí)行內(nèi)部的初始化函數(shù)完成自身的初始化,讀取并解析所述板級(jí)核心模塊輸出的系統(tǒng)信息,根據(jù)所述系統(tǒng)信息創(chuàng)建和維護(hù)可由所述操作系統(tǒng)接口(INTERFACE)模塊識(shí)別的系統(tǒng)信息表格,跳轉(zhuǎn)到所述板級(jí)核心模塊, 該MAPPER模塊是該開源BIOS相關(guān)的。該系統(tǒng)信息表格的格式根據(jù)該開源BIOS確定,存儲(chǔ)在BIOS數(shù)據(jù)區(qū)或非易失性存儲(chǔ)器(Non-Volatile RAM)中。該MAPPER模塊還用于維護(hù)一
9中斷服務(wù)向量表。該操作系統(tǒng)接口模塊,用于采用可選擇性唯讀記憶體(Option ROM)模組方式實(shí)現(xiàn)計(jì)算機(jī)操作系統(tǒng)啟動(dòng)時(shí)所需的中斷服務(wù)例程,該中斷服務(wù)例程根據(jù)由該MAPPER模塊維護(hù)的系統(tǒng)信息表格依次進(jìn)行初始化。操作系統(tǒng)接口模塊包括多個(gè)Option ROM,每個(gè)Option ROM對(duì)應(yīng)一個(gè)服務(wù)例程,所述Option ROM包括服務(wù)例程、該服務(wù)例程的初始化例程和可選擇性唯讀記憶體頭(Option ROM Header),其中,該服務(wù)例程的初始化例程用于配置硬件和保存該服務(wù)例程的入口地址信息;該Option ROM Header用于保存簽名信息、該Option ROM的大小和該服務(wù)例程的初始化例程地址的信息。該服務(wù)例程的大小為該Option ROM規(guī)定的數(shù)據(jù)單元大小的整數(shù)倍,本實(shí)施例中該Option ROM的數(shù)據(jù)單元以512字節(jié)為例。在該計(jì)算機(jī)閃存(FLASH)中,該服務(wù)例程為編譯后的二進(jìn)制代碼經(jīng)過壓縮后形成的壓縮的二進(jìn)制代碼。該計(jì)算機(jī)硬件系統(tǒng)啟動(dòng)后,為了提高執(zhí)行速度,該BIOS系統(tǒng)的板級(jí)核心模塊和MAPPER模塊直接拷貝到內(nèi)存中執(zhí)行,同時(shí)該操作系統(tǒng)接口模塊中的服務(wù)例程解壓縮為二進(jìn)制代碼拷貝到內(nèi)存中。該板級(jí)核心模塊在該MAPPER模塊初始化完成后,掃描該操作系統(tǒng)接口模塊中的第一個(gè)Option ROM,保存該Option ROM的基址,掃描到該OptionROM Header中的簽名后, 根據(jù)該Option ROM Header中保存的對(duì)應(yīng)的服務(wù)例程大小的信息對(duì)該Option ROM整體進(jìn)行奇偶校驗(yàn),如該奇偶校驗(yàn)和正確,調(diào)用該Option ROM的Option ROM Header中指定的該 Option ROM的服務(wù)例程初始化例程的函數(shù)入口,同時(shí)更新掃描算法的基址為當(dāng)前Option ROM掃描算法的基址與當(dāng)前Option ROM的大小之和,該掃描算法的基址仍為512字節(jié)的整數(shù)倍。如該奇偶校驗(yàn)和不正確,該板級(jí)核心模塊以設(shè)定大小的地址段,如512字節(jié)為單位更新掃描的基址,更新完所述掃描的基址后還判斷該基址是否超出該操作系統(tǒng)接口模塊的地址范圍,如是,則表明所有OptionROM以初始化完畢,可繼續(xù)根據(jù)用戶設(shè)置,到軟盤、硬盤或 ⑶ROM中加載操作系統(tǒng),如否,則掃描下一 Option ROM。該操作系統(tǒng)接口模塊還用于該Option ROM的服務(wù)例程初始化例程的函數(shù)入口被調(diào)用,執(zhí)行該Option ROM對(duì)應(yīng)的服務(wù)例程的初始化例程,對(duì)該服務(wù)例程進(jìn)行初始化,該 Option ROM的服務(wù)例程初始化例程注冊(cè)該服務(wù)例程的入口地址到該MAPPER模塊維護(hù)的中斷服務(wù)向量表,初始化完成跳轉(zhuǎn)回該板級(jí)核心模塊。該板級(jí)核心模塊在初始化完當(dāng)前Option ROM后,掃描該操作系統(tǒng)接口模塊中當(dāng)前 Option ROM的下一Option ROM,掃描到該Option ROM的簽名后,根據(jù)該Option ROM Header 中保存的對(duì)應(yīng)的服務(wù)例程大小的信息對(duì)該Option ROM整體進(jìn)行奇偶校驗(yàn),如該奇偶校驗(yàn)和正確,則調(diào)用該Option ROM的Option ROM Header中指定的該Option ROM的服務(wù)例程初始化例程的函數(shù)入口,根據(jù)該Option ROM Header保存的該服務(wù)例程大小的信息更新掃描算法的基址,調(diào)用當(dāng)前掃描的該Option ROM的Option ROM Header中指定的該Option ROM 的服務(wù)例程初始化例程的函數(shù)入口,如所述奇偶校驗(yàn)和不正確,所述板級(jí)核心模塊以512 字節(jié)為單位更新掃描的基址。該板級(jí)核心模塊判斷該基址是否超出所述操作系統(tǒng)接口模塊的地址范圍,如是,則表明所有Option ROM以初始化完畢,可繼續(xù)根據(jù)用戶設(shè)置,到軟盤、硬盤或⑶ROM中加載操作系統(tǒng),如否,則掃描當(dāng)前Option ROM的下一 Option ROM按照同樣方式初始化下一 Option ROM對(duì)應(yīng)的服務(wù)例程。該操作系統(tǒng)接口模塊存儲(chǔ)的中斷服務(wù)例程包括計(jì)算機(jī)系統(tǒng)啟動(dòng)所必須的服務(wù)例程,包括圖形服務(wù)例程INT10H,獲取內(nèi)存大小服務(wù)例程INT12H,磁盤服務(wù)例程INT13H,雜項(xiàng)服務(wù)例程INT15H、鍵盤服務(wù)例程INT16H和外部設(shè)備互聯(lián)總線設(shè)備基本輸入輸出系統(tǒng)(PCI BIOS)服務(wù)例程INTlAH等。該操作系統(tǒng)接口模塊還用于該服務(wù)例程初始化過程中需要判斷該服務(wù)例程操作的相關(guān)硬件是否存在,或查詢端口地址或可用內(nèi)存大小時(shí),查詢?cè)揗APPER模塊維護(hù)的系統(tǒng)信息表格獲得需要的信息。如磁盤服務(wù)例程INTUH初始化需要判斷是否存在軟盤、硬盤或光盤,則該操作系統(tǒng)接口模塊查詢?cè)揗APPER模塊維護(hù)的系統(tǒng)信息表格中的硬件列表得到需要的信息,如果存在相應(yīng)的硬件,則該Option ROM對(duì)應(yīng)的服務(wù)例程的初始化例程注冊(cè)該服務(wù)例程INT13H的函數(shù)入口地址到該MAPPER維護(hù)的中斷服務(wù)向量表中。對(duì)于INT12H其用于向操作系統(tǒng)報(bào)告內(nèi)存大小的信息,在INT12H初始化過程中,該操作系統(tǒng)接口模塊無需檢測(cè)內(nèi)存的大小,直接從該MAPPER模塊維護(hù)的系統(tǒng)信息表格中查詢所述信息。本發(fā)明的基于開源基本輸入輸出系統(tǒng)(BIOS)的BIOS啟動(dòng)方法中,BIOS的操作系統(tǒng)接口模塊采用可選擇性唯讀記憶體(Option ROM)模組(Module)方式實(shí)現(xiàn)。該BIOS在計(jì)算機(jī)硬件系統(tǒng)加電時(shí)板級(jí)核心模塊初始化板級(jí)設(shè)備并輸出系統(tǒng)信息,該系統(tǒng)信息包括所述計(jì)算機(jī)系統(tǒng)的硬件列表、相應(yīng)的端口地址以及內(nèi)存大小的信息,該操作系統(tǒng)接口模塊根據(jù)由該系統(tǒng)信息轉(zhuǎn)換得到的可由該操作系統(tǒng)接口(INTERFACE)模塊識(shí)別的系統(tǒng)信息表格對(duì)其中的Option ROM依次進(jìn)行初始化。下面結(jié)合具體實(shí)施例進(jìn)行詳細(xì)說明。實(shí)施例一本實(shí)施例的基于開源BIOS的BIOS系統(tǒng)的結(jié)構(gòu)示意圖如圖3所示,該開源BIOS為可擴(kuò)展BIOS。圖3中所示的BIOS系統(tǒng)大小為4Mb,其物理地址OxDOOOO到OxFFFFF包括板級(jí)核心模塊(CORE)、板級(jí)核心模塊抽象層(MAPPER)模塊和操作系統(tǒng)接口模塊(INTERFACE) 三個(gè)部分,其中物理地址OxFOOOO到OxFFFFF包括該板級(jí)核心模塊和該板級(jí)核心模塊抽象層模塊,該板級(jí)核心模塊位于高位地址從OxFFFFF開始,該MAPPER模塊位于該板級(jí)核心模塊的低位,其具體位置在編譯時(shí)確定。1)板級(jí)核心模塊(CORE)用于計(jì)算機(jī)系統(tǒng)加電后,獲得控制權(quán),初始化板級(jí)設(shè)備, 包括中央處理器、高速緩沖存儲(chǔ)器、內(nèi)存控制器、北橋及北橋相關(guān)的設(shè)備和南橋及南橋相關(guān)的設(shè)備等,輸出系統(tǒng)信息,跳轉(zhuǎn)到所述MAPPER模塊,所述系統(tǒng)信息包括所述計(jì)算機(jī)系統(tǒng)的硬件列表、相應(yīng)的端口地址以及內(nèi)存大小的信息,還用于保存所述操作系統(tǒng)接口模塊的地址范圍,從該MAPPER模塊跳轉(zhuǎn)回來,掃描操作系統(tǒng)接口模塊的Option ROM。2)MAPPER模塊,用于執(zhí)行內(nèi)部的初始化函數(shù)完成自身的初始化,讀取并解析所述板級(jí)核心模塊輸出的系統(tǒng)信息,根據(jù)所述系統(tǒng)信息創(chuàng)建和維護(hù)可由所述操作系統(tǒng)接口 (INTERFACE)模塊識(shí)別的系統(tǒng)信息表格,跳轉(zhuǎn)到所述板級(jí)核心模塊,維護(hù)中斷服務(wù)向量表。3)操作系統(tǒng)接口模塊(INTERFACE)從物理地址OxDOOOO到OxEFFFF,用于采用可選擇性唯讀記憶體(Option ROM)模組方式實(shí)現(xiàn)中斷服務(wù)例程,該Option ROM根據(jù)由該 MAPPER模塊維護(hù)的系統(tǒng)信息表格依次進(jìn)行初始化。本實(shí)施例的操作系統(tǒng)接口模塊包含3個(gè)Option ROM,每個(gè)Option ROM的大小是 512字節(jié)的整數(shù)倍。物理地址OxDOOOO到OxDFFFF范圍內(nèi)包含兩個(gè)Option ROM,因此具有兩個(gè)Option ROM Header。這兩個(gè)Option ROM分別提供了 INT 16H的鍵盤服務(wù)例程(Keyboard Service)和INT 15H的雜項(xiàng)服務(wù)例程(System Service)。對(duì)Windows操作系統(tǒng),物理地址從 OxEOOOO 到 OxEFFFF 范圍的 Option ROM 提供了 INT 13H 的磁盤服務(wù)例程(Disk Service)。 本發(fā)明不限定Option ROM的大小,以及內(nèi)存中服務(wù)例程Option ROM在操作系統(tǒng)接口模塊范圍內(nèi)的擺放位置。為了保證獨(dú)立性,以及為了該操作系統(tǒng)接口模塊提供高級(jí)操作系統(tǒng)如Windows操作系統(tǒng)和Linux操作系統(tǒng)啟動(dòng)所需的兼容性支持,該操作系統(tǒng)接口模塊還符合《即插即用 BIOS規(guī)范》中的ROM的標(biāo)準(zhǔn)格式。該板級(jí)核心模塊依次掃描該操作系統(tǒng)接口模塊中的Option ROM,掃描到該操作系統(tǒng)接口模塊中的Option ROM Header,查詢?cè)揙ption ROM Header中保存的簽名,根據(jù)該 Option ROM Header中保存的對(duì)應(yīng)的服務(wù)例程大小的信息對(duì)該Option ROM整體進(jìn)行奇偶校驗(yàn),如該奇偶校驗(yàn)和正確,則根據(jù)該Option ROM Header中提供的關(guān)于該Option ROM對(duì)應(yīng)的服務(wù)例程大小的信息進(jìn)行遞增或遞減搜索,更新掃描算法的基址,調(diào)用該Option ROM 的服務(wù)例程初始化例程的入口函數(shù),跳轉(zhuǎn)到該操作系統(tǒng)接口模塊進(jìn)行相應(yīng)功能的初始化。 如該奇偶校驗(yàn)和不正確,該板級(jí)核心模塊以512字節(jié)為單位更新掃描算法的基址。該板級(jí)核心模塊更新完所述掃描基址后還判斷該基址是否超出該操作系統(tǒng)接口模塊的地址范圍, 如是,則表明所有Option ROM已經(jīng)初始化完畢,可以繼續(xù)根據(jù)用戶設(shè)置,到軟盤、硬盤或⑶ ROM中加載操作系統(tǒng),如否,則掃描下一 Option ROM。該操作系統(tǒng)接口模塊得到控制權(quán),即該Option ROM的服務(wù)例程初始化例程的函數(shù)入口被調(diào)用后,執(zhí)行該Option ROM對(duì)應(yīng)的服務(wù)例程的初始化例程,對(duì)該服務(wù)例程進(jìn)行初始化,該Option ROM的服務(wù)例程初始化例程注冊(cè)該服務(wù)例程的入口地址到該MAPPER模塊維護(hù)的中斷服務(wù)向量表,初始化完成跳轉(zhuǎn)回該板級(jí)核心模塊。該板級(jí)核心模塊掃描下一 Option ROM,初始化該Option ROM對(duì)應(yīng)的服務(wù)例程。該操作系統(tǒng)接口模塊還用于該服務(wù)例程初始化過程中需要判斷該服務(wù)例程操作的相關(guān)硬件是否存在,或查詢端口地址或可用內(nèi)存大小時(shí),查詢?cè)揗APPER模塊維護(hù)的系統(tǒng)信息表格獲得需要的信息。如磁盤服務(wù)例程INTUH初始化需要判斷是否存在軟盤、硬盤或光盤,則該操作系統(tǒng)接口模塊查詢?cè)揗APPER模塊維護(hù)的系統(tǒng)信息表格中的硬件列表得到需要的信息,如果存在相應(yīng)的硬件,則該Option ROM對(duì)應(yīng)的服務(wù)例程的初始化例程注冊(cè)該服務(wù)例程INT13H的函數(shù)入口地址到該MAPPER維護(hù)的中斷服務(wù)向量表中。對(duì)于INT12H其用于向操作系統(tǒng)報(bào)告內(nèi)存大小的信息,在INT12H初始化過程中,該操作系統(tǒng)接口模塊無需檢測(cè)內(nèi)存的大小,直接從該MAPPER模塊維護(hù)的系統(tǒng)信息表格中查詢所述信息。該板級(jí)核心模塊、MAPPER模塊和操作系統(tǒng)接口模塊均保存在非易失性只讀存儲(chǔ)器中。由于該BIOS系統(tǒng)采用Option ROM模組方式實(shí)現(xiàn)操作系統(tǒng)啟動(dòng)或運(yùn)行期間所需要的服務(wù),本發(fā)明的BIOS系統(tǒng)是可擴(kuò)展的,可以根據(jù)需要設(shè)置一個(gè)或多個(gè)Option ROM及其所對(duì)應(yīng)的服務(wù)例程。由于該開源BIOS系統(tǒng)提供的服務(wù)與工業(yè)界PC BIOS功能相同,因此能夠與工業(yè)界PC BIOS相兼容,能夠提供與工業(yè)界PC BIOS相兼容的軟硬件接口。該開源BIOS系統(tǒng)還包括系統(tǒng)檢測(cè)模塊、BIOS可擴(kuò)展固件接口(UEFI)模塊和系統(tǒng)調(diào)試工具模塊。
基于該開源BIOS系統(tǒng)開發(fā)的固件BIOS支持的計(jì)算機(jī)系統(tǒng)包括X86兼容處理器、 支持PCI總線標(biāo)準(zhǔn)的計(jì)算機(jī)和高級(jí)操作系統(tǒng),如Windows操作系統(tǒng)和Linux操作系統(tǒng)等, 包括但不限于 DOS、Windows 98、Windows 2000、Windows XP、Windows Vista、Window 7 和 Linux的各主流發(fā)行版本。實(shí)施例二本實(shí)施例以X86處理器為例,本發(fā)明基于開源BIOS的BIOS啟動(dòng)方法處理流程如圖4所示,包括以下步驟步驟301 計(jì)算機(jī)系統(tǒng)加電,中央處理器從BIOS的物理地址OxFOOO =OxFFFO處取指令,調(diào)用板級(jí)核心模塊并將控制權(quán)交給該板級(jí)核心模塊,拷貝該板級(jí)核心模塊和該 MAPPER模塊到內(nèi)存,該板級(jí)核心模塊解壓縮并拷貝該操作系統(tǒng)接口模塊到內(nèi)存中,對(duì)該計(jì)算機(jī)系統(tǒng)中的板級(jí)設(shè)備進(jìn)行初始化,并輸出系統(tǒng)信息;該系統(tǒng)信息包括該計(jì)算機(jī)系統(tǒng)的硬件列表、相應(yīng)的端口地址以及內(nèi)存大小的信肩、ο該板級(jí)設(shè)備初始化完,該板級(jí)核心模塊調(diào)用該MAPPER模塊的入口函數(shù),該MAPPER 模塊執(zhí)行該模塊內(nèi)部保存的初始化函數(shù)完成自身的初始化,讀取并解析所述板級(jí)核心模塊輸出的系統(tǒng)信息,根據(jù)所述系統(tǒng)信息創(chuàng)建和維護(hù)所述系統(tǒng)信息表格。該表格包括該計(jì)算機(jī)系統(tǒng)的硬件列表、相應(yīng)的端口地址以及內(nèi)存大小的信息。該MAPPER模塊還初始化BIOS數(shù)據(jù)區(qū)中(BDA)和擴(kuò)展BIOS數(shù)據(jù)區(qū)(EBDA)的數(shù)據(jù),維護(hù)該為啟動(dòng)操作系統(tǒng)所準(zhǔn)備的表格包括可編程中斷請(qǐng)求(PIRQ)表格和高級(jí)配置與電源接口(ACPI)表格等。該板級(jí)核心模塊和該 MAPPER模塊都是開源BIOS相關(guān)的,即其功能和結(jié)構(gòu)都取決于該開源BIOS的功能和結(jié)構(gòu)。步驟302 該板級(jí)核心模塊設(shè)置掃描Option ROM算法掃描基址為OxDOOOO,并保存該掃描基址;該操作系統(tǒng)接口模塊包括多個(gè)Option ROM,每個(gè)Option ROM對(duì)應(yīng)一個(gè)服務(wù)例程, 該Option ROM包括服務(wù)例程、該服務(wù)例程的初始化例程和可選擇性唯讀記憶體頭(Option ROM Header)。該服務(wù)例程的初始化例程包括該服務(wù)例程的入口地址信息;該OptionROM Header 包括該服務(wù)例程的簽名、大小和該服務(wù)例程的初始化例程地址的信息。該服務(wù)例程的大小信息是該服務(wù)例程未壓縮時(shí)占內(nèi)存空間的大小的信息。該Option ROM的格式兼容工業(yè)《即插即用BIOS規(guī)范》。步驟303 該板級(jí)核心模塊根據(jù)保存的掃描算法基址掃描該操作系統(tǒng)接口模塊中的Option ROM,并進(jìn)行奇偶校驗(yàn);該板級(jí)核心模塊掃描地址OxDOOOO處的Option ROM Header,查詢其是否包含簽名 “55AA”,如是,則確定該地址處存在一個(gè)Option ROM,否則,該板級(jí)核心模塊以512字節(jié)為單位更新掃描的基址。該板級(jí)核心模塊確定地址處存在一個(gè)Option ROM,還查詢?cè)揙ption ROM Header中保存的該服務(wù)例程大小的信息,根據(jù)該Option ROM的大小,對(duì)該Option ROM 整體進(jìn)行奇偶校驗(yàn)。步驟304 該板級(jí)核心模塊判斷該奇偶校驗(yàn)和是否正確,正確,執(zhí)行步驟305,否則,執(zhí)行步驟306;對(duì)該Option ROM整體進(jìn)行奇偶校驗(yàn)是為了保證數(shù)據(jù)的完整性,其他用于保證數(shù)據(jù)完整性的校驗(yàn)算法,如CRC算法也適用于本發(fā)明所述的方法。 步驟305 該板級(jí)核心模塊初始化該Option ROM,執(zhí)行步驟307 ;該板級(jí)核心模塊根據(jù)該Option ROM Header中表示該Option ROM大小的信息,更新掃描Option ROM算法的起始地址,調(diào)用該Option ROM Header中指定的該Option ROM 對(duì)應(yīng)的服務(wù)例程的初始化例程的函數(shù)入口,初始化該服務(wù)例程。該Option ROM對(duì)應(yīng)的服務(wù)例程的初始化例程注冊(cè)該服務(wù)例程的入口地址到該MAPPER模塊維護(hù)的中斷服務(wù)向量表 (IVT)中。該服務(wù)例程初始化過程中需要判斷該服務(wù)例程操作的相關(guān)硬件是否存在,或查詢端口地址或可用內(nèi)存大小時(shí),該操作系統(tǒng)接口模塊查詢?cè)揗APPER模塊維護(hù)的系統(tǒng)信息表格獲得需要的信息。如磁盤服務(wù)例程INTUH初始化需要判斷是否存在軟盤、硬盤或光盤, 則該操作系統(tǒng)接口模塊查詢?cè)揗APPER模塊維護(hù)的系統(tǒng)信息表格中的硬件列表得到需要的信息,如果存在相應(yīng)的硬件,則該Option ROM對(duì)應(yīng)的服務(wù)例程的初始化例程注冊(cè)該服務(wù)例程INT13H的函數(shù)入口地址到該MAPPER模塊維護(hù)的中斷服務(wù)向量表中。對(duì)于INT12H其用于向操作系統(tǒng)報(bào)告內(nèi)存大小的信息,在INT12H初始化過程中,該操作系統(tǒng)接口模塊無需檢測(cè)內(nèi)存的大小,直接從該MAPPER模塊維護(hù)的系統(tǒng)信息表格中查詢所述信息。步驟306 該板級(jí)核心模塊以512字節(jié)為單位,對(duì)該掃描Option ROM算法的基址遞增1個(gè)單位,執(zhí)行步驟307;步驟307 判斷掃描算法基址是否大于OxEFFFF,是,則執(zhí)行步驟308,否則,執(zhí)行步驟 303 ;由于板級(jí)核心模塊的物理地址從OxFOOOO開始,因此,對(duì)操作系統(tǒng)接口模塊中 Option ROM的掃描不能超過該地址,如果該掃描算法基址是否大于OxEFFFF,說明所有 Option ROM已經(jīng)掃描完畢。步驟308 該操作系統(tǒng)接口模塊初始化完畢后,該板級(jí)核心模塊根據(jù)用戶的設(shè)置, 從指定的地址加載操作系統(tǒng),該指定的地址為軟盤、硬盤或CDROM ;步驟309 引導(dǎo)并運(yùn)行操作系統(tǒng)。該操作系統(tǒng)接口模塊初始化各服務(wù)模塊后,將控制權(quán)交給該MAPPER模塊,該 MAPPER模塊通過函數(shù)調(diào)用,執(zhí)行INT19H中斷處理例程,該例程輸出顯示信息,提示用戶輸入信息選擇啟動(dòng),進(jìn)行操作系統(tǒng)的引導(dǎo)。上述步驟303-306該計(jì)算機(jī)系統(tǒng)啟動(dòng)過程中該板級(jí)核心模塊初始化操作系統(tǒng)接口模塊中的Option ROM的處理如圖5所示,該Option ROM對(duì)應(yīng)的服務(wù)例程以磁盤服務(wù)例程INT13H為例,具體包括以下步驟步驟401 該板級(jí)核心模塊掃描該操作系統(tǒng)接口模塊中的一個(gè)OptionROM,掃描到該 Option ROM 的簽名 “55AA” ;步驟402 根據(jù)該Option ROM Header中表示該Option ROM對(duì)應(yīng)的服務(wù)例程的大小的信息計(jì)算整個(gè)該Option ROM的奇偶校驗(yàn)和;該Option ROM的數(shù)據(jù)單元以512字節(jié)為單位,該Option ROM對(duì)應(yīng)的服務(wù)例程的大小為512字節(jié)的整數(shù)倍。步驟403 判斷該奇偶校驗(yàn)和是否正確,是,則執(zhí)行步驟405,否則執(zhí)行步驟404 ;步驟404 以512字節(jié)為單位,對(duì)該掃描Option ROM算法的起始地址遞增1個(gè)單位,執(zhí)行步驟409 ;步驟405 根據(jù)該Option ROM Header中該Option ROM大小的信息更新該掃描 Option ROM算法的基址,調(diào)用該Option ROM Header中指定的該Option ROM BP INT13H的函數(shù)入口,調(diào)用并執(zhí)行該INTUH服務(wù)例程的初始化例程,初始化中斷服務(wù)例程INTUH并注冊(cè)INT13H服務(wù)例程的入口地址到到該MAPPER模塊維護(hù)的中斷服務(wù)向量表中;步驟406-408均為該操作系統(tǒng)接口模塊中該Option ROM相關(guān)的處理。步驟406 控制權(quán)交給該操作系統(tǒng)接口模塊中的該Option ROM, INT13H ;INT13H對(duì)于大型商業(yè)非開源操作系統(tǒng),如Windows操作系統(tǒng),至關(guān)重要,該服務(wù)負(fù)責(zé)引導(dǎo)整個(gè)操作系統(tǒng)運(yùn)行。步驟407 該Option ROM檢測(cè)和初始化INT13H相關(guān)的硬件,包括軟盤、硬盤和光盤CD R0M,初始化相應(yīng)的控制器;該Option ROM通過讀取硬件寄存器信息檢查這些硬件是否損壞,檢測(cè)和初始化完畢,修改中斷向量表中的相應(yīng)向量INT13H*4,將該Option ROM的服務(wù)例程的入口地址寫入中斷服務(wù)向量表中,該入口地址可以以段值和偏移的形式寫入該中斷服務(wù)向量表,并將檢測(cè)得到的硬件信息保存在非易失性存儲(chǔ)器中,如互補(bǔ)型金屬氧化物半導(dǎo)體(CMOS),以便操作系統(tǒng)使用。步驟408 當(dāng)前Option ROM放棄控制權(quán),將該控制權(quán)交還給該板級(jí)核心模塊;步驟409 該板級(jí)核心模塊重新獲得控制權(quán),進(jìn)行掃描下一個(gè)OptionROM,進(jìn)行該下一個(gè)Option ROM的檢測(cè)。本發(fā)明的板級(jí)核心模塊和操作系統(tǒng)接口模塊都支持Option ROM Header格式, 并利用該Option ROM Header中的信息進(jìn)行通信。由于該操作系統(tǒng)接口模塊中的Option ROM獨(dú)立于板級(jí)核心模塊,因此本發(fā)明可以方便地為開源BIOS支持非開源操作系統(tǒng),如 Windows操作系統(tǒng),提供必要的支持。而且本發(fā)明該板級(jí)核心模塊和該操作系統(tǒng)接口模塊采用的開發(fā)環(huán)境可以相同亦可以不同,該開發(fā)環(huán)境包括編程語言、編譯環(huán)境和交叉編譯需求寸。由于大多數(shù)開源BIOS對(duì)板級(jí)設(shè)備支持較好,本發(fā)明的方法只需對(duì)現(xiàn)有開源BIOS 做少量修改進(jìn)行擴(kuò)展,即可實(shí)現(xiàn)該板級(jí)核心模塊的功能。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求所述的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種基于開源基本輸入輸出系統(tǒng)(BIOS)的BIOS啟動(dòng)方法,其特征在于,包括基本輸入輸出系統(tǒng)(BIOS)的操作系統(tǒng)接口(INTERFACE)模塊的中斷服務(wù)例程采用可選擇性唯讀記憶體(Option ROM)模組(Module)方式實(shí)現(xiàn);所述BIOS在計(jì)算機(jī)系統(tǒng)加電時(shí),板級(jí)核心模塊(CORE)初始化板級(jí)設(shè)備并輸出系統(tǒng)信息,板級(jí)核心模塊抽象層(MAPPER)模塊根據(jù)所述系統(tǒng)信息轉(zhuǎn)換得到可由所述操作系統(tǒng)接口模塊識(shí)別的系統(tǒng)信息表格,所述板級(jí)核心模塊對(duì)所述操作系統(tǒng)接口模塊包含的所述中斷服務(wù)例程根據(jù)所述系統(tǒng)信息表格中的信息依次進(jìn)行初始化,所述系統(tǒng)信息包括所述計(jì)算機(jī)系統(tǒng)的硬件列表、相應(yīng)的端口地址以及內(nèi)存大小的信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述操作系統(tǒng)接口模塊采用OptionROM Module方式實(shí)現(xiàn)所述中斷服務(wù)例程具體包括,所述操作系統(tǒng)接口模塊包括多個(gè)Option ROM,每個(gè)Option ROM對(duì)應(yīng)一個(gè)服務(wù)例程,所述Option ROM包括所述服務(wù)例程、所述服務(wù)例程的初始化例程和可選擇性唯讀記憶體頭(Option ROM Header),所述服務(wù)例程的初始化例程包括所述服務(wù)例程的入口地址信息,所述Option ROM Header包括所述Option ROM的大小和所述服務(wù)例程的初始化例程地址的信息。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述板級(jí)核心模塊為可擴(kuò)展開源BIOS;所述MAPPER模塊是所述開源BIOS相關(guān)的。
4.根據(jù)權(quán)利要求1或2或3所述的方法,其特征在于,所述板級(jí)核心模塊還保存所述操作系統(tǒng)接口模塊的地址范圍,所述Option ROM依次進(jìn)行初始化具體包括所述MAPPER模塊初始化完成后,所述板級(jí)核心模塊根據(jù)所述OptionROM規(guī)定的數(shù)據(jù)單元的大小在所述操作系統(tǒng)接口模塊的地址范圍內(nèi)掃描所述操作系統(tǒng)接口模塊,掃描到第一個(gè) Option ROM,調(diào)用所述 Option ROM 的 Option ROM Header 中指定的所述 Option ROM 的服務(wù)例程初始化例程的函數(shù)入口,初始化所述Option ROM對(duì)應(yīng)的服務(wù)例程;所述Option ROM初始化完成后,所述板級(jí)核心模塊掃描所述操作系統(tǒng)接口模塊中所述 Option ROM 的下一 Option ROM,調(diào)用當(dāng)前掃描的所述 Option ROM 的 Option ROM Header 中指定的所述Option ROM的服務(wù)例程初始化例程的函數(shù)入口,初始化當(dāng)前所述Option ROM 對(duì)應(yīng)的服務(wù)例程,直到所述操作系統(tǒng)接口模塊最后一個(gè)Option ROM對(duì)應(yīng)的服務(wù)例程初始化完畢。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述OptionROM Header中還包含簽名信息,所述板級(jí)核心模塊判斷掃描到所述Option ROM的方法為所述板級(jí)核心模塊根據(jù)所述Option ROM規(guī)定的數(shù)據(jù)單元的大小在所述操作系統(tǒng)接口模塊的地址范圍內(nèi)掃描所述操作系統(tǒng)接口模塊,如檢測(cè)前兩個(gè)字節(jié)為所述簽名信息,則掃描到一個(gè)所述Option ROM。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述板級(jí)核心模塊掃描所述OptionROM, 掃描到所述簽名后,還根據(jù)所述Option ROM Header中保存的對(duì)應(yīng)的服務(wù)例程大小的信息對(duì)所述Option ROM整體進(jìn)行奇偶校驗(yàn),如所述奇偶校驗(yàn)和正確,則初始化所述Option ROM 對(duì)應(yīng)的服務(wù)例程。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,如所述奇偶校驗(yàn)和正確,所述板級(jí)核心模塊初始化所述Option ROM對(duì)應(yīng)的服務(wù)例程后,還根據(jù)所述Option ROM Header保存的所述服務(wù)例程大小的信息更新Option ROM掃描算法的基址;如所述奇偶校驗(yàn)和不正確,所述板級(jí)核心模塊以所述Option ROMHeader中提供的數(shù)據(jù)單元大小為單位更新Option ROM掃描算法的基址;所述板級(jí)核心模塊更新完所述掃描算法的基址后還判斷所述基址是否超出所述操作系統(tǒng)接口模塊的地址范圍,如是,則根據(jù)用戶設(shè)置,到軟盤、硬盤或CD ROM中加載操作系統(tǒng), 如否,則掃描下一 Option ROM。
8.根據(jù)權(quán)利要求1或2或3所述的方法,其特征在于,所述OptionROM對(duì)應(yīng)服務(wù)例程的根據(jù)所述系統(tǒng)信息表格進(jìn)行初始化具體包括所述服務(wù)例程初始化過程中需要判斷所述服務(wù)例程操作的相關(guān)硬件是否存在,或查詢端口地址或可用內(nèi)存大小時(shí),所述操作系統(tǒng)接口模塊通過查詢所述MAPPER模塊維護(hù)的系統(tǒng)信息表格獲得需要的信息,所述系統(tǒng)信息表格存儲(chǔ)在BIOS數(shù)據(jù)區(qū)或非易失性存儲(chǔ)器 (Non-Volatile RAM)中。
9.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述OptionROM對(duì)應(yīng)的服務(wù)例程初始化時(shí),還包括所述Option ROM中的服務(wù)例程初始化例程注冊(cè)所述服務(wù)例程的入口地址到中斷服務(wù)向量表(Interrupt Vector Table)中,所述中斷服務(wù)向量表由所述MAPPER模塊維護(hù)。
10.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述操作系統(tǒng)接口模塊的中斷服務(wù)例程為計(jì)算機(jī)操作系統(tǒng)啟動(dòng)所必須的服務(wù)例程,包括圖形服務(wù)例程INT10H,獲取內(nèi)存大小服務(wù)例程INT12H,磁盤服務(wù)例程INT13H,雜項(xiàng)服務(wù)例程INT15H、鍵盤服務(wù)例程INT16H和外部設(shè)備互聯(lián)總線設(shè)備基本輸入輸出系統(tǒng)(PCI BIOS)服務(wù)例程INTlAH等。
11.一種基于開源基本輸入輸出系統(tǒng)(BIOS)的BIOS系統(tǒng),其特征在于,包括板級(jí)核心模塊、板級(jí)核心模塊抽象層(MAPPER)模塊和操作系統(tǒng)接口模塊,其中所述板級(jí)核心模塊,用于計(jì)算機(jī)系統(tǒng)加電后,初始化板級(jí)設(shè)備并輸出系統(tǒng)信息,所述系統(tǒng)信息包括所述計(jì)算機(jī)系統(tǒng)的硬件列表、相應(yīng)的端口以及內(nèi)存大小的信息;所述MAPPER模塊,用于根據(jù)所述系統(tǒng)信息轉(zhuǎn)換得到可由所述操作系統(tǒng)接口模塊識(shí)別的系統(tǒng)信息表格;所述操作系統(tǒng)接口模塊,用于采用可選擇性唯讀記憶體(Option ROM)模組(Module) 方式實(shí)現(xiàn)中斷服務(wù)例程,根據(jù)所述系統(tǒng)信息表格依次進(jìn)行初始化所述中斷服務(wù)例程。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述操作系統(tǒng)接口模塊包括多個(gè) Option ROM,每個(gè)Option ROM對(duì)應(yīng)一個(gè)服務(wù)例程,所述OptionROM包括服務(wù)例程本身、所述服務(wù)例程的初始化例程和可選擇性唯讀記憶體頭(Option ROM Header),其中,所述服務(wù)例程的初始化例程用于保存所述服務(wù)例程的入口地址信息,配置硬件,并注冊(cè)所述服務(wù)例程的入口地址信息至中斷向量表中;所述Option ROM Header用于保存所述服務(wù)例程的大小和所述服務(wù)例程的初始化例程地址的信息。
13.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述板級(jí)核心模塊,還用于初始化板級(jí)設(shè)備后,跳轉(zhuǎn)到所述MAPPER模塊,所述板級(jí)核心模塊是可擴(kuò)展開源BIOS ;所述MAPPER模塊,還用于執(zhí)行內(nèi)部的初始化函數(shù)完成自身的初始化,讀取并解析所述板級(jí)核心模塊輸出的系統(tǒng)信息,根據(jù)所述系統(tǒng)信息創(chuàng)建和維護(hù)所述系統(tǒng)信息表格,跳轉(zhuǎn)到所述板級(jí)核心模塊,所述MAPPER模塊是所述開源BIOS相關(guān)的。
14.根據(jù)權(quán)利要求11或12或13所述的系統(tǒng),其特征在于,所述板級(jí)核心模塊還用于保存所述操作系統(tǒng)接口模塊的地址范圍,初始化INTERFACE 模塊,根據(jù)所述地址范圍掃描所述INTERFACE模塊,掃描到第一個(gè)Option ROM,保存所述 Option ROM 的基址,調(diào)用所述Option ROM 的 Option ROM Header 中指定的所述Option ROM 的服務(wù)例程初始化例程的函數(shù)入口,從所述Option ROM跳轉(zhuǎn)回來,掃描所述操作系統(tǒng)接口模塊中所述Option ROM的下一 Option ROM,根據(jù)當(dāng)前掃描的所述Option ROM的Option ROM Header中指定的所述Option ROM的大小,更新所述掃描算法的基址,并判斷所述基址是否超出所述操作系統(tǒng)接口模塊的地址范圍,如是,則根據(jù)用戶設(shè)置,到軟盤、硬盤或CD ROM中加載操作系統(tǒng),如否,則掃描當(dāng)前Option ROM的下一 Option ROM ;所述MAPPER模塊還用于維護(hù)BIOS數(shù)據(jù)區(qū)和中斷服務(wù)向量表;所述操作系統(tǒng)接口模塊還用于所述Option ROM的服務(wù)例程初始化例程的函數(shù)入口被調(diào)用,執(zhí)行所述Option ROM對(duì)應(yīng)的服務(wù)例程的初始化例程,對(duì)所述服務(wù)例程進(jìn)行初始化,初始化完成跳回所述板級(jí)核心模塊;所述操作系統(tǒng)接口模塊的所述Option ROM的服務(wù)例程初始化例程還用于注冊(cè)所述服務(wù)例程的入口地址到所述中斷服務(wù)向量表。
15.根據(jù)權(quán)利要求10或11或12所述的系統(tǒng),其特征在于,所述OptionROMHeader中還包含簽名信息,所述板級(jí)核心模塊還用于根據(jù)所述INTERFACE模塊地址范圍掃描所述INTERFACE模塊,如檢測(cè)前兩個(gè)字節(jié)為所述簽名信息,則掃描到一個(gè)所述Option ROM,根據(jù)所述Option ROM Header中保存的對(duì)應(yīng)的服務(wù)例程大小的信息對(duì)所述Option ROM整體進(jìn)行奇偶校驗(yàn),如所述奇偶校驗(yàn)和正確,則調(diào)用所述Option ROM的Option ROM Header中指定的所述Option ROM的服務(wù)例程初始化例程的函數(shù)入口,根據(jù)所述Option ROM Header保存的所述服務(wù)例程大小的信息更新掃描算法的基址;如所述奇偶校驗(yàn)和不正確,所述板級(jí)核心模塊以512字節(jié)為單位更新掃描算法的基址,所述板級(jí)核心模塊更新完所述掃描的基址后還判斷所述基址是否超出所述操作系統(tǒng)接口模塊的地址范圍,如是,則根據(jù)用戶設(shè)置,到軟盤、硬盤或CD ROM中加載操作系統(tǒng),如否,則掃描下一 Option ROM。
16.根據(jù)權(quán)利要求10或11或12所述的系統(tǒng),其特征在于,所述操作系統(tǒng)接口模塊還用于所述服務(wù)例程初始化過程中需要判斷所述服務(wù)例程操作的相關(guān)硬件是否存在或查詢端口地址或可用內(nèi)存大小時(shí),查詢所述MAPPER模塊維護(hù)的系統(tǒng)信息表格獲得需要的信息。
全文摘要
本發(fā)明提供一種基于開源BIOS的BIOS啟動(dòng)方法和裝置,涉及計(jì)算機(jī)應(yīng)用領(lǐng)域。包括BIOS的操作系統(tǒng)接口模塊的中斷服務(wù)例程采用Option ROM模組方式實(shí)現(xiàn);該BIOS在計(jì)算機(jī)操作系統(tǒng)加電時(shí),板級(jí)核心模塊初始化板級(jí)設(shè)備并輸出系統(tǒng)信息,MAPPER模塊將該系統(tǒng)信息轉(zhuǎn)換為可由該操作系統(tǒng)接口模塊識(shí)別的系統(tǒng)信息表格,該板級(jí)核心模塊對(duì)中斷服務(wù)例程根據(jù)該系統(tǒng)信息表格中的信息依次進(jìn)行初始化。本發(fā)明提供的技術(shù)方案可應(yīng)用于具有基于開源BIOS的BIOS系統(tǒng)的計(jì)算機(jī)系統(tǒng)啟動(dòng)開源和大型商業(yè)非開源操作系統(tǒng)。
文檔編號(hào)G06F9/445GK102169446SQ20111012631
公開日2011年8月31日 申請(qǐng)日期2011年5月16日 優(yōu)先權(quán)日2011年5月16日
發(fā)明者佟冬, 李皓, 程旭, 管雪濤, 鄭衍松 申請(qǐng)人:北京北大眾志微系統(tǒng)科技有限責(zé)任公司