一種修改bios setup界面的方法
【專利摘要】本發(fā)明公開(kāi)了一種修改BIOSSETUP界面的方法,屬于計(jì)算機(jī)UEFI【技術(shù)領(lǐng)域】。計(jì)算機(jī)系統(tǒng)在UEFIShell環(huán)境中,所述方法使用的系統(tǒng)架構(gòu)包括提供圖形接口的圖形抽象層、提供鼠標(biāo)和鍵盤(pán)驅(qū)動(dòng)的輸入抽象層、圖形設(shè)備接口層、圖形用戶接口層、應(yīng)用程序編程接口,圖形抽象層和輸入抽象層位于系統(tǒng)最底層,圖形設(shè)備接口層位于系統(tǒng)的中間層,圖形用戶接口層位于圖形設(shè)備接口層上方,系統(tǒng)的最頂層為應(yīng)用程序編程接口。本發(fā)明大大降低了系統(tǒng)的耦合度,提高了系統(tǒng)的可擴(kuò)展性;使系統(tǒng)取得了較好的交互體驗(yàn)和較美觀的界面效果。
【專利說(shuō)明】—種修改BIOS SETUP界面的方法
[0001]
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及一種計(jì)算機(jī)UEFI【技術(shù)領(lǐng)域】,具體地說(shuō)是一種修改BIOS SETUP界面的方法。
【背景技術(shù)】
[0003]UEFI 為英文 Unified Extensible Firmware Interface 的縮寫(xiě),翻譯為統(tǒng)一的可擴(kuò)展固件接口,是一種詳細(xì)描述類型接口的標(biāo)準(zhǔn)。UEFI是操作系統(tǒng)與平臺(tái)固件之間的接口模型。UEFI用于操作系統(tǒng)自動(dòng)從預(yù)啟動(dòng)的操作環(huán)境,加載到一種操作系統(tǒng)上,為啟動(dòng)一個(gè)操作系統(tǒng)與執(zhí)行啟動(dòng)前程序提供了一個(gè)標(biāo)準(zhǔn)環(huán)境。
[0004]在計(jì)算機(jī)科學(xué)中,Shell俗稱殼(用來(lái)區(qū)別于核),是指“提供使用者使用界面”的軟件(命令解析器)。它接收用戶命令,然后調(diào)用相應(yīng)的應(yīng)用程序。UEFI Shell提供了類似DOS的命令行文字界面。
[0005]BIOS是英文“Basic Input Output System”的縮略語(yǔ),直譯過(guò)來(lái)后中文名稱就是“基本輸入輸出系統(tǒng)”。其實(shí),它是一組固化到計(jì)算機(jī)內(nèi)主板上一個(gè)ROM芯片上的程序,它保存著計(jì)算機(jī)最重要的基本輸入輸出的程序、系統(tǒng)設(shè)置信息、開(kāi)機(jī)后自檢程序和系統(tǒng)自啟動(dòng)程序。其主要功能是為計(jì)算機(jī)提供最底層的、最直接的硬件設(shè)置和控制。BIOS Setup菜單提供了對(duì)系統(tǒng)的配置信 息進(jìn)行設(shè)置的人機(jī)圖形界面。
[0006]如何在UEFI Shell下修改BIOS Setup界面是本領(lǐng)域技術(shù)人員迫切需要解決的問(wèn)題。
[0007]
【發(fā)明內(nèi)容】
本發(fā)明的技術(shù)任務(wù)是針對(duì)以上不足之處,提供一種大大降低了系統(tǒng)的耦合度,提高了系統(tǒng)的可擴(kuò)展性;使系統(tǒng)取得了較好的交互體驗(yàn)和較美觀的界面效果的一種修改BIOSSETUP界面的方法。
[0008]在UEFI規(guī)范中包括了 UGA(universal graphics adapter通用的圖形適配器)協(xié)議,該協(xié)議提供了一個(gè)Blt的函數(shù)接口在內(nèi)存與設(shè)備之間進(jìn)行像素?cái)?shù)據(jù)的傳輸;另外用于鼠標(biāo)控制的Simple Pointer協(xié)議與用于鍵盤(pán)輸入的Simple TextIn協(xié)議提供了鼠標(biāo)與鍵盤(pán)的交互功能。但是按照UEFI的規(guī)范,使用底層的設(shè)備需要按照協(xié)議一驅(qū)動(dòng)模型結(jié)構(gòu)編寫(xiě)代碼,這樣如果將來(lái)上述這3個(gè)協(xié)議產(chǎn)生了變化,也就需要同時(shí)對(duì)⑶I (英文全稱graphics device interface,翻譯為圖形設(shè)備接口層)中的繪圖支持部分以及鼠標(biāo)鍵盤(pán)部分進(jìn)行相應(yīng)的修改,進(jìn)一步會(huì)牽涉到GDI中其他功能對(duì)繪圖支持部分與鼠標(biāo)鍵盤(pán)部分的調(diào)用,極大地增加了不穩(wěn)定性。因此為了提高系統(tǒng)的可移植性,這3個(gè)協(xié)議的調(diào)用部分需要重新剝離出去生成新的層次,以滿足UEFI協(xié)議一驅(qū)動(dòng)模型的要求。對(duì)CMOS和變量區(qū)域的訪問(wèn)可以通過(guò)調(diào)用運(yùn)行時(shí)服務(wù)的函數(shù)接口 GetVariable和SetVariable以及QueryVariableInfo 來(lái)實(shí)現(xiàn)。[0009]本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:
一種修改BIOS SETUP界面的方法,計(jì)算機(jī)系統(tǒng)在UEFI Shell環(huán)境中,所述方法使用的系統(tǒng)架構(gòu)包括提供圖形接口的圖形抽象層(英文全稱為graphics abstraction layer,簡(jiǎn)稱GAL)、提供鼠標(biāo)和鍵盤(pán)驅(qū)動(dòng)的輸入抽象層(英文全稱為input abstraction layer、簡(jiǎn)稱IAL)、圖形設(shè)備接口層(英文全稱為graphics device interface、簡(jiǎn)稱⑶I)、圖形用戶接口層(英文全稱為graphics user interface、簡(jiǎn)稱⑶I )、應(yīng)用程序編程接口(英文全稱為Application Programming Interface、簡(jiǎn)稱API),圖形抽象層和輸入抽象層位于系統(tǒng)最底層,圖形設(shè)備接口層位于系統(tǒng)的中間層,圖形用戶接口層位于圖形設(shè)備接口層上方,系統(tǒng)的最頂層為應(yīng)用程序編程接口;
與圖形抽象層和輸入抽象層相對(duì)應(yīng)的接口部分是UEFI中的UGA協(xié)議、Simple Pointer協(xié)議和Simple TextIn協(xié)議,其中系統(tǒng)的圖形抽象層對(duì)UGA協(xié)議進(jìn)行封裝,并為上層的圖形設(shè)備接口層提供統(tǒng)一的接口,圖形設(shè)備接口層則對(duì)圖形抽象層進(jìn)行封裝,實(shí)現(xiàn)了更多的功能,如位圖讀取與繪制、區(qū)域剪切、文字輸出等,為上層的圖形用戶接口層提供功能使用;輸入抽象層則對(duì)Simple Pointer協(xié)議與SimpleTextIn協(xié)議進(jìn)行封裝,并通過(guò)對(duì)鼠標(biāo)鍵盤(pán)輸入的監(jiān)視生成消息(Message),通過(guò)消息可以進(jìn)行窗口之間的通信,為圖形用戶接口層的(窗口創(chuàng)建與繪制、多窗口之間的剪切等)的功能提供服務(wù);圖形用戶接口層通過(guò)應(yīng)用程序編程接口訪問(wèn)BIOS Setup的應(yīng)用程序;
所述方法步驟為:
(1)、在UEFI的BIOS源代碼中添加圖形抽象層和輸入抽象層的驅(qū)動(dòng)并實(shí)現(xiàn)相關(guān)的UGA協(xié)議、Simple Pointer 協(xié)議和 Simple TextIn 協(xié)議;
(2)、編譯UEFI的BIOS源代碼產(chǎn)生可執(zhí)行的ROM文件;
(3)、更新步驟(2)中編譯的BIOS源代碼文件到計(jì)算機(jī)系統(tǒng)Firmware中;
(4)、編寫(xiě)UEFI應(yīng)用程序?qū)崿F(xiàn)BIOSSetup界面的顯示和控制;
(5)、啟動(dòng)計(jì)算機(jī)系統(tǒng)配置文件到UEFIShell模式下,運(yùn)行應(yīng)用程序。
[0010]步驟(1)的實(shí)現(xiàn),將圖形抽象層和輸入抽象層的程序按照驅(qū)動(dòng)協(xié)議模型編寫(xiě);包括如下步驟:①、編寫(xiě)UGA協(xié)議、Simple Pointer協(xié)議和Simple TextIn協(xié)議的接口 ;②、用驅(qū)動(dòng)格式實(shí)現(xiàn)上述接口。
[0011]步驟(1)的①編寫(xiě)協(xié)議部分,需要在BIOS的Protocol文件夾下建立圖形抽象層或輸入抽象層的文件夾,并在該文件夾中編寫(xiě)Protocol的接口函數(shù);
步驟(1)的②驅(qū)動(dòng)格式是在BIOS的Driver文件夾下建立圖形抽象層或輸入抽象層的文件夾,在這個(gè)文件夾下編寫(xiě)Protocol文件中GAL函數(shù)接口的具體實(shí)現(xiàn);需要實(shí)現(xiàn)Supported函數(shù)、Start函數(shù)與Stop函數(shù);
Supported函數(shù)實(shí)現(xiàn)步驟:用UEFI規(guī)范的OpenProtocol函數(shù)打開(kāi)UEFI的UGA協(xié)議并加以測(cè)試,以保證之后的GAL功能函數(shù)可以調(diào)用UGA的服務(wù),之后用UEFI規(guī)范的CloseProtocol函數(shù)關(guān)閉UGA協(xié)議;
Start函數(shù)實(shí)現(xiàn)步驟:在得到Supported函數(shù)的保證下,用OpenProtocol函數(shù)打開(kāi)UEFI的UGA協(xié)議以調(diào)用其提供的服務(wù);隨后構(gòu)造相應(yīng)的數(shù)據(jù)結(jié)構(gòu)并用之前Protocol中的接口函數(shù)指針指向驅(qū)動(dòng)程序中對(duì)應(yīng)的函數(shù);最后用UEFI規(guī)范的Instal!ProtocolInterface 函數(shù)將 GAL 協(xié)議安裝到 Controller Handle 上; Stop函數(shù)實(shí)現(xiàn)步驟:將Start中安裝的協(xié)議用CloseProtocol關(guān)閉,并用EFI規(guī)范的UninstallProtocolInterface函數(shù)卸載,最后釋放所構(gòu)造的數(shù)據(jù)結(jié)構(gòu);
具備了上面3個(gè)函數(shù)的驅(qū)動(dòng)程序就實(shí)現(xiàn)了 UEFI驅(qū)動(dòng)的綁定協(xié)議,為GAL功能函數(shù)的開(kāi)發(fā)提供了一個(gè)符合UEFI驅(qū)動(dòng)模式的框架;
接下來(lái)用圖形學(xué)的算法實(shí)現(xiàn)相應(yīng)的函數(shù)接口;
最后,通過(guò)在UEFI應(yīng)用程序中調(diào)用GAL和IAL的驅(qū)動(dòng)來(lái)實(shí)現(xiàn)對(duì)BIOS Setup界面的顯示和修改;這包括圖形設(shè)備接口的實(shí)現(xiàn)、字符的顯示、窗口的管理和控制操作;窗口的管理和控制通過(guò)消息傳遞的方式來(lái)實(shí)現(xiàn),通過(guò)調(diào)用IAL的驅(qū)動(dòng)產(chǎn)生消息傳遞給窗口控制程序;對(duì)于BIOS Setup菜單的顯示需要調(diào)用UEFI運(yùn)行時(shí)服務(wù)的接口函數(shù)GetVariable和GetNextVariableName以及QueryVariableInfo ;在對(duì)Setup菜單的數(shù)值進(jìn)行修改后需要調(diào)用SetVariable接口函數(shù)。具體的實(shí)現(xiàn)可以參考目前UEFI BIOS的實(shí)現(xiàn)方法。
[0012]本發(fā)明的一種修改BIOS SETUP界面的方法和現(xiàn)有技術(shù)相比,基于UEFI系統(tǒng)中GAL與IAL的分層設(shè)計(jì)大大降低了系統(tǒng)的耦合度,提高了系統(tǒng)的可擴(kuò)展性。GAL與IAL和UEFI驅(qū)動(dòng)模型的集成,為系統(tǒng)在UEFI SHELL下實(shí)現(xiàn)修改BIOS SETUP界面提供了堅(jiān)實(shí)的基礎(chǔ),使系統(tǒng)取得了較好的交互體驗(yàn)和較美觀的界面效果;因而,具有很好的推廣使用價(jià)值。
【專利附圖】
【附圖說(shuō)明】
[0013]下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說(shuō)明。
[0014]附圖1為一種修改BIOS SETUP界面的方法使用的系統(tǒng)架構(gòu)的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0015]下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
[0016]實(shí)施例1:
一種修改BIOS SETUP界面的方法,計(jì)算機(jī)系統(tǒng)在UEFI Shell環(huán)境中,所述方法使用的系統(tǒng)架構(gòu)包括提供圖形接口的圖形抽象層(英文全稱為graphics abstraction layer,簡(jiǎn)稱GAL)、提供鼠標(biāo)和鍵盤(pán)驅(qū)動(dòng)的輸入抽象層(英文全稱為input abstraction layer、簡(jiǎn)稱IAL)、圖形設(shè)備接口層(英文全稱為graphics device interface、簡(jiǎn)稱⑶I)、圖形用戶接口層(英文全稱為graphics user interface、簡(jiǎn)稱⑶I)、應(yīng)用程序編程接口(英文全稱為Application Programming Interface、簡(jiǎn)稱API),圖形抽象層和輸入抽象層位于系統(tǒng)最底層,圖形設(shè)備接口層位于系統(tǒng)的中間層,圖形用戶接口層位于圖形設(shè)備接口層上方,系統(tǒng)的最頂層為應(yīng)用程序編程接口;
與圖形抽象層和輸入抽象層相對(duì)應(yīng)的接口部分是UEFI中的UGA協(xié)議、Simple Pointer協(xié)議和Simple TextIn協(xié)議,其中系統(tǒng)的圖形抽象層對(duì)UGA協(xié)議進(jìn)行封裝,并為上層的圖形設(shè)備接口層提供統(tǒng)一的接口,圖形設(shè)備接口層則對(duì)圖形抽象層進(jìn)行封裝,實(shí)現(xiàn)了更多的功能,如位圖讀取與繪制、區(qū)域剪切、文字輸出等,為上層的圖形用戶接口層提供功能使用;輸入抽象層則對(duì)Simple Pointer協(xié)議與SimpleTextIn協(xié)議進(jìn)行封裝,并通過(guò)對(duì)鼠標(biāo)鍵盤(pán)輸入的監(jiān)視生成消息(Message),通過(guò)消息可以進(jìn)行窗口之間的通信,為圖形用戶接口層的(窗口創(chuàng)建與繪制、多窗口之間的剪切等)的功能提供服務(wù);圖形用戶接口層通過(guò)應(yīng)用程序編程接口訪問(wèn)BIOS Setup的應(yīng)用程序; 所述方法步驟為:
(1)、在UEFI的BIOS源代碼中添加圖形抽象層和輸入抽象層的驅(qū)動(dòng)并實(shí)現(xiàn)相關(guān)的UGA協(xié)議、Simple Pointer 協(xié)議和 Simple TextIn 協(xié)議;
(2)、編譯UEFI的BIOS源代碼產(chǎn)生可執(zhí)行的ROM文件;
(3)、更新步驟(2)中編譯的BIOS源代碼文件到計(jì)算機(jī)系統(tǒng)Firmware中;
(4)、編寫(xiě)UEFI應(yīng)用程序?qū)崿F(xiàn)BIOSSetup界面的顯示和控制;
(5)、啟動(dòng)計(jì)算機(jī)系統(tǒng)配置文件到UEFIShell模式下,運(yùn)行應(yīng)用程序。
[0017]實(shí)施例2:
一種修改BIOS SETUP界面的方法,計(jì)算機(jī)系統(tǒng)在UEFI Shell環(huán)境中,所述方法使用的系統(tǒng)架構(gòu)包括提供圖形接口的圖形抽象層(英文全稱為graphics abstraction layer,簡(jiǎn)稱GAL)、提供鼠標(biāo)和鍵盤(pán)驅(qū)動(dòng)的輸入抽象層(英文全稱為input abstraction layer、簡(jiǎn)稱IAL)、圖形設(shè)備接口層(英文全稱為graphics device interface、簡(jiǎn)稱⑶I)、圖形用戶接口層(英文全稱為graphics user interface、簡(jiǎn)稱⑶I)、應(yīng)用程序編程接口(英文全稱為Application Programming Interface、簡(jiǎn)稱API),圖形抽象層和輸入抽象層位于系統(tǒng)最底層,圖形設(shè)備接口層位于系統(tǒng)的中間層,圖形用戶接口層位于圖形設(shè)備接口層上方,系統(tǒng)的最頂層為應(yīng)用程序編程接口;
與圖形抽象層和輸入抽象層相對(duì)應(yīng)的接口部分是UEFI中的UGA協(xié)議、Simple Pointer協(xié)議和Simple TextIn協(xié)議,其中系統(tǒng)的圖形抽象層對(duì)UGA協(xié)議進(jìn)行封裝,并為上層的圖形設(shè)備接口層提供統(tǒng)一的接口,圖形設(shè)備接口層則對(duì)圖形抽象層進(jìn)行封裝,實(shí)現(xiàn)了更多的功能,如位圖讀取與繪制、區(qū)域剪切、文字輸出等,為上層的圖形用戶接口層提供功能使用;輸入抽象層則對(duì)Simple Pointer協(xié)議與SimpleTextIn協(xié)議進(jìn)行封裝,并通過(guò)對(duì)鼠標(biāo)鍵盤(pán)輸入的監(jiān)視生成消息(Message),通過(guò)消息可以進(jìn)行窗口之間的通信,為圖形用戶接口層的(窗口創(chuàng)建與繪制、多窗口之間的剪切等)的功能提供服務(wù);圖形用戶接口層通過(guò)應(yīng)用程序編程接口訪問(wèn)BIOS Setup的應(yīng)用程序;
所述方法步驟為:
(1)、在UEFI的BIOS源代碼中添加圖形抽象層和輸入抽象層的驅(qū)動(dòng)并實(shí)現(xiàn)相關(guān)的UGA協(xié)議、Simple Pointer 協(xié)議和 Simple TextIn 協(xié)議;
(2)、編譯UEFI的BIOS源代碼產(chǎn)生可執(zhí)行的ROM文件;
(3)、更新步驟(2)中編譯的BIOS源代碼文件到計(jì)算機(jī)系統(tǒng)Firmware中;
(4)、編寫(xiě)UEFI應(yīng)用程序?qū)崿F(xiàn)BIOSSetup界面的顯示和控制;
(5)、啟動(dòng)計(jì)算機(jī)系統(tǒng)配置文件到UEFIShell模式下,運(yùn)行應(yīng)用程序。
[0018]步驟(I)的實(shí)現(xiàn),將圖形抽象層和輸入抽象層的程序按照驅(qū)動(dòng)協(xié)議模型編寫(xiě);包括如下步驟:①、編寫(xiě)UGA協(xié)議、Simple Pointer協(xié)議和Simple TextIn協(xié)議的接口 ;②、用驅(qū)動(dòng)格式實(shí)現(xiàn)上述接口。
[0019]實(shí)施例3:
一種修改BIOS SETUP界面的方法,計(jì)算機(jī)系統(tǒng)在UEFI Shell環(huán)境中,所述方法使用的系統(tǒng)架構(gòu)包括提供圖形接口的圖形抽象層(英文全稱為graphics abstraction layer,簡(jiǎn)稱GAL)、提供鼠標(biāo)和鍵盤(pán)驅(qū)動(dòng)的輸入抽象層(英文全稱為input abstraction layer、簡(jiǎn)稱IAL)、圖形設(shè)備接口層(英文全稱為graphics device interface、簡(jiǎn)稱⑶I)、圖形用戶接口層(英文全稱為graphics user interface、簡(jiǎn)稱⑶I )、應(yīng)用程序編程接口(英文全稱為Application Programming Interface、簡(jiǎn)稱API),圖形抽象層和輸入抽象層位于系統(tǒng)最底層,圖形設(shè)備接口層位于系統(tǒng)的中間層,圖形用戶接口層位于圖形設(shè)備接口層上方,系統(tǒng)的最頂層為應(yīng)用程序編程接口;
與圖形抽象層和輸入抽象層相對(duì)應(yīng)的接口部分是UEFI中的UGA協(xié)議、Simple Pointer協(xié)議和Simple TextIn協(xié)議,其中系統(tǒng)的圖形抽象層對(duì)UGA協(xié)議進(jìn)行封裝,并為上層的圖形設(shè)備接口層提供統(tǒng)一的接口,圖形設(shè)備接口層則對(duì)圖形抽象層進(jìn)行封裝,實(shí)現(xiàn)了更多的功能,如位圖讀取與繪制、區(qū)域剪切、文字輸出等,為上層的圖形用戶接口層提供功能使用;輸入抽象層則對(duì)Simple Pointer協(xié)議與SimpleTextIn協(xié)議進(jìn)行封裝,并通過(guò)對(duì)鼠標(biāo)鍵盤(pán)輸入的監(jiān)視生成消息(Message),通過(guò)消息可以進(jìn)行窗口之間的通信,為圖形用戶接口層的(窗口創(chuàng)建與繪制、多窗口之間的剪切等)的功能提供服務(wù);圖形用戶接口層通過(guò)應(yīng)用程序編程接口訪問(wèn)BIOS Setup的應(yīng)用程序;
所述方法步驟為:
(1)、在UEFI的BIOS源代碼中添加圖形抽象層和輸入抽象層的驅(qū)動(dòng)并實(shí)現(xiàn)相關(guān)的UGA協(xié)議、Simple Pointer 協(xié)議和 Simple TextIn 協(xié)議;
(2)、編譯UEFI的BIOS源代碼產(chǎn)生可執(zhí)行的ROM文件;
(3)、更新步驟(2)中編譯的BIOS源代碼文件到計(jì)算機(jī)系統(tǒng)Firmware中;
(4)、編寫(xiě)UEFI應(yīng)用程序?qū)崿F(xiàn)BIOSSetup界面的顯示和控制;
(5)、啟動(dòng)計(jì)算機(jī)系統(tǒng)配置文件到UEFIShell模式下,運(yùn)行應(yīng)用程序。
[0020]步驟(I)的實(shí)現(xiàn),將圖形抽象層和輸入抽象層的程序按照驅(qū)動(dòng)協(xié)議模型編寫(xiě);包括如下步驟:①、編寫(xiě)UGA協(xié)議、Simple Pointer協(xié)議和Simple TextIn協(xié)議的接口;②、用驅(qū)動(dòng)格式實(shí)現(xiàn)上述接口。
[0021]步驟(I)的①編寫(xiě)協(xié)議部分,需要在BIOS的Protocol文件夾下建立圖形抽象層或輸入抽象層的文件夾,并在該文件夾中編寫(xiě)Protocol的接口函數(shù);
步驟(I)的②驅(qū)動(dòng)格式是在BIOS的Driver文件夾下建立圖形抽象層或輸入抽象層的文件夾,在這個(gè)文件夾下編寫(xiě)Protocol文件中GAL函數(shù)接口的具體實(shí)現(xiàn);需要實(shí)現(xiàn)Supported函數(shù)、Start函數(shù)與Stop函數(shù);
Supported函數(shù)實(shí)現(xiàn)步驟:用UEFI規(guī)范的OpenProtocol函數(shù)打開(kāi)UEFI的UGA協(xié)議并加以測(cè)試,以保證之后的GAL功能函數(shù)可以調(diào)用UGA的服務(wù),之后用UEFI規(guī)范的CloseProtocol函數(shù)關(guān)閉UGA協(xié)議;
Start函數(shù)實(shí)現(xiàn)步驟:在得到Supported函數(shù)的保證下,用OpenProtocol函數(shù)打開(kāi)UEFI的UGA協(xié)議以調(diào)用其提供的服務(wù);隨后構(gòu)造相應(yīng)的數(shù)據(jù)結(jié)構(gòu)并用之前Protocol中的接口函數(shù)指針指向驅(qū)動(dòng)程序中對(duì)應(yīng)的函數(shù);最后用UEFI規(guī)范的InstalIProtocolInterface 函數(shù)將 GAL 協(xié)議安裝到 Controller Handle 上;
Stop函數(shù)實(shí)現(xiàn)步驟:將Start中安裝的協(xié)議用CloseProtocol關(guān)閉,并用EFI規(guī)范的UninstallProtocolInterface函數(shù)卸載,最后釋放所構(gòu)造的數(shù)據(jù)結(jié)構(gòu);
具備了上面3個(gè)函數(shù)的驅(qū)動(dòng)程序就實(shí)現(xiàn)了 UEFI驅(qū)動(dòng)的綁定協(xié)議,為GAL功能函數(shù)的開(kāi)發(fā)提供了一個(gè)符合UEFI驅(qū)動(dòng)模式的框架;
接下來(lái)用圖形學(xué)的算法實(shí)現(xiàn)相應(yīng)的函數(shù)接口; 最后,通過(guò)在UEFI應(yīng)用程序中調(diào)用GAL和IAL的驅(qū)動(dòng)來(lái)實(shí)現(xiàn)對(duì)BIOS Setup界面的顯示和修改;這包括圖形設(shè)備接口的實(shí)現(xiàn)、字符的顯示、窗口的管理和控制操作;窗口的管理和控制通過(guò)消息傳遞的方式來(lái)實(shí)現(xiàn),通過(guò)調(diào)用IAL的驅(qū)動(dòng)產(chǎn)生消息傳遞給窗口控制程序;對(duì)于BIOS SETUP菜單的顯示需要調(diào)用UEFI運(yùn)行時(shí)服務(wù)的接口函數(shù)GetVariable和GetNextVariableName以及QueryVariableInfo ;在對(duì)SETUP菜單的數(shù)值進(jìn)行修改后需要調(diào)用SetVariable接口函數(shù)。具體的實(shí)現(xiàn)可以參考目前UEFI BIOS的實(shí)現(xiàn)方法。
[0022]上述【具體實(shí)施方式】?jī)H是本發(fā)明的具體個(gè)案,本發(fā)明的專利保護(hù)范圍包括但不限于上述【具體實(shí)施方式】,任何符合本發(fā)明的一種修改BIOS SETUP界面的方法的權(quán)利要求書(shū)的且任何所屬【技術(shù)領(lǐng)域】的普通技術(shù)人員對(duì)其所做的適當(dāng)變化或替換,皆應(yīng)落入本發(fā)明的專利保護(hù)范圍。
[0023]除說(shuō)明書(shū)所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。
【權(quán)利要求】
1.一種修改BIOS SETUP界面的方法,其特征在于計(jì)算機(jī)系統(tǒng)在UEFI Shell環(huán)境中,所述方法使用的系統(tǒng)架構(gòu)包括提供圖形接口的圖形抽象層、提供鼠標(biāo)和鍵盤(pán)驅(qū)動(dòng)的輸入抽象層、圖形設(shè)備接口層、圖形用戶接口層、應(yīng)用程序編程接口,圖形抽象層和輸入抽象層位于系統(tǒng)最底層,圖形設(shè)備接口層位于系統(tǒng)的中間層,圖形用戶接口層位于圖形設(shè)備接口層上方,系統(tǒng)的最頂層為應(yīng)用程序編程接口 ; 與圖形抽象層和輸入抽象層相對(duì)應(yīng)的接口部分是UEFI中的UGA協(xié)議、Simple Pointer協(xié)議和Simple TextIn協(xié)議,其中系統(tǒng)的圖形抽象層對(duì)UGA協(xié)議進(jìn)行封裝,并為上層的圖形設(shè)備接口層提供統(tǒng)一的接口,圖形設(shè)備接口層則對(duì)圖形抽象層進(jìn)行封裝,為上層的圖形用戶接口層提供功能使用;輸入抽象層則對(duì)Simple Pointer協(xié)議與SimpleTextIn協(xié)議進(jìn)行封裝,并通過(guò)對(duì)鼠標(biāo)鍵盤(pán)輸入的監(jiān)視生成消息,通過(guò)消息可以進(jìn)行窗口之間的通信,為圖形用戶接口層的(窗口創(chuàng)建與繪制、多窗口之間的剪切等)的功能提供服務(wù);圖形用戶接口層通過(guò)應(yīng)用程序編程接口訪問(wèn)BIOS Setup的應(yīng)用程序; 所述方法步驟為: (1)、在UEFI的BIOS源代碼中添加圖形抽象層和輸入抽象層的驅(qū)動(dòng)并實(shí)現(xiàn)相關(guān)的UGA協(xié)議、Simple Pointer 協(xié)議和 Simple TextIn 協(xié)議; (2)、編譯UEFI的BIOS源代碼產(chǎn)生可執(zhí)行的ROM文件; (3)、更新步驟(2)中編譯的BIOS源代碼文件到計(jì)算機(jī)系統(tǒng)Firmware中; (4)、編寫(xiě)UEFI應(yīng)用程序?qū)崿F(xiàn)BIOSSetup界面的顯示和控制; (5)、啟動(dòng)計(jì)算機(jī)系統(tǒng)配置文件到UEFIShell模式下,運(yùn)行應(yīng)用程序。
2.根據(jù)權(quán)利要求1所述的一種修改BIOSSETUP界面的方法,其特征在于步驟(1)的實(shí)現(xiàn),將圖形抽象層和輸入 抽象層的程序按照驅(qū)動(dòng)協(xié)議模型編寫(xiě);包括如下步驟:①、編寫(xiě)UGA協(xié)議、Simple Pointer協(xié)議和Simple TextIn協(xié)議的接口 、用驅(qū)動(dòng)格式實(shí)現(xiàn)上述接□。
3.根據(jù)權(quán)利要求2所述的一種修改BIOSSETUP界面的方法,其特征在于步驟(1)的①編寫(xiě)協(xié)議部分,需要在BIOS的Protocol文件夾下建立圖形抽象層或輸入抽象層的文件夾,并在該文件夾中編寫(xiě)Protocol的接口函數(shù); 步驟(1)的②驅(qū)動(dòng)格式是在BIOS的Driver文件夾下建立圖形抽象層或輸入抽象層的文件夾,在這個(gè)文件夾下編寫(xiě)Protocol文件中GAL函數(shù)接口的具體實(shí)現(xiàn);需要實(shí)現(xiàn)Supported函數(shù)、Start函數(shù)與Stop函數(shù); Supported函數(shù)實(shí)現(xiàn)步驟:用UEFI規(guī)范的OpenProtocol函數(shù)打開(kāi)UEFI的UGA協(xié)議并加以測(cè)試,以保證之后的GAL功能函數(shù)可以調(diào)用UGA的服務(wù),之后用UEFI規(guī)范的CloseProtocol函數(shù)關(guān)閉UGA協(xié)議; Start函數(shù)實(shí)現(xiàn)步驟:在得到Supported函數(shù)的保證下,用OpenProtocol函數(shù)打開(kāi)UEFI的UGA協(xié)議以調(diào)用其提供的服務(wù);隨后構(gòu)造相應(yīng)的數(shù)據(jù)結(jié)構(gòu)并用之前Protocol中的接口函數(shù)指針指向驅(qū)動(dòng)程序中對(duì)應(yīng)的函數(shù);最后用UEFI規(guī)范的InstalIProtocolInterface 函數(shù)將 GAL 協(xié)議安裝到 Controller Handle 上; Stop函數(shù)實(shí)現(xiàn)步驟:將Start中安裝的協(xié)議用CloseProtocol關(guān)閉,并用EFI規(guī)范的UninstallProtocolInterface函數(shù)卸載,最后釋放所構(gòu)造的數(shù)據(jù)結(jié)構(gòu); 具備了上面3個(gè)函數(shù)的驅(qū)動(dòng)程序就實(shí)現(xiàn)了 UEFI驅(qū)動(dòng)的綁定協(xié)議,為GAL功能函數(shù)的開(kāi)發(fā)提供了一個(gè)符合UEFI驅(qū)動(dòng)模式的框架; 接下來(lái)用圖形學(xué)的算法實(shí)現(xiàn)相應(yīng)的函數(shù)接口; 最后,通過(guò)在UEFI應(yīng)用程序中調(diào)用GAL和IAL的驅(qū)動(dòng)來(lái)實(shí)現(xiàn)對(duì)BIOS Setup界面的顯示和修改;這包括圖形設(shè)備接口的實(shí)現(xiàn)、字符的顯示、窗口的管理和控制操作;窗口的管理和控制通過(guò)消息傳遞的方式來(lái)實(shí)現(xiàn),通過(guò)調(diào)用IAL的驅(qū)動(dòng)產(chǎn)生消息傳遞給窗口控制程序;對(duì)于BIOS Setup菜單的顯示需要調(diào)用UEFI運(yùn)行時(shí)服務(wù)的接口函數(shù)GetVariable和GetNextVariableName以及QueryVariableInfo ;在對(duì)Setup菜單的數(shù)值進(jìn)行修改后需要調(diào)用 SetVariable 接口 函數(shù) 。
【文檔編號(hào)】G06F9/45GK103809983SQ201410068650
【公開(kāi)日】2014年5月21日 申請(qǐng)日期:2014年2月27日 優(yōu)先權(quán)日:2014年2月27日
【發(fā)明者】鄢建龍 申請(qǐng)人:山東超越數(shù)控電子有限公司