的查看、設備參數(shù)配置、訪問存儲介質(zhì)中的文件、設備管理和測試、操作系統(tǒng)啟動等。
[0057]在上述步驟中,對于與具體硬件平臺相關的模塊,對于本例來說主要是FT1000A處理器,需要根據(jù)硬件的用戶手冊或參考廠家的開源代碼來進行開發(fā);對于與硬件平臺無關的通用模塊,如DxeCore模塊、Architectural Protocol模塊、總線協(xié)議、SATA/IDE設備驅(qū)動、USB存儲設備驅(qū)動、鍵盤驅(qū)動、文件系統(tǒng)、BDS模塊等,可以采用EDK II中提供的模塊和代碼;對于固件的功能模塊,如配置界面、操作系統(tǒng)加載等,需要根據(jù)具體需求進行開發(fā);對于顯卡驅(qū)動,由于顯卡上的0PR0M(Opt1n ROM,顯卡廠家提供的驅(qū)動)是X86指令集的,在SPARC指令集的飛騰處理器上無法執(zhí)行,所以在固件中采用一個開源的X86模擬器模塊來解釋執(zhí)行顯卡的0PR0M,實現(xiàn)對顯卡的初始化。
[0058]綜上所述,以上僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1.一種基于飛騰便攜式計算機的UEFI固件實現(xiàn)方法,其特征是,所述固件劃分為硬件抽象層、固件核心層、設備協(xié)議層和固件應用層;其中,硬件抽象層實現(xiàn)處理器、內(nèi)存、夕卜設控制器等關鍵硬件部件的初始化,對其他板級硬件進行包裝和抽象并實現(xiàn)初始化,同時為上層模塊提供訪問底層硬件設備的函數(shù)接口 ;其包括處理器驅(qū)動模塊、外設驅(qū)動模塊和電源管理模塊;固件核心層類似于操作系統(tǒng)的內(nèi)核,建立UEFI中的系統(tǒng)服務表,進行固件中所有模塊的統(tǒng)一管理和各種資源的管理,其包括固件核心加載模塊、固件核心模塊和基礎架構(gòu)功能模塊;設備協(xié)議層實現(xiàn)各種標準的工業(yè)規(guī)范,包括總線協(xié)議、外設接口等;其包括總線協(xié)議模塊,實現(xiàn)各種總線協(xié)議;固件應用層實現(xiàn)固件的各項功能,如配置界面、系統(tǒng)監(jiān)控、文件系統(tǒng)、操作系統(tǒng)引導等;其包括設備掃描模塊、人機界面模塊、系統(tǒng)監(jiān)控模塊、IEEE1275支持模塊、系統(tǒng)啟動模塊、內(nèi)核加載模塊和Shell模塊; 所述固件的具體運行步驟如下: (1)初始化處理器、內(nèi)存,建立起固件運行的基本環(huán)境; (2)將UEFI固件代碼復制到內(nèi)存,并對固件進行解壓,加載固件核心模塊; (3)建立UEFI固件的基礎服務; (4)加載UEFI固件功能模塊,包括基礎架構(gòu)功能模塊、設備協(xié)議模塊; (5)掃描設備并為設備分配系統(tǒng)資源,加載設備驅(qū)動模塊,完成設備初始化; (6)加載電源管理模塊,并根據(jù)啟動模式來執(zhí)行相應的啟動路徑: a)如果當前啟動模式是從S3待機狀態(tài)喚醒,則跳轉(zhuǎn)到操作系統(tǒng)進入S3狀態(tài)前的運行地址,結(jié)束啟動過程; b)如果當前啟動模式是正常啟動模式(包括熱啟動、冷啟動),或從S5休眠狀態(tài)喚醒,則繼續(xù)后續(xù)的步驟; (7)加載執(zhí)行固件應用模塊; (8)運行配置界面; (9)從存儲設備加載操作系統(tǒng)。
2.如權(quán)利要求1所述的基于飛騰便攜式計算機的UEFI固件實現(xiàn)方法,其特征是在所述;步驟(I)中執(zhí)行處理器驅(qū)動模塊;在步驟(I)執(zhí)行之前,系統(tǒng)中的虛擬機監(jiān)控器Hypervisor已經(jīng)實現(xiàn)了物理處理器和內(nèi)存的初始化,此時處理器驅(qū)動模塊只需要對虛擬的處理器、內(nèi)存進行初始化,進行參數(shù)的配置,以及提供訪問CPU、Cache、內(nèi)存等部件的接口 ; 上述步驟中,步驟⑵中執(zhí)行固件核心加載模塊;步驟⑴執(zhí)行完成后,系統(tǒng)內(nèi)存已經(jīng)初始化好,此時固件代碼可以在內(nèi)存中運行以加快運行速度;而且可以用C語言來實現(xiàn)固件代碼,加快開發(fā)速度;固件中包含的功能模塊較多,而FLASH芯片的容量有限,一般需要將存放功能模塊的固件卷進行壓縮,固件核心加載模塊負責從FLASH中將壓縮的固件卷復制到內(nèi)存中,并進行解壓;解壓成功后,在內(nèi)存中創(chuàng)建HOB (Hand-Off Block)數(shù)據(jù)表,存放處理器、內(nèi)存、FLASH等系統(tǒng)信息,提供給后續(xù)的固件模塊使用;最后,固件核心加載模塊將控制權(quán)交給固件核心模塊; 上述步驟中,步驟(3)中執(zhí)行固件核心模塊;固件核心模塊首先初始化UEFI的系統(tǒng)服務,為后續(xù)的功能模塊的加載、運行做準備;主要是完成UEFI系統(tǒng)表、UEFI啟動服務表和UEFI運行時服務表的初始化,具體服務包括代碼調(diào)試、內(nèi)存管理、UEFI鏡像管理、HOB、UEFI時鐘、FLASH訪問、解壓縮、固件卷解析、UEFI事件、任務優(yōu)先級、UEFI Protocol管理、UEFI變量存取等;系統(tǒng)服務表存放在內(nèi)存的特定區(qū)域,UEFI固件中的所有功能模塊都可以調(diào)用這些系統(tǒng)服務: 上述步驟中,步驟(4)中固件核心模塊加載固件的功能模塊;固件核心模塊通過檢索固件卷,依次查找其中的功能模塊,并將其加載到內(nèi)存中;每個功能模塊都被編譯成一個PE/ELF格式的可執(zhí)行鏡像,固件核心模塊需要解析功能模塊鏡像,然后加載到內(nèi)存的特定地址處,并跳轉(zhuǎn)到入口函數(shù);功能模塊的入口函數(shù)執(zhí)行完成后,通常會返回到固件核心模塊,固件核心模塊繼續(xù)進行下一個功能模塊的加載; 在步驟(4)中被加載的模塊包括基礎架構(gòu)功能模塊、設備協(xié)議模塊;其中,基礎架構(gòu)功能模塊主要功能是實現(xiàn)UEFI規(guī)范中的Architectural Protocol,主要包括:Boot DeviceSelect1n (BDS)、CPU、Metronome、Monotonic Counter、Real Time Clock、Runtime、Security> Status Code、Timer、Variable、Variable Write、Watchdog Timer, 每 個Architectural Protocol由一個模塊來實現(xiàn);設備協(xié)議層模塊主要實現(xiàn)訪問PCI/PCIE、SATA、PATA, SCS1、USB、ISA、SMBUS, LPCBUS 等總線的函數(shù)接 口,并封裝在 Protocol 中供其他功能模塊調(diào)用,通常是一個模塊實現(xiàn)一種總線協(xié)議; 上述步驟中,步驟(5)中完成設備的初始工作;固件核心模塊加載設備驅(qū)動模塊,實現(xiàn)主板上外設的初始化和實現(xiàn)訪問外設的函數(shù)接口,包括南北橋芯片、顯卡、SATA/IDE控制器、USB控制器、SMBUS控制器、LPC控制器、鍵盤、網(wǎng)卡等;通常由一個模塊實現(xiàn)一種設備驅(qū)動;另外,在這個階段由設備掃描模塊掃描系統(tǒng)中的所有外設,并為外設分配內(nèi)存、1和中斷資源,這樣外設在操作系統(tǒng)下才能正常工作; 上述步驟中,步驟¢)中固件核心模塊加載電源管理模塊,并以當前的啟動模式來決定后續(xù)的啟動路徑;電源管理模塊中實現(xiàn)了一些供操作系統(tǒng)調(diào)用的函數(shù)接口,操作系統(tǒng)在進入S3待機狀態(tài)之前調(diào)用這些接口來設置設備的電源狀態(tài)、內(nèi)存工作模式等;另外,電源管理模塊還讀取(由操作系統(tǒng)在進入S3待機或S5休眠狀態(tài)之前存入非易失存儲器中的)啟動模式值,如果發(fā)現(xiàn)當前啟動模式是從S3狀態(tài)喚醒,固件將非易失存儲器中讀取操作系統(tǒng)進入S3狀態(tài)前的運行地址,并跳轉(zhuǎn)到該地址,將控制權(quán)交給操作系統(tǒng),從而結(jié)束啟動過程;如果當前啟動模式是正常啟動模式(包括熱啟動、冷啟動),或是從S5休眠狀態(tài)喚醒,則固件繼續(xù)后續(xù)的步驟; 上述步驟中,步驟(7)中固件核心模塊加載固件卷中的固件應用模塊,并實現(xiàn)對應的固件功能;包括顯示模塊、系統(tǒng)監(jiān)控模塊、IEEE1275支持模塊、文件系統(tǒng)模塊、內(nèi)核加載模塊、Shell模塊、系統(tǒng)啟動模塊;最后,固件核心模塊將控制權(quán)交給系統(tǒng)啟動模塊,準備啟動操作系統(tǒng); 上述步驟中,步驟(8)中系統(tǒng)啟動模塊通過調(diào)用固件核心模塊和其他功能模塊提供的服務接口,顯示出圖形配置界面作為人機交互界面;在這個階段,固件根據(jù)用戶的操作來進行下一步的工作,包括提供系統(tǒng)信息的顯示和系統(tǒng)參數(shù)的配置,以及選擇要啟動的設備,包括硬盤、光盤、U盤、命令行等;用戶通過特定按鍵退出配置界面進入到下一個執(zhí)行步驟;上述步驟中,步驟(9)中實現(xiàn)操作系統(tǒng)的啟動;根據(jù)用戶配置的啟動順序,系統(tǒng)啟動模塊依次嘗試從硬盤、光盤、U盤等介質(zhì)將操作系統(tǒng)內(nèi)核文件(或內(nèi)核加載器)加載到內(nèi)存,并為內(nèi)核準備必要的啟動參數(shù),然后將控制權(quán)交給內(nèi)核(或內(nèi)核加載器),從而完成系統(tǒng)的啟動工作;操作系統(tǒng)啟動完成后,可調(diào)用固件中實現(xiàn)的IEEE1275接口和數(shù)據(jù)結(jié)構(gòu)。
【專利摘要】本發(fā)明涉及一種基于飛騰便攜式計算機的UEFI固件實現(xiàn)方法,屬于計算機固件技術(shù)領域。固件劃分為硬件抽象層、固件核心層、設備協(xié)議層和固件應用層,硬件抽象層實現(xiàn)處理器、內(nèi)存、芯片組等關鍵硬件部件的初始化,對其他板級硬件進行包裝和抽象并實現(xiàn)初始化,同時為上層模塊提供訪問底層硬件設備的函數(shù)接口。固件核心層建立UEFI中的系統(tǒng)服務表,進行固件中所有模塊的統(tǒng)一管理和各種資源的管理;設備協(xié)議層實現(xiàn)各種標準的工業(yè)規(guī)范;固件應用層實現(xiàn)固件的各項功能,如配置界面、系統(tǒng)監(jiān)控、文件系統(tǒng)、操作系統(tǒng)引導等;本發(fā)明能夠在飛騰便攜式機上實現(xiàn)出符合國際主流UEFI固件規(guī)范、可擴展性強、功能完善的固件產(chǎn)品,以支持飛騰便攜式機的正常啟動和運行。
【IPC分類】G06F9-445
【公開號】CN104572164
【申請?zhí)枴緾N201410112068
【發(fā)明人】陳小春, 張超, 朱立森, 王亞洲, 張家定, 趙麗娜, 劉昊天, 肖志坤, 周文丹
【申請人】中電科技(北京)有限公司
【公開日】2015年4月29日
【申請日】2014年3月21日