亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于在預存儲器執(zhí)行環(huán)境中鏈接固件模塊的方法和系統(tǒng)的制作方法

文檔序號:6403450閱讀:151來源:國知局
專利名稱:用于在預存儲器執(zhí)行環(huán)境中鏈接固件模塊的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般地涉及計算機系統(tǒng),更具體而言,涉及計算機系統(tǒng)的基本輸入輸出系統(tǒng)(BIOS)。
背景技術(shù)
BIOS包括用于初始化計算機系統(tǒng)的其他組件的可執(zhí)行程序和數(shù)據(jù)的集合。一旦打開(或者復位)計算機系統(tǒng),計算機系統(tǒng)就執(zhí)行來自諸如(單個或多個)只讀存儲器(ROM)芯片之類的非易失存儲器或等價物的BIOS。在許多計算機系統(tǒng)中,BIOS加載全部或部分操作系統(tǒng),所述操作系統(tǒng)通常存儲在計算機系統(tǒng)的硬盤上?;蛘?,可以從光盤(CD)ROM或軟盤加載操作系統(tǒng)。被加載的操作系統(tǒng)隨后可以調(diào)用BIOS例程或組件。
預存儲器執(zhí)行環(huán)境中的BIOS(這里也被稱為固件)通常是為專用配置或系統(tǒng)設(shè)計(這里也稱為平臺)生成的緊致界(Tightly Bound)目標代碼。換言之,不同的平臺通常具有不同的BIOS。更具體而言,BIOS通常包括用于提供特定功能或服務的代碼(這里也稱為固件模塊),這些功能或服務同樣可以依賴于平臺。例如,帶PentiumIII處理器的平臺與帶PentiumIV處理器的平臺相比,特定服務的固件模塊就可能不同。因此,BIOS廠商通常將開發(fā)若干BIOS來支持各種平臺,這不合需要地增加了多種BIOS的測試、維護和文檔費用。
另外,傳統(tǒng)的開發(fā)過程要求軟件開發(fā)者將他們的固件模塊與主固件可執(zhí)行代碼一起編譯并鏈接。此外,該過程常常要求軟件開發(fā)者為每個廠商的主固件可執(zhí)行代碼定制固件模塊。這個不期望的過程要求開發(fā)者為每種固件環(huán)境中的正確操作來測試固件模塊,這將增加開發(fā)的時間和費用。


