啟動工作。
[0027]有益效果:
[0028]1、本發(fā)明的方法符合國際主流的UEFI和PI固件規(guī)范,可利用UEFI聯(lián)盟提供的開源代碼資源快速實現(xiàn)固件;很多外設(shè)板卡廠商都提供基于UEFI規(guī)范的驅(qū)動,也可大大加快固件開發(fā)的進度。另外,UEFI固件支持主要的計算機工業(yè)標準,如目前龍芯處理器還不支持的ACPI (高級配置和電源管理接口)規(guī)范,這樣采用本發(fā)明設(shè)計的固件可以方便地增加對這些規(guī)范的支持。
[0029]2、本發(fā)明設(shè)計的UEFI固件的重要特點是高度模塊化,固件所要實現(xiàn)的功能被分解成很多子功能,每個子功能由單獨的模塊來實現(xiàn),并由一個核心模塊來加載和管理這些功能模塊。因此可以通過增刪模塊來方便地定制固件的功能。
【附圖說明】
[0030]圖1是基于龍芯手持機的UEFI固件的架構(gòu)示意圖。
【具體實施方式】
[0031]下面結(jié)合附圖并舉實施例,對本發(fā)明進行詳細描述。
[0032]如附圖1表示,下面以龍芯中科公司設(shè)計的一款型號為LST11A102I的開發(fā)板為例,來介紹本發(fā)明描述的UEFI固件的【具體實施方式】。主要包括以下步驟:
[0033](I)實現(xiàn)STU階段的功能模塊,包括兩個模塊,這個兩個模塊在編譯以后將依次被放到FLASH芯片的開始位置,并在系統(tǒng)上電后依次被執(zhí)行。包括:
[0034](1.1)創(chuàng)建一個Start模塊,即處理器驅(qū)動模塊。根據(jù)龍芯IA處理器手冊實現(xiàn)處理器、Cache (高速緩存)、內(nèi)存、地址窗口、TLB (旁路轉(zhuǎn)換緩沖)等初始化,實現(xiàn)MCU (內(nèi)存控制器)、SMBUS和內(nèi)存的初始化,并提供訪問CPU、Cache、內(nèi)存等部件的接口 ;
[0035](1.2)創(chuàng)建一個Sec模塊。這個模塊的實現(xiàn)的功能包括在內(nèi)存創(chuàng)建一些存放處理器、內(nèi)存信息的數(shù)據(jù)結(jié)構(gòu),將FLASH芯片中的功能模塊解壓到內(nèi)存中,最后加載執(zhí)行固件核心模塊DxeCore。
[0036](2)實現(xiàn)固件核心模塊DxeCore。要實現(xiàn)的功能主要包括:實現(xiàn)UEFI規(guī)范中定義的啟動服務(wù)和運行時服務(wù)表,加載、運行其他功能模塊,管理各模塊之間的交互,實現(xiàn)內(nèi)存的管理,實現(xiàn)和維護時鐘中斷和事件機制,實現(xiàn)和維護固件應(yīng)用的特權(quán)級機制,實現(xiàn)UEFI規(guī)范中定義的Protocol的管理機制,實現(xiàn)基礎(chǔ)函數(shù)庫,以及調(diào)試接口、壓縮算法、變量存儲
/處理等。
[0037](3)實現(xiàn) Architectural Protocol,包括 Variable, Variable Write, Timer, CPU,Metronome, Monotonic Counter, Status Code, Watchdog Timer, RTC, BDS。一個模塊實現(xiàn)一種 Architectural Protocol。
[0038](4)實現(xiàn)外設(shè)驅(qū)動模塊。包括:
[0039](4.1)實現(xiàn)外設(shè)控制的驅(qū)動模塊。根據(jù)龍芯IA處理器手冊,實現(xiàn)集成的顯示控制器、PS2控制器、USB控制器、NAND FLASH控制器、LPC控制器的初始化,并實現(xiàn)訪問外設(shè)控制器的接口。
[0040](4.2)實現(xiàn)外設(shè)驅(qū)動模塊,包括IXD顯示屏、NAND FLASH存儲器、T9鍵盤、USB存儲設(shè)備、時鐘中斷驅(qū)動。
[0041](4.3)實現(xiàn)外設(shè)枚舉模塊,枚舉PCI/PCIE總線上的設(shè)備,并為設(shè)備分配10、內(nèi)存和中斷資源。
[0042](5)實現(xiàn)總線驅(qū)動模塊,包括PCI/PCIE、USB、SMBUS、LPCBUS, 一個模塊實現(xiàn)一種總線協(xié)議。
[0043](6)實現(xiàn)固件應(yīng)用層模塊。主要包括:
[0044](6.1)實現(xiàn)人機界面模塊。在IXD顯示屏上顯示一個操作界面,提供4個菜單,包括 System Recovery, Firmware Informat1n, Boot From Usb, Update the OS, Continue。用戶可通過T9鍵盤的方向鍵來選擇菜單執(zhí)行相應(yīng)的操作。
[0045](6.2)實現(xiàn)系統(tǒng)支持模塊,實現(xiàn)系統(tǒng)恢復、系統(tǒng)升級、系統(tǒng)啟動等功能。
[0046]在上述步驟中,對于與具體硬件平臺相關(guān)的模塊,如龍芯IA處理器,一般需要根據(jù)硬件的用戶手冊或參考廠家的開源代碼來進行開發(fā);對于與硬件平臺無關(guān)的通用模塊,如DxeCore模塊、Architectural Protocol模塊、總線協(xié)議、網(wǎng)絡(luò)協(xié)議棧、USB存儲設(shè)備驅(qū)動、鍵盤驅(qū)動、文件系統(tǒng)、BDS模塊等,可以采用EDK II中提供的模塊和代碼;對于固件的功能模塊,如配置界面、操作系統(tǒng)加載等,需要根據(jù)具體需求進行開發(fā)。
[0047]綜上所述,以上僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1.一種基于龍芯手持式計算機的UEFI固件實現(xiàn)方法,其特征是,所述UEFI固件劃分為硬件抽象層、固件核心層、設(shè)備協(xié)議層和固件應(yīng)用層;其中,硬件抽象層實現(xiàn)處理器、內(nèi)存、外設(shè)控制器等關(guān)鍵硬件部件的初始化,對其他板級硬件進行包裝和抽象并實現(xiàn)初始化,同時為上層模塊提供訪問底層硬件設(shè)備的函數(shù)接口 ;其包括處理器驅(qū)動模塊和外設(shè)驅(qū)動模塊;固件核心層類建立UEFI中的系統(tǒng)服務(wù)表,進行固件中所有模塊的統(tǒng)一管理和各種資源的管理;其包括固件核心加載模塊、固件核心模塊和基礎(chǔ)架構(gòu)功能模塊;設(shè)備協(xié)議層實現(xiàn)各種標準的工業(yè)規(guī)范,包括總線協(xié)議和外設(shè)接口,其包括總線協(xié)議模塊,實現(xiàn)各種總線協(xié)議;固件應(yīng)用層實現(xiàn)固件的各項功能;其包括設(shè)備掃描模塊、人機界面模塊和系統(tǒng)支持模塊; 所述UEFI固件的具體運行步驟如下: (1)初始化處理器、內(nèi)存,建立起固件運行的基本環(huán)境; (2)將UEFI固件代碼復制到內(nèi)存,并對固件進行解壓,加載固件核心模塊; (3)建立UEFI固件的基礎(chǔ)服務(wù); (4)加載UEFI固件功能模塊,包括基礎(chǔ)架構(gòu)功能模塊、設(shè)備協(xié)議模塊; (5)掃描設(shè)備并為設(shè)備分配系統(tǒng)資源,加載設(shè)備驅(qū)動模塊,完成設(shè)備初始化; (6)運行人機界面; (7)啟動操作系統(tǒng),或進行操作系統(tǒng)的恢復、升級操作。
2.如權(quán)利要求1所述的基于龍芯手持式計算機的UEFI固件實現(xiàn)方法,其特征是,所述步驟(I)中執(zhí)行處理器驅(qū)動模塊。處理器驅(qū)動模塊采用MIPS匯編語言實現(xiàn),是系統(tǒng)上電后首先執(zhí)行的模塊,此時內(nèi)存還未完成初始化,模塊直接在FLASH芯片中運行。
3.如權(quán)利要求1所述的基于龍芯手持式計算機的UEFI固件實現(xiàn)方法,其特征是,所述步驟(2)中執(zhí)行固件核心加載模塊;步驟(I)執(zhí)行完成后,系統(tǒng)內(nèi)存已經(jīng)初始化好,將存放功能模塊的固件卷進行壓縮,固件核心加載模塊負責從FLASH中將壓縮的固件卷復制到內(nèi)存中,并進行解壓;解壓成功后,在內(nèi)存中創(chuàng)建HOB (Hand-OffBlock)數(shù)據(jù)表,存放處理器、內(nèi)存、FLASH等系統(tǒng)信息,提供給后續(xù)的固件模塊使用;最后,固件核心加載模塊將控制權(quán)交給固件核心模塊。
4.如權(quán)利要求1所述的基于龍芯手持式計算機的UEFI固件實現(xiàn)方法,其特征是,所述步驟(3)中執(zhí)行固件核心模塊;固件核心模塊首先初始化UEFI的系統(tǒng)服務(wù),為后續(xù)的功能模塊的加載、運行做準備;主要是完成UEFI系統(tǒng)表、UEFI啟動服務(wù)表和UEFI運行時服務(wù)表的初始化,具體服務(wù)包括代碼調(diào)試、內(nèi)存管理、UEFI鏡像管理、HOB、UEFI時鐘、FLASH訪問、解壓縮、固件卷解析、UEFI事件、任務(wù)優(yōu)先級、UEFI Protocol管理、UEFI變量存取等;系統(tǒng)服務(wù)表存放在內(nèi)存的特定區(qū)域,UEFI固件中的所有功能模塊都可以調(diào)用這些系統(tǒng)服務(wù)。
5.如權(quán)利要求1所述的基于龍芯手持式計算機的UEFI固件實現(xiàn)方法,其特征是,所述步驟(4)中固件核心模塊加載固件的功能模塊;固件核心模塊通過檢索固件卷,依次查找其中的功能模塊,并將其加載到內(nèi)存中;每個功能模塊都被編譯成一個PE/ELF格式的可執(zhí)行鏡像,固件核心模塊需要解析功能模塊鏡像,然后加載到內(nèi)存的特定地址處,并跳轉(zhuǎn)到入口函數(shù);功能模塊的入口函數(shù)執(zhí)行完成后返回到固件核心模塊,固件核心模塊繼續(xù)進行下一個功能模塊的加載。
6.如權(quán)利要求1所述的基于龍芯手持式計算機的UEFI固件實現(xiàn)方法,其特征是,所述步驟(5)中完成設(shè)備的初始工作;固件核心模塊加載設(shè)備驅(qū)動模塊,實現(xiàn)龍芯嵌入式處理器中集成的外設(shè)控制器的初始化,包括顯示控制器、PS2控制器、USB控制器、NAND FLASH控制器、LPC控制器;并實現(xiàn)主板上外設(shè)的初始化和實現(xiàn)訪問外設(shè)的函數(shù)接口,包括IXD顯示屏、NAND FLASH存儲器、T9鍵盤、USB設(shè)備等;通常由一個模塊實現(xiàn)一種設(shè)備驅(qū)動。
7.如權(quán)利要求1所述的基于龍芯手持式計算機的UEFI固件實現(xiàn)方法,其特征是,所述步驟¢)中固件核心模塊加載固件卷中的固件應(yīng)用模塊,主要包括人機界面模塊、系統(tǒng)支持模塊;然后運行人機界面模塊,在LCD顯示屏上提供少量的幾個菜單,用戶可通過T9鍵盤來選擇要進行的操作,包括查看固件版本信息、進行系統(tǒng)恢復、系統(tǒng)升級、系統(tǒng)啟動等;如果用戶沒有進行按鍵操作,則固件在等待時間超時后,自動進行操作系統(tǒng)啟動。
8.如權(quán)利要求1所述的基于龍芯手持式計算機的UEFI固件實現(xiàn)方法,其特征是,所述步驟(7)中系統(tǒng)支持模塊實現(xiàn)操作系統(tǒng)的啟動、恢復和升級功能;根據(jù)用戶在上一步驟中的選擇,固件進行操作系統(tǒng)的恢復、升級或者啟動功能;在進行操作系統(tǒng)恢復或升級時,固件從NAND FLASH中的備份區(qū)域或者U盤中讀取操作系統(tǒng)內(nèi)核文件,并寫入NAND FLASH中存放操作系統(tǒng)內(nèi)核的區(qū)域;在進行操作系統(tǒng)啟動時,固件從NAND FLASH中將操作系統(tǒng)內(nèi)核文件讀取到內(nèi)存,并為內(nèi)核準備必要的啟動參數(shù),然后將控制權(quán)交給內(nèi)核并的區(qū)域的備份區(qū),從而完成系統(tǒng)的啟動工作。
【專利摘要】本發(fā)明涉及一種基于龍芯手持式計算機的UEFI固件的實現(xiàn)方法,屬于計算機固件技術(shù)領(lǐng)域。固件劃分為硬件抽象層、固件核心層、設(shè)備協(xié)議層和固件應(yīng)用層;硬件抽象層實現(xiàn)處理器、內(nèi)存、芯片組等關(guān)鍵硬件部件的初始化,對其他板級硬件進行包裝和抽象并實現(xiàn)初始化,同時為上層模塊提供訪問底層硬件設(shè)備的函數(shù)接口。固件核心層建立UEFI中的系統(tǒng)服務(wù)表,進行固件中所有模塊的統(tǒng)一管理和各種資源的管理;設(shè)備協(xié)議層實現(xiàn)各種標準的工業(yè)規(guī)范;固件應(yīng)用層實現(xiàn)固件的各項功能;本發(fā)明能夠在龍芯手持式計算機上實現(xiàn)出符合國際主流UEFI固件規(guī)范、可擴展性強、功能完善的固件產(chǎn)品,以支計算機的正常啟動和運行。
【IPC分類】G06F9-445
【公開號】CN104572162
【申請?zhí)枴緾N201410112040
【發(fā)明人】陳小春, 張超, 朱立森, 王亞洲, 張家定, 趙麗娜, 劉昊天, 肖志坤, 周文丹
【申請人】中電科技(北京)有限公司
【公開日】2015年4月29日
【申請日】2014年3月21日