參考附圖來描述本發(fā)明的非限制和非窮盡的實施例,附圖的所有不同視圖中除非明確說明,類似的標號都指示類似的組件。
圖1是圖示根據(jù)本發(fā)明一個實施例的具有模塊化BIOS的計算機系統(tǒng)的框圖。
圖2是圖示根據(jù)本發(fā)明一個實施例的模塊化BIOS的圖。
圖3是圖示根據(jù)本發(fā)明一個實施例,在模塊化BIOS的模塊之間的通信鏈接的圖。
圖4A和4B是圖示根據(jù)本發(fā)明一個實施例的模塊化BIOS的基本初始化操作的流程圖。
圖5是圖示根據(jù)本發(fā)明一個實施例的用于跟蹤固件模塊的分配的數(shù)據(jù)結(jié)構(gòu)的圖。
圖6是圖示根據(jù)本發(fā)明一個實施例的固件模塊的組件的框圖。
圖7A和7B是分別圖示根據(jù)本發(fā)明一個實施例的導入表和導出表的圖。
圖8是圖示根據(jù)本發(fā)明一個實施例的用于鏈接BIOS中的固件模塊的過程的流程圖。
圖9是圖示根據(jù)本發(fā)明一個實施例的模塊調(diào)用操作的流程圖。
圖10是圖示根據(jù)本發(fā)明一個實施例的菊花鏈操作的流程圖。
圖11是圖示根據(jù)本發(fā)明一個實施例的過濾器模塊的圖。
具體實施例方式
圖1根據(jù)本發(fā)明的一個實施例圖示了計算機系統(tǒng)100。計算機系統(tǒng)100包括處理器103、非易失存儲器105、主存儲器107、設(shè)備109-1至109-N以及總線111。此外,計算機系統(tǒng)100包括存儲在非易失存儲器105中的模塊化BIOS120。
處理器103可以是常規(guī)微處理器,例如但不限于Intel x86或Pentium系列微處理器、Motorola系列微處理器等等??梢砸匀舾煞绞絹韺崿F(xiàn)非易失存儲器105。例如,非易失存儲器105可以使用包括但不限于以下設(shè)備的設(shè)備來實現(xiàn)可擦除可編程只讀存儲器(EPROM)設(shè)備、電可擦除可編程只讀存儲器(EEPROM)設(shè)備、閃存設(shè)備等等。主存儲器107可以使用包括但不限于以下設(shè)備的設(shè)備來實現(xiàn)動態(tài)隨機訪問存儲器(DRAM)、靜態(tài)隨機訪問存儲器(SRAM)等等。設(shè)備109-1至109-N是通常在計算機系統(tǒng)中使用的設(shè)備,例如但不限于顯示器、監(jiān)視器、鍵盤、硬盤驅(qū)動器、CD ROM驅(qū)動器、網(wǎng)絡(luò)接口卡(NIC)、聲卡、打印機、掃描儀、點選設(shè)備(例如鼠標、軌跡球、觸摸墊)等等。主存儲器107、非易失存儲器105、處理器103和設(shè)備109-1至109-N都耦合到總線111。
應認識到計算機系統(tǒng)100是具有不同體系結(jié)構(gòu)的許多可能的計算機系統(tǒng)中的一個示例。例如,結(jié)合Intel微處理器利用Microsoft Windows操作系統(tǒng)的計算機系統(tǒng)常常具有多個總線,其中一個可以被認為是外設(shè)總線。網(wǎng)絡(luò)計算機也可以認為是可與本發(fā)明一起使用的計算機系統(tǒng)。此外,有時被稱為個人數(shù)字助理(PDA)的手持式或掌上計算機也可以認為是可與本發(fā)明一起使用的計算機系統(tǒng)。典型的計算機系統(tǒng)一般將至少包括處理器103、主存儲器107、非易失存儲器105和總線111。
還將認識到在一個實施例中,計算機系統(tǒng)100由操作系統(tǒng)軟件控制,所述操作系統(tǒng)軟件包括作為其一部分的文件管理系統(tǒng),例如盤操作系統(tǒng)。例如,本發(fā)明的一個實施例利用Microsoft Windows作為計算機系統(tǒng)100的操作系統(tǒng)。在另一個實施例中,其他操作系統(tǒng)包括但不限于AppleMacintosh操作系統(tǒng)、Microsoft Windows操作系統(tǒng)、Unix操作系統(tǒng)、Palm操作系統(tǒng)以及可根據(jù)本發(fā)明的教導使用的類似操作系統(tǒng)。一般而言,在計算機系統(tǒng)100中使用的特定操作系統(tǒng)將至少部分基于在計算機系統(tǒng)100中使用的具體體系結(jié)構(gòu)、芯片或芯片組。
圖2圖示了根據(jù)本發(fā)明的一個實施例駐留于非易失存儲器105(圖1)中的BIOS120(圖1)。在此實施例中,非易失存儲器105被分成塊201-204,每一個具有64K字節(jié)的大小。在此實施例中,塊201是引導塊。引導塊201包括復位向量208、核心210和固件模塊212-1至212-M。塊202、203和204被用來在執(zhí)行BIOS120的過程中提供某些非易失存儲并存儲BIOS120的其他組件。
復位向量208是加電或復位之后處理器103(圖1)所讀取的第一個存儲器單元。在一個實施例中,復位向量208使處理器103執(zhí)行一般被稱為POST(加電自測)的指令。在一個實施例中,操作流開始執(zhí)行核心210。核心210用作固件模塊212-1至212-M的調(diào)度器或分配器。核心210還包含用于服務的核心集合的指令。這些核心服務包括但不限于平臺變量的定位、引導模式的管理、諸如拷貝和清零存儲器之類的通用任務。每個固件模塊212-1至212-M包含與用于一個或多個組件的服務相關(guān)聯(lián)的指令,這些組件可以包括在計算機系統(tǒng)100中。根據(jù)本發(fā)明,每個固件模塊都具有公共接口組件來與核心210接口。此外,固件模塊可以包括公共接口來與另一個固件模塊接口。如以下將進一步描述的,這些特征使得包括核心210和固件模塊212-1至212-M的BIOS(即模塊化BIOS)可以以這樣一種方式與多個平臺一起工作,所述方式在某種意義上類似于操作系統(tǒng)和驅(qū)動器使得計算機系統(tǒng)可以與多個外設(shè)一起工作的方式。
圖3還圖示了核心210和固件模塊212-1至212-M之間以及固件模塊自身之間的功能互連。在一個實施例中,每個固件模塊212-1至212-M包括公共核心/模塊接口(未示出)以與核心210接口;并且包括公共模塊/模塊接口(未示出)以與其他固件模塊接口。例如,核心210可以使用公共核心/模塊接口來如雙向箭頭301所示地與固件模塊212-1接口,以及與固件模塊212-2至212-M接口。此外,固件模塊212-1可以使用公共模塊/模塊接口來如雙向箭頭303所示地與固件模塊212-2接口。雖然未在圖3中示出,但是其他固件模塊212-3至212-M也可配置有公共模塊/模塊接口來與另一個固件模塊接口。后面結(jié)合圖6將進一步描述這些組件。
圖4A圖示了根據(jù)本發(fā)明一個實施例使用模塊化BIOS120(圖1)而執(zhí)行的基本初始化過程。在此實施例中,模塊化BIOS120在經(jīng)過生成過程之后已被加載到非易失存儲器105(圖1)中,該生成過程用來編譯并鏈接引導塊201中的核心210和固件模塊212-1至212-M(圖2)。參考圖1、2和4,模塊化BIOS120如下來進行本實施例的這個過程。
在框402中,計算機系統(tǒng)100被打開或復位。具體而言,當計算機100被打開時,處理器103開始執(zhí)行BIOS120。在一個實施例中,用戶可以操作開關(guān)來向計算機系統(tǒng)100提供電源或使其復位。在許多實施例中,用戶還可以通過由在計算機系統(tǒng)100上運行的操作系統(tǒng)所提供的用戶界面(例如通過菜單選擇)來復位計算機系統(tǒng)100。
在框406中,執(zhí)行復位向量。在本實施例中,一旦加電(或復位)處理器103就開始執(zhí)行復位向量208,其如前所述是BIOS120的第一指令。在一個實施例中,復位向量208通常提供了POST過程的第一指令。在一些實施例中,在復位期間不執(zhí)行POST。
然后在框410中,初始化固件模塊。在一個實施例中,處理器103執(zhí)行核心201。在此實施例中,核心210確定適合運行的固件模塊212-1至212-M的必要配置。每個模塊依次檢查平臺來確定安裝BIOS120的平臺是否有其所初始化的硬件。下面結(jié)合圖4B更詳細地描述框410。
在框414中,初始化存儲器。在此實施例中,在處理器初始化固件模塊212-1至212-M期間,處理器對一個或多個模塊212-1至212-M的執(zhí)行將初始化主存儲器107。
在框418中,接收并執(zhí)行其余的BIOS120。例如,在框414中初始化主存儲器之后,處理器103可以獲取可能駐留于其他外部存儲器設(shè)備(例如附加的EEPROM或閃存塊引導組件(Flash block boot component))中的附加BIOS組件(及BIOS擴展)。BIOS120隨后可以完成初始化或者允許操作系統(tǒng)完成初始化。
圖4B根據(jù)本發(fā)明的一個實施例更詳細地圖示了框410(圖4A)。參考圖1、3和4B,如下來進行本實施例的框410。
在框424中,檢查固件模塊212-1至212-M以確定為了使計算機系統(tǒng)100正確工作而要求由核心210來分配固件模塊212-1至212-M的順序。在一個實施例中,核心210包括這樣的指令,其檢驗固件模塊212-1至212-M的資源列表(下面結(jié)合圖6來描述)以確定需要這些固件模塊中的哪些。
在框428中,調(diào)度所需固件模塊的執(zhí)行。在一個實施例中,核心210調(diào)度所需固件模塊的執(zhí)行。例如,核心210可以基于在上面的框424中所確定的每個固件模塊的要求,來調(diào)度固件模塊的執(zhí)行。在一個示例實施例中,核心210可以按以下順序來調(diào)度固件模塊中央處理器單元(CPU)I/O(輸入/輸出)服務、PCI配置訪問服務、ICH(I/O控制器中心)組件平臺初始化服務、SMBus(系統(tǒng)管理總線)協(xié)議訪問服務、MCH(存儲器控制器中心)組件平臺初始化服務等等,這些通常都在初始化過程早期需要。
在框432中,分配(即由處理器103來執(zhí)行)所需的固件模塊。在一個實施例中,核心210可以使用處理器103的寄存器來存儲位數(shù)組,該位數(shù)組指示要分配哪些固件模塊。下面結(jié)合圖5來進一步描述此位數(shù)組的一個示例實施例。
圖5圖示了根據(jù)本發(fā)明的一個實施例用于跟蹤固件模塊分配的數(shù)據(jù)結(jié)構(gòu)。在本實施例中,該數(shù)據(jù)結(jié)構(gòu)是可以使用處理器103(圖1)的單個64位寄存器來存儲的位數(shù)組500,用于最多BIOS120中六十四個固件模塊。位數(shù)組500的每一位被映射到固件模塊212-1至212-M中相應的一個。更具體而言,在圖5的實施例中,位數(shù)組500的位512-1對應于固件模塊212-1,如虛線514-1所示;位512-2對應于固件模塊212-2,如虛線514-2所示;...;以及位512-M對應于固件模塊212-M,如虛線514-M所示。在本實施例中,當位數(shù)組500的一位被設(shè)成1時,那么相應的固件模塊就已被分配。
圖6圖示了根據(jù)本發(fā)明的一個實施例的示例固件模塊212的組件。換言之,固件模塊212-1至212-M(圖2)的一些實施例具有和固件模塊212相同的組件。在本實施例中,固件模塊212包括全局唯一標識符(GUID)601、資源列表603、導入表605、導出表607、服務609-1至609-L、服務接口611以及模塊間接口613。在一些實施例中,固件模塊212被組織為頭部和可執(zhí)行鏡像。頭部可以包括資源列表603、導入表605、導出表607以及由固件模塊212所提供的服務列表(未示出)。可執(zhí)行鏡像包括每個服務的代碼。下面進一步描述固件模塊212的這些組件。
GUID601唯一地標識固件模塊212。在一個實施例中,GUID601是當創(chuàng)建固件模塊212時用“Wired For Manageability Baseline”版本2.0標準生成的十六字節(jié)數(shù)。
資源列表603是固件模塊212正確起作用所需的資源列表。例如,資源列表603可以包括其他固件模塊的GUID、服務或由其他固件模塊所提供的模塊—模塊接口的GUID。資源列表603在創(chuàng)建固件模塊212時生成。
導入表605列出了由固件模塊212導入或調(diào)用的固件模塊和/或服務。在此示例實施例中,在執(zhí)行時,固件模塊212可以在執(zhí)行過程中調(diào)用一個或多個服務。圖6中導入表605的該示例實施例示出了可以由固件模塊212調(diào)用的若干服務,列為I_Service-1、I_Service-2等等。下面結(jié)合圖7A進一步描述導入表605的一個實施例。
導出表607列出了可以由其他固件模塊調(diào)用的固件模塊和/或服務。在本實施例中,在生成過程(以上結(jié)合圖4A提及了)中填充導出表607。例如,在生成過程期間,該過程選擇一個固件模塊并檢查所有其余的固件模塊,以通過檢查其余固件模塊的導入表來確定這些固件模塊中的哪個調(diào)用了所選的固件模塊。對于使用該模塊的導出接口的每個固件模塊,隨后修改使用固件模塊的導入表以包括被導出接口的正確物理地址。生成過程隨后選擇另一個固件模塊并對整個固件模塊進行另一遍等等,直到所有固件模塊的所有導入表都被填充了。下面結(jié)合圖8來進一步描述生成過程的一個實施例。
如上所述,固件模塊212包括服務609-1至609-L。在其他實施例中一個固件模塊可能只有一個服務。在此實施例中,每個服務也具有唯一標識該服務的GUID。在一些實施例中,多個固件模塊可以執(zhí)行相同的服務,并因此對該服務具有相同的GUID。雖然這些服務可以具有相同的GUID并執(zhí)行相同的功能,但是它們彼此并不相同,因為它們被配置用于特定的環(huán)境或硬件配置。在這樣的情況下,實際被執(zhí)行的服務正是為該平臺的環(huán)境或硬件配置的那一個。
服務接口611用作固件模塊212到核心210(圖2)的接口。例如,當核心210要對固件模塊212進行調(diào)用時,核心210會執(zhí)行包含這樣的信息的指令,所述信息例如固件模塊212的物理地址和核心210的返回地址。服務接口611對于所有固件模塊是標準接口,使得核心210可以調(diào)用任何固件模塊(來自任何廠商)。因此,核心210可以以單一的格式向任何固件模塊傳遞參數(shù)等等,該固件模塊又將對此進行正確的操作。
模塊間接口613用作固件模塊212到另一個固件模塊的接口。例如,當固件模塊212要對另一個固件模塊進行調(diào)用時,固件模塊212會執(zhí)行包含這樣的信息的指令,所述信息例如另一個固件模塊的物理地址,以及固件模塊212的返回地址,或者在某些實施例中在菊花鏈過程(daisy-chaining process,下面結(jié)合圖8進一步描述)中核心210的返回地址。在一些實施例中,接口611和613是相同的。
圖7A圖示了根據(jù)本發(fā)明一個實施例的導入表605。如圖7A所示,示例導入表605包含固件模塊212在執(zhí)行時可能調(diào)用的一個或多個服務(即I_Service-1至I_Service-X)。在此實施例中每個I_Service都具有名稱、一組標志和地址。在一個實施例中,名稱是該I_Service的GUID。標志是用來指示是否已經(jīng)設(shè)置了預定配置屬性(例如菊花鏈、短線接口(Stubinterface)、內(nèi)部接口等等)的位。地址是這樣的物理存儲器地址,其表示將要調(diào)用的固件模塊的起始地址加上服務離開該起始地址的偏移量。在生成過程期間填充導入表605的這個條目。例如,生成工具或應用可以確定要調(diào)用的固件模塊的起始地址,并將該地址加上偏移量,生成工具可以從要調(diào)用的固件模塊的導出表獲取該偏移量。
圖7B圖示了根據(jù)本發(fā)明一個實施例的導出表607。如圖7B所示,示例導出表607包含一個或多個(即E_Service-1至E_Service-Y)。在此實施例中,每個E_Service都具有名稱、一組標志和地址。在一個實施例中,如同I_Service中那樣(圖7A),名稱是GUID,標志是用來指示是否已經(jīng)設(shè)置了預定配置屬性(例如菊花鏈、環(huán)路接口等等)的位。地址是這樣的物理存儲器地址,其表示該E_Service從固件模塊212的起始地址的偏移量。通過對固件模塊212的編譯和鏈接來填充導出表607的這個條目。該偏移量在生成過程填充導入表605期間對生成工具可用(以上結(jié)合圖7A提及了)。
圖8圖示了根據(jù)本發(fā)明一個實施例的生成過程。在一個實施例中,由BIOS廠商使用生成工具來進行生成過程,該生成工具用來編譯和鏈接BIOS的固件模塊和核心。
在框801中,選擇要包括在BIOS中的固件模塊。在一個實施例中,BIOS廠商從各種來源收集固件模塊。這個特征有益地提供了靈活性,并可以幫助BIOS廠商無需開發(fā)自己的固件模塊或模塊。此外,一旦固件模塊被測試并驗證為符合的,那么該BIOS廠商的測試要求就被簡化了,因為該固件模塊被證明是可靠的。而且,該特征可以允許BIOS廠商快速地為新平臺提供BIOS,因為很可能將只需要開發(fā)很少部分的BIOS代碼。然后將這些所選的固件模塊放在文件中,并被生成工具來操作。
在框805中,獲取每個所選固件模塊的服務調(diào)用。在一個實施例中,對于每個固件模塊,生成工具從該固件模塊的導入表得到服務調(diào)用。例如,在第一遍中,生成工具檢查第一固件模塊(在框801中所選的)的導入表,并得到第一固件模塊可能調(diào)用的所有固件模塊的起始地址。生成工具隨后可以檢查第二固件模塊的導入表,以得到第二固件模塊可能調(diào)用的所有固件模塊的起始地址等等。
在框809中,確定每個被調(diào)用服務或固件模塊的物理地址。在一個實施例中,生成工具檢查被調(diào)用固件模塊的導出表。如前所述,每個固件模塊的導出表包括該固件模塊所提供的每個服務的偏移量。因此,通過將被調(diào)用服務的偏移量與包含該服務的固件模塊的起始地址相加,生成工具可以確定該被調(diào)用服務的物理地址。
在框813中,存儲被調(diào)用服務或固件模塊的物理地址。在一個實施例中,生成工具將這些物理地址存儲在合適的固件模塊的導入表中。例如,在一個實施例中,生成工具可以通過執(zhí)行框805、809和813來對所有固件模塊進行第一遍,以填充第一固件模塊的導入表。生成工具隨后可以通過執(zhí)行框805、809和813來對所有固件模塊進行第二遍,以填充第二固件模塊的導入表等等,直到在框801中所選的所有固件模塊的導入表都已經(jīng)被填充了。
圖9圖示了根據(jù)本發(fā)明一個實施例的調(diào)用操作。調(diào)用代理(例如核心210或圖2的固件模塊212-1至212-M中的一個)在執(zhí)行時可以對固件模塊212-1至212-M中另一個的服務進行調(diào)用。作為響應,隨后會執(zhí)行該被調(diào)用的服務,當被調(diào)用的服務完成執(zhí)行時操作流返回到調(diào)用代理。下面描述該調(diào)用操作的一個實施例。
在框902中,確定要調(diào)用的固件模塊或服務的物理地址。在一個實施例中,調(diào)用代理在由該調(diào)用代理維護的表中查詢固件模塊或服務的物理地址。例如,調(diào)用固件模塊會在其導入表中查詢該物理地址。核心210有一個所有固件模塊和服務的物理地址的表,該表在生成過程中被填充(參見圖8)。核心210將在此表中查詢被調(diào)用服務的物理地址。
在框906中,調(diào)用代理保存返回地址(即在執(zhí)行被調(diào)用服務之后執(zhí)行所返回的地址),使得操作流可以返回到其在執(zhí)行調(diào)用代理期間停止的那個點。在一個實施例中,返回地址被保存在處理器103(圖1)的寄存器中。于是,在一個實施例中,在BIOS120(圖2)的預存儲器執(zhí)行期間只使用了處理器103的兩個寄存器;即一個用于位數(shù)組500,一個用于返回地址。因此,該實施例有益地釋放了處理器103的其他寄存器以用于其他目的。在其他實施例中,可以在框902之前執(zhí)行框906。
在框910中,執(zhí)行被調(diào)用的服務。更具體而言,在此實施例中,調(diào)用代理使處理器103(圖1)執(zhí)行在框902中找到的物理地址處所存儲的指令(即被調(diào)用服務的開始指令)。在完成對被調(diào)用服務的執(zhí)行之后,進行框914,其中操作流使用在框906中所保存的返回地址返回到調(diào)用代理。
圖10圖示了根據(jù)本發(fā)明一個實施例的菊花鏈操作。該菊花鏈特征允許所要執(zhí)行的BIOS120(圖1)不用具體知道平臺中有的硬件。例如,當可以在多個平臺中使用BIOS120時有益地使用菊花鏈特征。具體而言,BIOS120將包括多個固件模塊,其中一些被設(shè)計用于可能在或者不在平臺中的特定硬件組件。例如,平臺廠商可以選擇執(zhí)行相同功能的若干不同硬件組件中的一個,每個都具有固件模塊來操作該硬件組件。在此實施例中,用于這樣的硬件組件的固件模塊,具有標識操作該硬件組件的服務的相同GUID。當調(diào)用這樣的GUID服務時,必需執(zhí)行與平臺中有的實際硬件組件對應的固件模塊。菊花鏈有益地允許固件模塊自身確定應該為平臺中有的硬件組件執(zhí)行哪個固件模塊。
下面使用示例固件模塊212A、212B和212C來描述菊花鏈操作的一個實施例。在此例子中,固件模塊212A-212C的導入表和導出表具有為與“多硬件組件”GUID相應的特定服務而設(shè)置的“菊花鏈”標志(參加圖7A和圖7B)。在生成過程期間,當生成工具第一次找到菊花鏈標志被設(shè)置了的固件模塊(即此例子中的固件模塊212A)時,生成工具隨后檢驗其余固件模塊的導入表,直到其找到具有相同GUID的服務。在此例子中,下一個固件模塊是固件模塊212B。生成工具將該服務的物理地址存儲在固件模塊212A的變量(在此例子中的變量PNEXT)中。生成工具重復此過程來找到菊花鏈接到固件模塊212B的下一個固件模塊(即此例子中的固件模塊212C)的物理地址。在此例子中,只有固件模塊212A-212C具有帶相同GUID的服務,所以生成工具在固件模塊212C的變量PNEXT中將找不到可以裝載的物理地址。于是在此例子中,變量PNEXT被設(shè)成零(即無效)。其他服務可能具有不同于此例子的數(shù)量(即任何大于或等于二的數(shù)量)的菊花鏈固件模塊。一個實施例的菊花鏈如下操作。
在框1001A中,當固件模塊212A在執(zhí)行時,固件模塊212A確定在平臺中是否有該服務被設(shè)計來一起工作的硬件組件。在一個實施例中,固件模塊212A通過檢驗硬件中維護的配置寄存器來進行此操作。
如果有該硬件組件,則固件模塊212A繼續(xù)執(zhí)行以在框1003A中進行被調(diào)用的服務。在固件模塊212A完成執(zhí)行之后,操作流在框1005A中返回到調(diào)用代理。
但是,如果在框1001A中平臺中沒有該硬件組件,那么操作流就進行到框1007A。在框1007A中,過程確定在菊花鏈中是否有下一個固件模塊。在一個實施例中,固件模塊212A檢驗變量PNEXT來看其是否保存有物理地址。例如,固件模塊212A可以測試變量PNEXT是否無效(由此指示在菊花鏈中沒有下一個鏈接)。
如果變量PNEXT無效,則操作流進行到框1009A,其中固件模塊212A指示出現(xiàn)了錯誤。在一個實施例中,固件模塊212A通過計算機系統(tǒng)100(圖1)的顯示器或監(jiān)視器(未示出)來顯示錯誤消息。操作流隨后進行到框1005A(如上所述)。
相反,如果變量PNEXT并非無效(即保存有菊花鏈中下一個固件模塊的物理地址),則操作流在框1011A中跳到裝載在變量PNEXT中的物理地址,以執(zhí)行菊花鏈中的下一個固件模塊。在此示例實施例中,下一個固件模塊是固件模塊212B。
固件模塊212B以與上述固件模塊212A基本相同的方式來操作。換言之,通過將附加到標號的字母“A”替換成“B”,以上用于固件模塊212A的描述就同樣適用于固件模塊212B。
固件模塊212C也以與上述固件模塊212A基本相同的方式來操作。但是,因為固件模塊212C在此示例實施例中是菊花鏈的最后鏈接,所以在生成過程期間應該將固件模塊212C的變量PNEXT設(shè)成無效。因此,在正常操作中將不進行框1011C。
圖11圖示了根據(jù)本發(fā)明一個實施例用于BIOS120(圖1)的過濾器模塊1100。過濾器模塊1100是平臺專用的,并可以有益地用于具有執(zhí)行相似功能的兩個或更多硬件組件(具有不同GUID)的平臺。這樣的平臺可以被如此設(shè)計,使得取決于調(diào)用模塊和/或被調(diào)用的服務來使用這些硬件組件中的特定一個。在此實施例中,用于不同平臺的過濾器模塊將具有相同的GUID。
再參考圖11,過濾器模塊1100如下來可操作地與BIOS120(圖1)的其他固件模塊互連。過濾器模塊1100具有可以被固件模塊1104-1至1104-R調(diào)用的接口1102。雖然在圖11中示出了至少三個“調(diào)用”固件模塊,但是在BIOS120的某些實施例中,可以有少到一個調(diào)用固件模塊來與過濾器模塊1100一起使用。過濾器模塊1100由平臺廠商配置成能夠調(diào)用固件模塊1106-1至1106-S。雖然示出了至少三個“被調(diào)用”的固件模塊,但是在BIOS120的其他實施例中,可以有少到一個“被調(diào)用”的固件模塊來與過濾器模塊1100一起使用。
在操作中,固件模塊1104-1至1104-R可以調(diào)用將由固件模塊1106-1至1106-S中的一個所提供的服務。固件模塊1104-1至1104-R不需要知道固件模塊1106-1至1106-S所提供的服務的GUID。相反,固件模塊1104-1至1104-R被配置有過濾器模塊1100的GUID,這些“調(diào)用”固件模塊使用其來調(diào)用過濾器模塊1100。過濾器模塊1100處理每個接收到的調(diào)用,并依次調(diào)用“服務”固件模塊1106-1至1106-S中合適的一個,這可能取決于平臺、“調(diào)用”固件模塊和/或“服務”固件模塊的配置。
例如,硬件組件可以是系統(tǒng)管理總線(SMBus)控制器。一種平臺可以被配置來使用單個SMBus控制器,而另外的平臺可以被配置來使用一個SMBus控制器訪問處理器103(圖1)并使用另一個SMBus控制器訪問存儲器模塊。在此實施例中,“調(diào)用”固件模塊1104-1至1104-R被配置來通過使用過濾器模塊1100的GUID簡單地調(diào)用一個SMBus控制器服務,而不必知道多個SMBus控制器服務。平臺專用的過濾器模塊1100被配置來解釋對其GUID的調(diào)用,并作為響應而調(diào)用固件模塊1106-1至1106-S中合適的SMBus控制器服務。于是在此例子中,調(diào)用各種可用SMBus服務中合適的一個的過程,對“調(diào)用”固件模塊1104-1至1104-R是透明的,其僅需要被配置來調(diào)用過濾器模塊1100。結(jié)果,只有過濾器模塊1100需要是平臺專用的,而固件模塊1104-1至1104-R和固件模塊1106-1至1106-S可以是非平臺專用的,以用于各種平臺。
這里描述了在預存儲器環(huán)境中鏈接固件模塊的系統(tǒng)和方法的實施例。在以下說明中,大量具體細節(jié)提供了對本發(fā)明實施例的充分理解。但是本領(lǐng)域技術(shù)人員將認識到?jīng)]有這些具體細節(jié)中的一個或多個,或者用其他方法、組件、材料等等也可以實現(xiàn)本發(fā)明。在其他情況下,沒有詳細示出或描述公知的結(jié)構(gòu)、材料或操作,以避免模糊本發(fā)明的方面。
整個說明書中對“一個實施例”或“實施例”的引用指的是,結(jié)合該實施例所描述的特定特征、結(jié)構(gòu)或特性被包括在本發(fā)明的至少一個實施例中。這樣,整個說明書中各處出現(xiàn)的短語“在一個實施例中”或“在實施例中”并不一定全都指相同的實施例。另外,特定特征、結(jié)構(gòu)或特性可以以任何合適的方式組合在一個或多個實施例中。
在以下說明中,為了解釋的目的,給出了具體術(shù)語以提供對本發(fā)明的充分理解。但是,本領(lǐng)域技術(shù)人員在閱讀說明后將很清楚,這些具體細節(jié)并不是實現(xiàn)本發(fā)明所必要的。
接下來的詳細說明的某些部分可能是按照對存儲在計算機存儲器中的信息的操作的符號表示和算法給出的。這些算法描述和表示可以被本領(lǐng)域技術(shù)人員用來向其他本領(lǐng)域技術(shù)人員表達其工作的實質(zhì)。這里算法一般被認為是導致所需結(jié)果的步驟或操作的自洽序列。這些步驟或操作可能需要對物理量的物理操縱。盡管并不一定,但通常這些量采用能夠被存儲、傳遞、組合、比較或進行其他操作的電、磁或電磁信號。這些信號在這里一般被稱為位、字節(jié)、字、值、元素、符號、字符、項、數(shù)等等。
除非具體指明,否則諸如“處理”、“計算(computing或calculating)”、“確定”、“顯示”等等的術(shù)語指計算機系統(tǒng)或其他類似的電子計算設(shè)備的動作或處理。具體而言,這些動作或處理將表示為計算機系統(tǒng)的寄存器和存儲器中的物理量(如上所述)的數(shù)據(jù),操縱并轉(zhuǎn)換成類似表示為計算機系統(tǒng)的存儲器或寄存器或其他信息存儲、傳輸或顯示設(shè)備中的物理量的其他數(shù)據(jù)。
本發(fā)明還涉及用于執(zhí)行這里所述的操作的一個或多個裝置。裝置可以是為所需目的專門構(gòu)造的,或者包括由存儲在計算機中的計算機程序可選地激活或配置的通用計算機。這樣的計算機程序可以被存儲在計算機可讀存儲介質(zhì)中,例如但不限于任何類型的盤,包括軟盤、光盤、致密盤(CD)和磁光盤。其他存儲介質(zhì)包括包含可擦除和電可擦除可編程ROM(EPROM和EEPROM)的只讀存儲器(ROM);包含靜態(tài)和動態(tài)RAM的隨機訪問存儲器(RAM);以及磁或光卡。
這里給出的算法和顯示并不固有地與任何特定的計算機或其他裝置相關(guān),除非特別指明。各種通用系統(tǒng)以及專用裝置可以與根據(jù)這里的教導的程序一起使用。此外,并不參考特定的編程語言來描述本發(fā)明。根據(jù)本公開,本領(lǐng)域技術(shù)人員可以在不必進行實驗的情況下使用各種編程語言來實現(xiàn)本公開的教導。
對本發(fā)明圖示實施例的上述描述,包括摘要中所描述的,并不意味是窮盡的或者將本發(fā)明限制到所公開的精確形式。雖然這里為了解釋而描述了本發(fā)明的具體實施例和例子,但是本領(lǐng)域技術(shù)人員將認識到,在本發(fā)明的范圍內(nèi)可以有各種等價修改。
可以根據(jù)以上詳細描述來對本發(fā)明進行這些修改。在所附權(quán)利要求中使用的術(shù)語不應被理解為將本發(fā)明限制到說明書和權(quán)利要求中所公開的具體實施例。相反,應完全通過所附權(quán)利要求來確定本發(fā)明的范圍,權(quán)利要求將按照權(quán)利要求解釋的已有原則來理解。
權(quán)利要求
1.一種方法,包括開始執(zhí)行基本輸入輸出系統(tǒng),所述基本輸入輸出系統(tǒng)具有多個模塊;確定所述多個模塊需要的資源;調(diào)度所述多個模塊中的模塊的執(zhí)行;以及分配所述被調(diào)度模塊用于執(zhí)行。
2.如權(quán)利要求1所述的方法,還包括在分配所述被調(diào)度模塊之后,初始化平臺的存儲器。
3.如權(quán)利要求1所述的方法,還包括在執(zhí)行所述多個模塊中的另一個模塊期間,調(diào)用所述多個模塊中的一個模塊用于執(zhí)行。
4.如權(quán)利要求3所述的方法,其中調(diào)用所述多個模塊中的一個模塊的步驟還包括保存返回地址;確定所述模塊的物理地址;執(zhí)行存儲在所述模塊的所述物理地址處的指令;以及當所述模塊執(zhí)行完成后,執(zhí)行存儲在所述被保存的返回地址處的指令。
5.如權(quán)利要求4所述的方法,其中確定所述模塊的所述物理地址的步驟,包括在所述另一個模塊的導入表中查詢所述物理地址。
6.如權(quán)利要求1所述的方法,其中所述多個模塊中的模塊包括全局唯一標識符,用于標識所述模塊;資源列表,用于存儲標識所述模塊操作所需資源的信息;導入表,用于存儲所述多個模塊中的一組模塊的物理地址,所述模塊在執(zhí)行期間可能調(diào)用所述模塊組;服務,當被執(zhí)行時進行預定的功能;導出表,用于存儲與所述服務的物理地址相對應的值;和可操作地耦合到所述全局唯一標識符、所述資源列表、所述服務、所述導入表和所述導出表的接口,其中所述接口可由調(diào)用代理通過所述全局唯一標識符來尋址,以向所述調(diào)用代理提供對所述資源列表、所述服務、所述導入表和所述導出表的訪問。
7.如權(quán)利要求6所述的方法,其中由所述導出表存儲的所述值是離開所述模塊的起始地址的偏移量。
8.如權(quán)利要求6所述的方法,其中所述導入表用于存儲所述多個模塊中的所述模塊組的全局唯一標識符。
9.如權(quán)利要求1所述的方法,還包括開始執(zhí)行所述多個模塊中的第一模塊;確定所述第一模塊是否可以與所述多個模塊中的另一個模塊鏈接;如果所述第一模塊是可鏈接的,則確定所述平臺中是否有與所述第一模塊相關(guān)聯(lián)的硬件組件;如果所述平臺中有與所述第一模塊相關(guān)聯(lián)的所述硬件組件,則完成所述第一模塊的執(zhí)行;以及如果所述平臺中沒有與所述第一模塊相關(guān)聯(lián)的所述硬件組件,則在沒有完成所述第一模塊的執(zhí)行的情況下,開始執(zhí)行所述多個模塊中的第二模塊。
10.如權(quán)利要求9所述的方法,具中所述第一模塊包括用于存儲所述第二模塊的物理地址的數(shù)據(jù)結(jié)構(gòu)。
11.如權(quán)利要求9所述的方法,還包括如果所述第一模塊是可鏈接的,則確定所述平臺中是否有與所述多個模塊中的所述第二模塊相關(guān)聯(lián)的硬件組件;如果所述平臺中有與所述第二模塊相關(guān)聯(lián)的所述硬件組件,則完成所述第二模塊的執(zhí)行;如果所述平臺中沒有與所述第二模塊相關(guān)聯(lián)的所述硬件組件,則確定是否有第三模塊被鏈接到所述第二模塊;以及如果有第三模塊被鏈接到所述第二模塊,則在沒有完成所述第二模塊的執(zhí)行的情況下,執(zhí)行所述多個模塊中的所述第三模塊。
12.如權(quán)利要求11所述的方法,其中完成所述第二模塊的執(zhí)行的步驟,還包括返回到曾調(diào)用所述第一模塊的調(diào)用代理。
13.如權(quán)利要求1所述的方法,還包括執(zhí)行由調(diào)用代理對所述多個模塊中的第一模塊進行的調(diào)用,其中所述調(diào)用是一組調(diào)用中的一個,所述調(diào)用組中的每個調(diào)用都與所述多個模塊的一組模塊中的一個模塊相關(guān)聯(lián),所述關(guān)聯(lián)取決于所述平臺的配置;響應于所述調(diào)用,開始執(zhí)行所述多個模塊中的所述第一模塊;確定所述模塊組中的哪個模塊與所述調(diào)用相關(guān)聯(lián);以及開始執(zhí)行與所述調(diào)用相關(guān)聯(lián)的所述模塊。
14.如權(quán)利要求13所述的方法,還包括當與所述調(diào)用相關(guān)聯(lián)的所述模塊的執(zhí)行完成后,返回到所述調(diào)用代理。
15.一種機器可讀介質(zhì),所述機器可讀介質(zhì)包含指令,所述指令當由機器執(zhí)行時使得所述機器執(zhí)行操作,所述操作包括開始執(zhí)行基本輸入輸出系統(tǒng),所述基本輸入輸出系統(tǒng)具有多個模塊;確定所述多個模塊需要的資源;調(diào)度所述多個模塊中的模塊的執(zhí)行;以及分配所述被調(diào)度模塊用于執(zhí)行。
16.如權(quán)利要求15所述的機器可讀介質(zhì),還包括當由所述機器執(zhí)行時使得所述機器進行如下操作的指令在分配所述被調(diào)度模塊之后,初始化所述機器的存儲器。
17.如權(quán)利要求15所述的機器可讀介質(zhì),還包括當由所述機器執(zhí)行時使得所述機器進行如下操作的指令在執(zhí)行所述多個模塊中的另一個模塊期間,調(diào)用所述多個模塊中的一個模塊用于執(zhí)行。
18.如權(quán)利要求17所述的機器可讀介質(zhì),其中調(diào)用所述多個模塊中的一個模塊還包括當由所述機器執(zhí)行時使得所述機器進行如下操作的指令保存返回地址;確定所述模塊的物理地址;執(zhí)行存儲在所述模塊的所述物理地址處的指令;以及當所述模塊執(zhí)行完成后,執(zhí)行存儲在所述被保存的返回地址處的指令。
19.如權(quán)利要求15所述的機器可讀介質(zhì),其中所述多個模塊中的模塊包括全局唯一標識符,用于標識所述模塊;資源列表,用于存儲標識所述模塊操作所需資源的信息;導入表,用于存儲所述多個模塊中的一組模塊的物理地址,所述模塊在執(zhí)行期間可能調(diào)用所述模塊組;服務,當被執(zhí)行時進行預定的功能;導出表,用于存儲與所述服務的物理地址相對應的值;和可操作地耦合到所述全局唯一標識符、所述資源列表、所述服務、所述導入表和所述導出表的接口,其中所述接口可由調(diào)用代理通過所述全局唯一標識符來尋址,以向所述調(diào)用代理提供對所述資源列表、所述服務、所述導入表和所述導出表的訪問。
20.如權(quán)利要求15所述的機器可讀介質(zhì),還包括當由所述機器執(zhí)行時使得所述機器進行如下操作的指令開始執(zhí)行所述多個模塊中的第一模塊;確定所述第一模塊是否可以與所述多個模塊中的另一個模塊鏈接;如果所述第一模塊是可鏈接的,則確定所述機器中是否有與所述第一模塊相關(guān)聯(lián)的硬件組件;如果所述機器中有與所述第一模塊相關(guān)聯(lián)的所述硬件組件,則完成所述第一模塊的執(zhí)行;以及如果所述機器中沒有與所述第一模塊相關(guān)聯(lián)的所述硬件組件,則在沒有完成所述第一模塊的執(zhí)行的情況下,開始執(zhí)行所述多個模塊中的第二模塊。
21.如權(quán)利要求20所述的機器可讀介質(zhì),還包括當由所述機器執(zhí)行時使得所述機器進行如下操作的指令如果所述第一模塊是可鏈接的,則確定所述機器中是否有與所述多個模塊中的所述第二模塊相關(guān)聯(lián)的硬件組件;如果所述機器中有與所述第二模塊相關(guān)聯(lián)的所述硬件組件,則完成所述第二模塊的執(zhí)行;如果所述機器中沒有與所述第二模塊相關(guān)聯(lián)的所述硬件組件,則確定是否有第三模塊被鏈接到所述第二模塊;以及如果有第三模塊被鏈接到所述第二模塊,則在沒有完成所述第二模塊的執(zhí)行的情況下,執(zhí)行所述多個模塊中的所述第三模塊。
22.如權(quán)利要求21所述的機器可讀介質(zhì),其中完成所述第二模塊的執(zhí)行,還包括當由所述機器執(zhí)行時使得所述機器進行如下操作的指令返回到曾調(diào)用所述第一模塊的調(diào)用代理。
23.如權(quán)利要求15所述的機器可讀介質(zhì),還包括當由所述機器執(zhí)行時使得所述機器進行如下操作的指令執(zhí)行由調(diào)用代理對所述多個模塊中的第一模塊進行的調(diào)用,其中所述調(diào)用是一組調(diào)用中的一個,所述調(diào)用組中的每個調(diào)用都與所述多個模塊的一組模塊中的一個模塊相關(guān)聯(lián),所述關(guān)聯(lián)取決于所述機器的配置;響應于所述調(diào)用,開始執(zhí)行所述多個模塊中的所述第一模塊;確定所述模塊組中的哪個模塊與所述調(diào)用相關(guān)聯(lián);以及開始執(zhí)行與所述調(diào)用相關(guān)聯(lián)的所述模塊。
24.如權(quán)利要求23所述的機器可讀介質(zhì),還包括當由所述機器執(zhí)行時使得所述機器進行如下操作的指令當與所述調(diào)用相關(guān)聯(lián)的所述模塊的執(zhí)行完成后,返回到所述調(diào)用代理。
25.一種系統(tǒng),包括多個硬件組件;用于存儲基本輸入輸出系統(tǒng)的第一存儲器設(shè)備,所述基本輸入輸出系統(tǒng)具有多個模塊,所述基本輸入輸出系統(tǒng)還包括用于確定所述多個模塊需要的資源的裝置,用于調(diào)度所述多個模塊中的模塊的執(zhí)行的裝置,和用于分配所述被調(diào)度模塊用于執(zhí)行的裝置;以及被耦合到所述多個硬件組件和所述第一存儲器設(shè)備的處理器。
26.如權(quán)利要求25所述的系統(tǒng),其中所述基本輸入輸出系統(tǒng)還包括下述裝置,用于在分配所述被調(diào)度模塊之后,初始化所述系統(tǒng)的存儲器。
27.如權(quán)利要求25所述的系統(tǒng),其中所述基本輸入輸出系統(tǒng)還包括下述裝置,用于在執(zhí)行所述多個模塊中的另一個模塊期間,調(diào)用所述多個模塊中的一個模塊用于執(zhí)行。
28.如權(quán)利要求27所述的系統(tǒng),其中用于調(diào)用所述多個模塊中的一個模塊的裝置還包括用于保存返回地址的裝置;用于確定所述模塊的物理地址的裝置;用于執(zhí)行存儲在所述模塊的所述物理地址處的指令的裝置;以及用于當所述模塊執(zhí)行完成后執(zhí)行存儲在所述被保存的返回地址處的指令的裝置。
29.如權(quán)利要求25所述的系統(tǒng),其中所述多個模塊中的模塊包括全局唯一標識符,用于標識所述模塊;資源列表,用于存儲標識所述模塊操作所需資源的信息;導入表,用于存儲所述多個模塊中的一組模塊的物理地址,所述模塊在執(zhí)行期間可能調(diào)用所述模塊組;服務,當被執(zhí)行時進行預定的功能;導出表,用于存儲與所述服務的物理地址相對應的值;和可操作地耦合到所述全局唯一標識符、所述資源列表、所述服務、所述導入表和所述導出表的接口,其中所述接口可由調(diào)用代理通過所述全局唯一標識符來尋址,以向所述調(diào)用代理提供對所述資源列表、所述服務、所述導入表和所述導出表的訪問。
30.如權(quán)利要求25所述的系統(tǒng),其中所述基本輸入輸出系統(tǒng)還包括用于開始執(zhí)行所述多個模塊中的第一模塊的裝置;用于確定所述第一模塊是否可以與所述多個模塊中的另一個模塊鏈接的裝置;如果所述第一模塊是可鏈接的,則確定所述系統(tǒng)中是否有與所述第一模塊相關(guān)聯(lián)的硬件組件的裝置;如果所述系統(tǒng)中有與所述第一模塊相關(guān)聯(lián)的所述硬件組件,則完成所述第一模塊的執(zhí)行的裝置;和如果所述系統(tǒng)中沒有與所述第一模塊相關(guān)聯(lián)的所述硬件組件,則在沒有完成所述第一模塊的執(zhí)行的情況下,開始執(zhí)行所述多個模塊中的第二模塊的裝置。
31.如權(quán)利要求30所述的系統(tǒng),其中所述基本輸入輸出系統(tǒng)還包括如果所述第一模塊是可鏈接的,則確定所述系統(tǒng)中是否有與所述多個模塊中的所述第二模塊相關(guān)聯(lián)的硬件組件的裝置;如果所述系統(tǒng)中有與所述第二模塊相關(guān)聯(lián)的所述硬件組件,則完成所述第二模塊的執(zhí)行的裝置;如果所述系統(tǒng)中沒有與所述第二模塊相關(guān)聯(lián)的所述硬件組件,則確定是否有第三模塊被鏈接到所述第二模塊的裝置;和如果有第三模塊被鏈接到所述第二模塊,則在沒有完成所述第二模塊的執(zhí)行的情況下,執(zhí)行所述多個模塊中的所述第三模塊的裝置。
32.如權(quán)利要求31所述的系統(tǒng),其中用于完成所述第二模塊的執(zhí)行的裝置,還包括用于返回到曾調(diào)用所述第一模塊的調(diào)用代理的裝置。
33.如權(quán)利要求28所述的系統(tǒng),其中所述基本輸入輸出系統(tǒng)還包括用于執(zhí)行由調(diào)用代理對所述多個模塊中的第一模塊進行的調(diào)用的裝置,其中所述調(diào)用是一組調(diào)用中的一個,所述調(diào)用組中的每個調(diào)用都與所述多個模塊的一組模塊中的一個模塊相關(guān)聯(lián),所述關(guān)聯(lián)取決于所述系統(tǒng)的配置;用于響應于所述調(diào)用,開始執(zhí)行所述多個模塊中的所述第一模塊的裝置;用于確定所述模塊組中的哪個模塊與所述調(diào)用相關(guān)聯(lián)的裝置;以及用于開始執(zhí)行與所述調(diào)用相關(guān)聯(lián)的所述模塊的裝置。
34.一種系統(tǒng),包括多個硬件組件;用于存儲基本輸入輸出系統(tǒng)的第一存儲器設(shè)備,所述基本輸入輸出系統(tǒng)包括多個模塊,所述多個模塊中的每個模塊都提供至少一個服務;可操作地耦合到所述多個模塊的核心,其中所述核心從所述多個模塊中選擇一組模塊執(zhí)行;和被耦合到所述多個硬件組件和所述第一存儲器設(shè)備的處理器。
35.如權(quán)利要求34所述的系統(tǒng),其中在執(zhí)行所述多個模塊中的第一模塊期間,所述第一模塊有選擇地調(diào)用所述多個模塊中的第二模塊用于執(zhí)行。
36.如權(quán)利要求35所述的系統(tǒng),其中所述第一模塊包括用于存儲所述第二模塊的物理地址的導入表,所述第一模塊還在調(diào)用所述第二模塊時在所述處理器的寄存器中存儲返回地址。
37.如權(quán)利要求34所述的系統(tǒng),其中所述多個模塊中的模塊包括全局唯一標識符,用于標識所述模塊;資源列表,用于存儲標識所述模塊操作所需資源的信息;導入表,用于存儲所述多個模塊中的一組模塊的物理地址,所述模塊在執(zhí)行期間可能調(diào)用所述模塊組;服務,當被執(zhí)行時進行預定的功能;導出表,用于存儲與所述服務的物理地址相對應的值;和可操作地耦合到所述全局唯一標識符、所述資源列表、所述服務、所述導入表和所述導出表的接口,其中所述接口可由調(diào)用代理通過所述全局唯一標識符來尋址,以向所述調(diào)用代理提供對所述資源列表、所述服務、所述導入表和所述導出表的訪問。
38.如權(quán)利要求34所述的系統(tǒng),其中所述多個模塊中的一組模塊具有相同的全局唯一標識符。
39.如權(quán)利要求38所述的系統(tǒng),其中在執(zhí)行所述模塊組中的第一模塊期間,當在所述系統(tǒng)中有與所述第一模塊相關(guān)聯(lián)的第一硬件組件時,所述處理器完成所述第一模塊的執(zhí)行,所述第一硬件組件是所述多個硬件組件中的一個。
40.如權(quán)利要求39所述的系統(tǒng),其中當在所述系統(tǒng)中沒有所述第一硬件組件時,所述第一模塊調(diào)用所述模塊組中的第二模塊。
41.如權(quán)利要求34所述的系統(tǒng),其中在執(zhí)行所述多個模塊中的第一模塊期間,所述第一模塊調(diào)用所述多個模塊中的第二模塊來進行服務,所述第二模塊調(diào)用作為所述系統(tǒng)的配置功能的第三模塊,所述第三模塊是所述多個模塊的一組模塊中的一個,所述模塊組中的每個都與所述多個硬件組件中提供所述第一模塊所調(diào)用的所述服務的不同硬件組件相關(guān)聯(lián)。
全文摘要
BIOS包括核心和多個模塊。所述模塊包括平臺專用和非平臺專用的模塊兩種。每個模塊都具有允許核心(或其他模塊)調(diào)用所述模塊的標準接口。平臺廠商通過選擇來自一個或多個廠商的模塊來構(gòu)造BIOS,該BIOS當被執(zhí)行時可以選擇適于BIOS所駐留平臺的模塊。
文檔編號G06F9/445GK1630851SQ03803715
公開日2005年6月22日 申請日期2003年1月24日 優(yōu)先權(quán)日2002年2月11日
發(fā)明者拉馬穆爾蒂·克里西瓦斯, 柯克·布倫諾克, 羅伯特·黑爾, 安德魯·菲什, 威廉·史蒂文斯 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1