專利名稱:一種利用智能設(shè)備的固件實(shí)現(xiàn)部件檢測(cè)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及智能設(shè)備的故障檢測(cè)或監(jiān)控技術(shù),尤其涉及一種利用智能設(shè)備的固件實(shí)現(xiàn)部件檢測(cè)的方法。
背景技術(shù):
當(dāng)前,智能設(shè)備諸如個(gè)人電子計(jì)算機(jī)、掌上電腦、智能計(jì)算設(shè)備的應(yīng)用越來越廣泛,其中以個(gè)人電子計(jì)算機(jī)的應(yīng)用尤為突出。但是,這些智能設(shè)備中的部件都有失效的概率,因此給智能設(shè)備的生產(chǎn)、使用和維護(hù)帶來極大的負(fù)面影響。
為了檢測(cè)智能設(shè)備中的部件是否正常工作,現(xiàn)有的技術(shù)方案主要有兩種現(xiàn)有技術(shù)一、智能設(shè)備的上電自檢(POST)方案。
當(dāng)前的智能設(shè)備通過POST的過程對(duì)自身系統(tǒng)進(jìn)行初始化,初始化的過程中包括對(duì)部件的簡(jiǎn)單檢測(cè),POST通過后再啟動(dòng)操作系統(tǒng),進(jìn)入正常的工作模式。實(shí)現(xiàn)POST過程的模塊裝載智能設(shè)備的固件(FIRMWARE)中,該固件也稱為“韌體”,是一種固化在智能設(shè)備中的程序,用于控制智能設(shè)備的硬件系統(tǒng),是智能設(shè)備軟、硬件之間的接口。該固件一般存儲(chǔ)在非易失性存儲(chǔ)器中,如只讀存儲(chǔ)器(ROM)中,即使在智能設(shè)備沒有外部電源供應(yīng)的情況下其數(shù)據(jù)也不會(huì)丟失。在微型電子計(jì)算機(jī)中,所述固件為基本輸入/輸出系統(tǒng)(BIOS,BasicInput/Output System)。
由于各種智能設(shè)備的現(xiàn)有POST過程基本都類似,所以此處以計(jì)算機(jī)BIOS為例對(duì)現(xiàn)有的POST方案進(jìn)行簡(jiǎn)單說明。圖1為現(xiàn)有技術(shù)中計(jì)算機(jī)BIOS的POST流程圖;如圖1所示,對(duì)計(jì)算機(jī)中的每一個(gè)設(shè)備都給出一個(gè)檢測(cè)代碼,稱為開機(jī)自我檢測(cè)代碼(POST CODE),在對(duì)計(jì)算機(jī)的某個(gè)部件進(jìn)行檢測(cè)時(shí),首先將其對(duì)應(yīng)的POST CODE寫入80H地址的診斷端口,當(dāng)該部件正常,則檢測(cè)通過,輸出正常信息,接著送另一個(gè)部件的POST CODE,對(duì)此部件進(jìn)行測(cè)試。如果對(duì)某個(gè)部件的測(cè)試沒有通過,則此POST CODE會(huì)在所述80H地址處保留下來,檢測(cè)過程也會(huì)中止,并根據(jù)預(yù)定的、與POSTCODE對(duì)應(yīng)的警報(bào)聲進(jìn)行報(bào)警,工程師可根據(jù)報(bào)警聲分辨出哪個(gè)部件故障。
在此基礎(chǔ)上,現(xiàn)有技術(shù)中還出現(xiàn)了一種計(jì)算機(jī)診斷卡,該診斷卡利用其自身的硬件電路讀取BIOS中80H地址內(nèi)的POST CODE,并經(jīng)譯碼器譯碼,最后由數(shù)碼LED指示燈將POST CODE對(duì)應(yīng)顯示出來,其原理與上述POST方案是一致的。這樣就可以通過診斷卡上顯示的16進(jìn)制代碼判斷計(jì)算機(jī)的工作狀態(tài),而不用僅依靠計(jì)算機(jī)主板上單調(diào)的報(bào)警聲來粗略判斷部件故障。
但是,上述現(xiàn)有技術(shù)一存在以下缺點(diǎn)1、由于現(xiàn)有POST過程中的自檢功能較簡(jiǎn)單,只能檢測(cè)出設(shè)備中的某一部件是否故障,但是不能更深一步地檢測(cè)該故障的類型和范圍,因此在檢測(cè)的深度、廣度上都不夠,輸出的故障信息不完備,不足以使工程師判斷出現(xiàn)詳細(xì)的故障類型。
2、所述的診斷卡只是根據(jù)POST過程的內(nèi)容在不同輸出設(shè)備上的輸出體現(xiàn),即在診斷卡上以數(shù)碼LED指示燈輸出檢測(cè)內(nèi)容,而不是通過主板報(bào)警輸出檢測(cè)內(nèi)容,因此仍然受POST自檢診斷能力的限制,在檢測(cè)的深度和廣度上不夠;而且在檢測(cè)時(shí)必須打開計(jì)算機(jī)的機(jī)箱才能插入診斷卡,操作上不方便。
3、POST過程所輸出的提示信息不僅包括正常信息、故障信息,而且還有更多出于其它目的的信息,例如工程師臨時(shí)加入的路標(biāo)信息等等,這些信息混合在一起輸出,非常雜亂,無法方便地判斷出故障信息。
現(xiàn)有技術(shù)二、在智能設(shè)備的操作系統(tǒng)中運(yùn)行專用的檢測(cè)程序來檢測(cè)智能設(shè)備的部件。但這種技術(shù)的缺點(diǎn)為需要智能設(shè)備首先進(jìn)入操作系統(tǒng),然而大部分情況下,當(dāng)智能設(shè)備的某些部件不正常時(shí),智能設(shè)備無法進(jìn)入操作系統(tǒng),因此多數(shù)的部件故障情況下,這種方案根本無法應(yīng)用實(shí)施。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的是提供一種利用智能設(shè)備的固件實(shí)現(xiàn)部件檢測(cè)的方法,實(shí)現(xiàn)在智能設(shè)備的POST過程中,即可對(duì)部件進(jìn)行較POST自檢更深、更廣的故障檢測(cè)。
為了實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案主要包括一種利用智能設(shè)備的固件實(shí)現(xiàn)部件檢測(cè)的方法,該方法包括在智能設(shè)備中預(yù)先設(shè)置測(cè)試程序模塊,在固件上電自檢POST過程中的指定位置設(shè)置所述測(cè)試程序模塊對(duì)應(yīng)的調(diào)用接口,該方法進(jìn)一步包括智能設(shè)備開機(jī)啟動(dòng)后運(yùn)行POST過程,當(dāng)運(yùn)行到所述調(diào)用接口的位置時(shí),暫時(shí)中斷POST過程,啟動(dòng)該調(diào)用接口,利用該調(diào)用接口調(diào)用對(duì)應(yīng)的測(cè)試程序模塊對(duì)所述設(shè)備的部件進(jìn)行測(cè)試,輸出測(cè)試結(jié)果;該測(cè)試程序模塊進(jìn)行的測(cè)試結(jié)束后,再繼續(xù)運(yùn)行所中斷的POST過程。
優(yōu)選地,所述測(cè)試程序模塊內(nèi)嵌設(shè)置在所述固件中,或者設(shè)置在所述固件外的存儲(chǔ)設(shè)備中。
優(yōu)選地,所述的在POST過程中的指定位置設(shè)置所述測(cè)試程序模塊對(duì)應(yīng)的調(diào)用接口,是在所述測(cè)試程序模塊進(jìn)行測(cè)試所必需的POST階段之后的指定位置設(shè)置該測(cè)試程序模塊的調(diào)用接口。
優(yōu)選地,在測(cè)試程序模塊進(jìn)行測(cè)試的過程中,所述調(diào)用接口保持所述固件與測(cè)試程序模塊的通信,根據(jù)測(cè)試需要從固件中獲取測(cè)試所需要的原始參數(shù)并傳送給測(cè)試程序模塊,或者將測(cè)試程序模塊的測(cè)試結(jié)果傳送給固件,并由固件輸出。
優(yōu)選地,所述調(diào)用接口中設(shè)置有用于調(diào)用對(duì)應(yīng)測(cè)試程序模塊的觸發(fā)條件;該方法進(jìn)一步包括當(dāng)啟動(dòng)所述調(diào)用接口后,該調(diào)用接口首先判定自身設(shè)置的觸發(fā)條件是否有效,如果有效,則再調(diào)用該調(diào)用接口對(duì)應(yīng)的測(cè)試程序模塊進(jìn)行測(cè)試;如果觸發(fā)條件無效,則繼續(xù)運(yùn)行所中斷的POST過程。
在所述調(diào)用接口中設(shè)置觸發(fā)條件的具體方法為在調(diào)用接口中設(shè)置通用接口GPI,用該GPI的兩種不同電平狀態(tài)分別表示觸發(fā)條件有效和觸發(fā)條件無效,通過外部開關(guān)設(shè)置該GPI的兩種不同電平狀態(tài)。
另外,在所述調(diào)用接口中設(shè)置觸發(fā)條件的具體方法還可以為在調(diào)用接口中設(shè)置與指定輸入按鍵對(duì)應(yīng)的診斷標(biāo)識(shí),該診斷標(biāo)識(shí)與測(cè)試程序模塊的觸發(fā)條件對(duì)應(yīng);利用該診斷標(biāo)識(shí)的兩種不同狀態(tài)分別表示觸發(fā)條件有效或觸發(fā)條件無效,并通過判斷指定輸入按鍵是否被激活來改變?cè)撛\斷標(biāo)識(shí)的狀態(tài)。
優(yōu)選地,所述的調(diào)用接口調(diào)用對(duì)應(yīng)的測(cè)試程序模塊是通過鉤HOOK方式調(diào)用測(cè)試程序模塊的。
優(yōu)選地,在所述POST過程中,如果在所述智能設(shè)備的標(biāo)準(zhǔn)輸出設(shè)備模塊沒有成功初始化之前調(diào)用了測(cè)試程序模塊,則以智能設(shè)備的蜂鳴器或喇叭發(fā)聲輸出檢測(cè)結(jié)果;如果在所述標(biāo)準(zhǔn)輸出設(shè)備模塊成功初始化之后調(diào)用了測(cè)試程序模塊,以標(biāo)準(zhǔn)輸出設(shè)備的標(biāo)準(zhǔn)輸出方式輸出檢測(cè)結(jié)果。
所述的智能設(shè)備為計(jì)算機(jī),所述的固件為計(jì)算機(jī)的輸入輸出系統(tǒng)。
由于本發(fā)明所述的方法在BIOS執(zhí)行POST的過程中就調(diào)用測(cè)試程序?qū)χ悄茉O(shè)備的部件進(jìn)行檢測(cè),不依附于操作系統(tǒng),因此在操作系統(tǒng)沒有啟動(dòng)前,對(duì)部件進(jìn)行故障檢測(cè)。同時(shí),利用本發(fā)明開發(fā)的測(cè)試程序與計(jì)算機(jī)本身緊密結(jié)合,即使計(jì)算機(jī)有部分部件損壞,此測(cè)試程序仍然可以使用。這比之在操作系統(tǒng)下執(zhí)行的測(cè)試軟件有明顯的優(yōu)勢(shì)因?yàn)楹芏鄷r(shí)候,計(jì)算機(jī)由于部件故障而根本無法運(yùn)行進(jìn)入操作系統(tǒng)的環(huán)境,所以這種情況下在操作系統(tǒng)中執(zhí)行測(cè)試程序的方法無法實(shí)施。
由于本發(fā)明的測(cè)試程序獨(dú)立與BIOS中的POST程序之外,用戶可以根據(jù)實(shí)際的需要靈活開發(fā)具有更深、更廣測(cè)試功能的測(cè)試程序,輸出更加完善的故障信息,使工程師判斷出現(xiàn)詳細(xì)的故障類型,因此可以彌補(bǔ)現(xiàn)有POST過程檢測(cè)功能過于簡(jiǎn)單、膚淺的弊端。
由于本發(fā)明的測(cè)試結(jié)果采用標(biāo)準(zhǔn)化的聲音或屏幕顯示的方式輸出,使工程師很容易辨別出故障信息,方便用戶使用。
使用本發(fā)明提供的方法開發(fā)的測(cè)試程序,操作簡(jiǎn)單,不易丟失,不依賴其它外部的軟、硬件環(huán)境、獲得的測(cè)試結(jié)果表達(dá)簡(jiǎn)單而且無信息傳遞畸變之憂。
本發(fā)明可采用簡(jiǎn)單的用戶界面和標(biāo)準(zhǔn)化的測(cè)試結(jié)果報(bào)告,普通用戶即可操作并給出專業(yè)性的報(bào)告,可以使得專業(yè)人員不必在場(chǎng),通過通訊工具就可以準(zhǔn)確判斷故障所在或大致范圍,從而指導(dǎo)用戶排除故障,或得到有效的信息,使得在臨場(chǎng)維修之前有所準(zhǔn)備,比如準(zhǔn)備需要更換的部件。
本發(fā)明可以靈活設(shè)置測(cè)試程序觸發(fā)條件的狀態(tài),對(duì)于某些情況下不需要執(zhí)行的測(cè)試程序不進(jìn)行調(diào)用,可提高設(shè)備的工作效率。
圖1為本發(fā)明所述方法的流程圖;圖2為本發(fā)明實(shí)施例所述電子計(jì)算機(jī)BIOS程序模塊與測(cè)試程序模塊的關(guān)系示意圖;圖3A為本發(fā)明實(shí)施例所述調(diào)用接口在POST流程中的位置示意圖;圖3B為本發(fā)明實(shí)施例所述的在POST過程中調(diào)用測(cè)試程序的具體流程圖;圖4為本發(fā)明實(shí)施例所述的在POST過程中調(diào)用多個(gè)測(cè)試程序的具體流程圖;圖5為測(cè)試程序內(nèi)部工作的流程圖;圖6為所述的第一應(yīng)用實(shí)例的流程圖;圖7為所述的第二應(yīng)用實(shí)例的GPI輸入控制圖。
具體實(shí)施例方式
下面參照附圖和具體實(shí)施例對(duì)本發(fā)明作詳細(xì)說明。
圖1為本發(fā)明所述方法的流程圖。參見圖1,本發(fā)明的方法主要包括步驟101、在智能設(shè)備中預(yù)先設(shè)置測(cè)試程序模塊,在固件上電自檢POST過程中的指定位置設(shè)置所述測(cè)試程序模塊對(duì)應(yīng)的調(diào)用接口。所述測(cè)試程序模塊可內(nèi)嵌在所述固件中,或者設(shè)置在所述固件外的存儲(chǔ)設(shè)備中。
步驟102、智能設(shè)備開機(jī)啟動(dòng)后運(yùn)行POST過程,當(dāng)運(yùn)行到所述調(diào)用接口的位置時(shí),暫時(shí)中斷POST過程,啟動(dòng)該調(diào)用接口,利用該調(diào)用接口調(diào)用對(duì)應(yīng)的測(cè)試程序模塊對(duì)所述設(shè)備的部件進(jìn)行測(cè)試,輸出測(cè)試結(jié)果。
在具體的調(diào)用方式上,可采用在POST程序中加入鉤(HOOK)函數(shù),將測(cè)試程序模塊的位置信息設(shè)置在該HOOK函數(shù)中,利用該HOOK函數(shù)到對(duì)應(yīng)的位置調(diào)用測(cè)試程序模塊。
步驟103、該測(cè)試程序模塊進(jìn)行的測(cè)試結(jié)束后,再繼續(xù)運(yùn)行所中斷的POST過程。
以下實(shí)施例以在電子計(jì)算機(jī)的BIOS中實(shí)現(xiàn)故障檢測(cè)為例對(duì)本發(fā)明進(jìn)行說明。
預(yù)先在電子計(jì)算機(jī)中設(shè)置用于測(cè)試計(jì)算機(jī)部件的測(cè)試程序模塊,該測(cè)試程序模塊的具體內(nèi)容依賴于用戶對(duì)測(cè)試功能點(diǎn)的需求,用戶可針對(duì)不同的對(duì)象和場(chǎng)合需求利用現(xiàn)有的程序語言自由設(shè)計(jì)。
圖2為本實(shí)施例所述電子計(jì)算機(jī)BIOS程序模塊與測(cè)試程序模塊的關(guān)系示意圖。如圖2所示,本實(shí)施例在BIOS中預(yù)先加入一個(gè)調(diào)用接口模塊22,并在該接口模塊22中設(shè)置測(cè)試程序模塊的觸發(fā)條件,該調(diào)用接口模塊22用于在原BIOS程序模塊21執(zhí)行POST過程中的指定位置被啟動(dòng)運(yùn)行,根據(jù)所述的觸發(fā)條件是否有效來決定是否調(diào)用測(cè)試程序模塊23,并且在測(cè)試程序模塊23被調(diào)用運(yùn)行時(shí),調(diào)用接口模塊22在BIOS程序模塊21和測(cè)試程序模塊23之間傳遞信息,根據(jù)測(cè)試需要從BIOS程序模塊21中獲取測(cè)試所需要的原始參數(shù)并傳送給測(cè)試程序模塊23,或者將測(cè)試程序模塊23的測(cè)試結(jié)果傳送給BIOS程序模塊21,并由BIOS程序模塊21輸出。當(dāng)然,對(duì)于測(cè)試結(jié)果也可以由測(cè)試程序模塊23直接輸出。
下面以在計(jì)算機(jī)中設(shè)置一個(gè)測(cè)試程序模塊為例說明所述調(diào)用接口在POST過程中的位置。圖3A為本實(shí)施例所述調(diào)用接口在POST流程中的位置示意圖。參見圖3A,POST過程本身可以分為多個(gè)階段,每個(gè)階段完成一定的初始化或自檢功能,當(dāng)所有的階段都完成后,啟動(dòng)操作系統(tǒng),由操作系統(tǒng)控制計(jì)算機(jī)系統(tǒng)。在調(diào)用測(cè)試程序模塊之前,需完成運(yùn)行該測(cè)試程序模塊所必需的POST階段,例如測(cè)試程序模塊為對(duì)硬盤功能進(jìn)行測(cè)試的程序,其執(zhí)行必須在POST完成檢測(cè)和初始化硬盤控制器之后,此時(shí)系統(tǒng)具有了訪問硬盤的功能后才可以執(zhí)行對(duì)硬盤的測(cè)試過程;再例如測(cè)試內(nèi)存(RAM)的程序一定要在存儲(chǔ)器控制器(Memory Controller)檢測(cè)和初始化完成后進(jìn)行(內(nèi)存控制器的初始化中包括偵測(cè)是否有內(nèi)存存在及其大小),否則,CPU根本不可能對(duì)內(nèi)存訪問,也就談不上測(cè)試了。
因此該測(cè)試程序模塊對(duì)應(yīng)的調(diào)用接口需設(shè)置在運(yùn)行該測(cè)試程序模塊所必需的POST階段之后,在測(cè)試結(jié)束后再執(zhí)行后續(xù)的POST階段。如果所述測(cè)試程序模塊沒有必需的POST階段,則其對(duì)應(yīng)的調(diào)用接口可以設(shè)置在POST過程中的任意位置。
圖3B為本實(shí)施例所述在POST過程中調(diào)用測(cè)試程序的具體流程圖。如圖3B所示,該流程包括步驟301、計(jì)算機(jī)上電開機(jī)后,運(yùn)行測(cè)試程序模塊所必需的POST階段。
步驟302、在指定位置啟動(dòng)調(diào)用接口,判斷其中的測(cè)試程序模塊的觸發(fā)條件是否有效,如果有效,則執(zhí)行步驟303;否則,執(zhí)行步驟304。
步驟303、調(diào)用對(duì)應(yīng)的測(cè)試程序模塊進(jìn)行測(cè)試,測(cè)試結(jié)束后執(zhí)行步驟304。
步驟304、執(zhí)行后續(xù)的POST階段,在POST所有階段完成后啟動(dòng)操作系統(tǒng)。
所述測(cè)試程序模塊可以有多個(gè),在調(diào)用接口模塊中對(duì)于每一個(gè)測(cè)試程序模塊都有對(duì)應(yīng)的調(diào)用接口,該調(diào)用接口可根據(jù)測(cè)試程序的需要設(shè)置在BIOS的POST過程中的指定位置。
如果在計(jì)算機(jī)中設(shè)置了多個(gè)測(cè)試程序模塊,假設(shè)數(shù)目為n,n為大于1的整數(shù)。每個(gè)測(cè)試程序模塊分別都有其對(duì)應(yīng)的調(diào)用接口和對(duì)應(yīng)的觸發(fā)條件。根據(jù)運(yùn)行測(cè)試程序所必需的POST階段,將該測(cè)試程序模塊對(duì)應(yīng)的調(diào)用接口設(shè)置在POST過程中的指定位置,該指定位置在運(yùn)行測(cè)試程序所必需的POST階段之后。
圖4本實(shí)施例所述的在POST過程中調(diào)用多個(gè)測(cè)試程序的具體流程圖。參見圖4,在執(zhí)行POST的過程中依次啟動(dòng)調(diào)用接口,判斷其中觸發(fā)條件的狀態(tài),即在POST階段1完成之后啟動(dòng)調(diào)用接口1,判斷測(cè)試程序1的觸發(fā)條件,如果有效,則調(diào)用測(cè)試程序1進(jìn)行測(cè)試,并在測(cè)試完畢后運(yùn)行POST階段2,否則直接運(yùn)行POST階段2;在POST階段2之后啟動(dòng)調(diào)用接口2,判斷測(cè)試程序2的觸發(fā)條件,有效則調(diào)用測(cè)試程序2,測(cè)試結(jié)束后運(yùn)行POST階段3,無效則直接運(yùn)行POST階段3;依此類推,在整個(gè)POST過程結(jié)束后,啟動(dòng)操作系統(tǒng)。
圖5為測(cè)試程序內(nèi)部工作的流程圖。參見圖5,在測(cè)試程序內(nèi)部,包括步驟501、首先執(zhí)行測(cè)試程序的主流程對(duì)計(jì)算機(jī)的部件進(jìn)行測(cè)試。
步驟502、判斷測(cè)試結(jié)果是否出現(xiàn)錯(cuò)誤,如果是,則執(zhí)行步驟503,否則,結(jié)束流程。
步驟503、以標(biāo)準(zhǔn)化的格式報(bào)警錯(cuò)誤,并輸出標(biāo)準(zhǔn)化的錯(cuò)誤代碼。步驟503中,可以由測(cè)試程序模塊自身通知計(jì)算機(jī)的輸出設(shè)備,例如喇叭和蜂鳴器,進(jìn)行報(bào)警并通知顯示設(shè)備,例如顯示器,輸出標(biāo)準(zhǔn)化的錯(cuò)誤代碼;也可以將報(bào)警信息和標(biāo)準(zhǔn)化的錯(cuò)誤代碼通過調(diào)用接口模塊返回給BIOS程序模塊,由BIOS程序模塊通知計(jì)算機(jī)的對(duì)應(yīng)輸出設(shè)備進(jìn)行報(bào)警和輸出錯(cuò)誤代碼。如果沒有測(cè)試出錯(cuò)誤,也可將正確的測(cè)試結(jié)果通過計(jì)算機(jī)輸出設(shè)備輸出。
所述測(cè)試結(jié)果以聲音或屏幕顯示的形式輸出。在計(jì)算機(jī)POST過程的前期,其標(biāo)準(zhǔn)輸出設(shè)備模塊(一般是顯示卡和顯示器)因沒有初始化而不能工作的時(shí)段里,以蜂鳴器或喇叭發(fā)聲的方式報(bào)告測(cè)試結(jié)果。當(dāng)計(jì)算機(jī)標(biāo)準(zhǔn)輸出設(shè)備初始化完畢進(jìn)入正常工作狀態(tài)的計(jì)算機(jī)POST后期時(shí)段內(nèi),則選擇標(biāo)準(zhǔn)輸出設(shè)備以字符顯示的方式輸出測(cè)試結(jié)果。
本發(fā)明的測(cè)試結(jié)果都以標(biāo)準(zhǔn)化的形式輸出。除了自然語言方式的報(bào)告外,同時(shí)必須報(bào)告測(cè)試結(jié)果代碼,此代碼唯一地表示一種測(cè)試結(jié)果,避免了信息傳遞中的畸變。標(biāo)準(zhǔn)化形式包括聲音信號(hào)的標(biāo)準(zhǔn)化和字符輸出的標(biāo)準(zhǔn)化。
以下為本發(fā)明所述方法的兩個(gè)具體的應(yīng)用實(shí)例第一應(yīng)用實(shí)例由于很多時(shí)候計(jì)算機(jī)用戶會(huì)遇到計(jì)算機(jī)“開機(jī)無顯”的故障,即按下計(jì)算機(jī)機(jī)箱上的電源按鈕,正常情況下,計(jì)算機(jī)應(yīng)該執(zhí)行BIOS的POST過程,在顯示屏幕上顯示廠商LOGO或者自檢信息,但有時(shí)會(huì)出現(xiàn)開機(jī)后,顯示器沒有顯示的故障。通常情況下,除了上述信息,計(jì)算機(jī)使用者提供不來更多的有價(jià)值的信息了。
利用本發(fā)明的方法,可以在BIOS中加入一個(gè)測(cè)試程序模塊,此測(cè)試程序模塊的功能只是使主板上的蜂嗚器或喇叭發(fā)出一個(gè)短促的高頻短聲。由于該測(cè)試程序沒有必需的POST準(zhǔn)備階段,因此該測(cè)試程序模塊的調(diào)用接口設(shè)置在計(jì)算機(jī)上電CPU開始執(zhí)行指令處,且將該測(cè)試程序的觸發(fā)條件的狀態(tài)默認(rèn)設(shè)置為有效。
圖6為該應(yīng)用實(shí)例的流程圖。參見圖6,包括步驟601、計(jì)算機(jī)開機(jī)上電后,CPU開始執(zhí)行指令時(shí)馬上調(diào)用這個(gè)測(cè)試程序以驅(qū)動(dòng)蜂鳴器發(fā)聲;步驟602、調(diào)用測(cè)試程序結(jié)束后執(zhí)行BIOS的POST過程;步驟603、POST過程結(jié)束后啟動(dòng)操作系統(tǒng)。
對(duì)于計(jì)算機(jī)使用者來說,如果開機(jī)后馬上聽到這個(gè)提示音,則表示CPU已經(jīng)開始工作,計(jì)算機(jī)主機(jī)中的電源和主板上主要的芯片如CPU、北橋芯片、南橋芯片,甚至SUPER IO芯片都是基本正常的。此時(shí),已經(jīng)排除了計(jì)算機(jī)中電源、主板、CPU這幾個(gè)部件存在故障的可能??梢赃M(jìn)一步檢查如顯示卡和顯示器等其它部件。
如果開機(jī)沒有聽到這個(gè)提示音,則表示CPU沒有工作,此時(shí)故障的可能性有電源故障、保存BIOS程序和數(shù)據(jù)的FLASH ROM芯片故障、南橋芯片損壞、北橋芯片損壞、蜂嗚器或喇叭本身出現(xiàn)故障、CPU損壞。以上的故障看起來很多,但實(shí)際涉及的計(jì)算機(jī)部件只有三件電源、主板和CPU。根據(jù)實(shí)際統(tǒng)計(jì)的結(jié)果看,實(shí)際上后五種故障出現(xiàn)的概率非常小,尤其后四種故障出現(xiàn)的概率更小,因此大多數(shù)問題都集中在“電源故障”。
這樣,計(jì)算機(jī)維護(hù)人員只要請(qǐng)用戶執(zhí)行打開計(jì)算機(jī)的操作,就可以由“是否有短促的蜂鳴聲”在所有部件中排除幾大可能的故障部件,縮小存在故障的范圍。
第二應(yīng)用實(shí)例本實(shí)例中在BIOS中嵌入內(nèi)存測(cè)試程序模塊、CMOS測(cè)試程序模塊、以及硬盤測(cè)試程序模塊。本實(shí)例的流程可以參見圖4,假設(shè)圖4中的n為3,其中內(nèi)存測(cè)試程序模塊、CMOS測(cè)試程序模塊、以及硬盤測(cè)試程序模塊分別對(duì)應(yīng)圖4中的第一、第二、和第三個(gè)測(cè)試程序模塊。計(jì)算機(jī)上電開機(jī),執(zhí)行POST階段1后,暫停POST過程,啟動(dòng)內(nèi)存測(cè)試程序模塊對(duì)應(yīng)的調(diào)用接口1,判斷其中的觸發(fā)條件1的狀態(tài)值,如果該觸發(fā)條件1有效,則調(diào)用執(zhí)行內(nèi)存測(cè)試程序,并將測(cè)試結(jié)果信息通過計(jì)算機(jī)的輸出設(shè)備以標(biāo)準(zhǔn)化的形式輸出,輸出設(shè)備可以為蜂嗚器、喇叭、顯示器等;例如蜂嗚器的測(cè)試結(jié)果如表1所示 表1表1中,第一條的蜂嗚聲不重復(fù);第二條蜂嗚聲重復(fù)發(fā)出,且間隔時(shí)間為4s;第三條蜂嗚聲也重復(fù)發(fā)出,且間隔時(shí)間為4s。所述蜂嗚聲為通過計(jì)算機(jī)系統(tǒng)的揚(yáng)聲器發(fā)出。
在執(zhí)行完內(nèi)存測(cè)試程序之后,返回POST流程,在執(zhí)行完P(guān)OST階段2后,啟動(dòng)CMOS測(cè)試程序模塊對(duì)應(yīng)的調(diào)用接口2,讀取其中的觸發(fā)條件2的狀態(tài),如果觸發(fā)條件2的狀態(tài)為有效值,則調(diào)用并執(zhí)行COMS測(cè)試程序,CMOS測(cè)試程序?qū)y(cè)試結(jié)果通過計(jì)算機(jī)的輸出設(shè)備以標(biāo)準(zhǔn)化的形式輸出,例如可以通過顯示器輸出,其輸出信息包括標(biāo)準(zhǔn)化的編碼和提示信息,例如其輸出信息參見表2
表2在CMOS檢測(cè)程序執(zhí)行后,返回到POST流程,在執(zhí)行完P(guān)OST階段3后,啟動(dòng)硬盤測(cè)試程序?qū)?yīng)的調(diào)用接口3,判斷其中的觸發(fā)條件3的狀態(tài),如果觸發(fā)條件3有效,則調(diào)用執(zhí)行該硬盤測(cè)試程序3,該硬盤檢測(cè)程序用于對(duì)計(jì)算機(jī)的硬盤進(jìn)行檢測(cè),并將測(cè)試結(jié)果通過計(jì)算機(jī)的輸出設(shè)備以標(biāo)準(zhǔn)化的形式輸出,例如也可以通過顯示器輸出,其輸出信息包括標(biāo)準(zhǔn)化的編碼和提示信息,例如其輸出信息參見表3
表3當(dāng)執(zhí)行完硬盤測(cè)試程序3后,又返回到POST主流程,在執(zhí)行完所有的POST流程后,BIOS啟動(dòng)操作系統(tǒng),將計(jì)算機(jī)的控制權(quán)交給操作系統(tǒng)。
以下對(duì)所述觸發(fā)條件的設(shè)置方式進(jìn)行說明本發(fā)明所述方法可以預(yù)先將所述所有調(diào)用接口中的觸發(fā)條件狀態(tài)默認(rèn)設(shè)置為有效狀態(tài),在POST過程中自動(dòng)全部調(diào)用執(zhí)行所述所有的測(cè)試程序;由于計(jì)算機(jī)中一些部件出現(xiàn)故障并不影響整個(gè)系統(tǒng)的運(yùn)作,所以用戶也可以自主設(shè)定,不執(zhí)行部分或全部測(cè)試項(xiàng)目,即將所述觸發(fā)條件預(yù)先設(shè)為無效狀態(tài),通過計(jì)算機(jī)輸入設(shè)備的輸入信號(hào)改變其狀態(tài),使用戶可以通過輸入設(shè)備控制BIOS是否執(zhí)行某個(gè)測(cè)試程序。
這樣,通過在智能設(shè)備中嵌入的測(cè)試程序模塊,計(jì)算機(jī)的操作者可以根據(jù)需要對(duì)計(jì)算機(jī)的所有部件或者有選擇地對(duì)部分部件進(jìn)行所有可能實(shí)現(xiàn)的測(cè)試。當(dāng)計(jì)算機(jī)出現(xiàn)故障時(shí),可以準(zhǔn)確方便地發(fā)現(xiàn)問題所在,從而為順利排除故障打下良好的基礎(chǔ)。
當(dāng)計(jì)算機(jī)正常運(yùn)作時(shí),這部分程序中的大部分可以都不被調(diào)用,只有在需要的時(shí)候,由計(jì)算機(jī)使用者主動(dòng)操作使計(jì)算機(jī)進(jìn)入診斷模式,調(diào)用測(cè)試程序?qū)崿F(xiàn)故障診斷。實(shí)現(xiàn)此模式切換的方式有很多種方式,比如通過鍵盤控制、通過通用接口(GPI)控制,等等。
例如,當(dāng)計(jì)算機(jī)開機(jī)后,在POST過程中按下鍵盤的熱鍵,則系統(tǒng)切入診斷模式,與該熱鍵對(duì)應(yīng)的觸發(fā)條件變?yōu)橛行В瑘?zhí)行對(duì)應(yīng)的測(cè)試程序,除原先的BIOS在POST過程中的輸出外,輸出測(cè)試程序的測(cè)試結(jié)果報(bào)告。
再例如,設(shè)置安裝在機(jī)箱上的開關(guān),該開關(guān)通過GPI對(duì)應(yīng)控制某個(gè)觸發(fā)條件的狀態(tài),因此可選擇全部或部分測(cè)試項(xiàng)目,然后開機(jī),計(jì)算機(jī)在POST過程中運(yùn)行觸發(fā)條件有效的測(cè)試程序,同時(shí)輸出測(cè)試結(jié)果。
對(duì)于鍵盤控制方式,需要在POST中對(duì)于鍵盤的初始化過程結(jié)束后才能使用,其具體的實(shí)施過程可以為在BIOS中程序中設(shè)立一個(gè)診斷模式標(biāo)志(FLAG),該FLAG與一個(gè)鍵盤熱鍵對(duì)應(yīng)、以及與所有的測(cè)試程序的觸發(fā)條件對(duì)應(yīng),如果該FLAG為“真”,則對(duì)應(yīng)的觸發(fā)條件有效。在默認(rèn)情況下,F(xiàn)LAG為“非真”狀態(tài),如果在計(jì)算機(jī)POST過程中按下所述鍵盤熱鍵,則BIOS程序則將這個(gè)FLAG標(biāo)志設(shè)為“真”,此時(shí)啟動(dòng)診斷模式,在后續(xù)的POST流程中,調(diào)用執(zhí)行相應(yīng)的測(cè)試程序模塊進(jìn)行測(cè)試。
對(duì)于GPI控制方式,其具體的實(shí)施過程可以為在硬件上,可以采用微動(dòng)開關(guān)設(shè)置在計(jì)算機(jī)的機(jī)箱上,每個(gè)微動(dòng)開關(guān)對(duì)應(yīng)一個(gè)GPI的輸入。GPI是當(dāng)代計(jì)算機(jī)中普遍使用的一種由計(jì)算機(jī)硬件工程師自由選用的輸入管腳,可以由計(jì)算機(jī)軟件查詢芯片組中對(duì)應(yīng)的寄存器獲取GPI外部輸入電平的狀態(tài)。此處采用Intel公司的產(chǎn)品ICH4中提供的GPI為例,使用了其中的GPI0~GPI4五個(gè)GPI。
圖7為本應(yīng)用實(shí)例的GPI輸入控制圖。如圖7所示,此處設(shè)計(jì)了5個(gè)GPI輸入,用于控制計(jì)算機(jī)是否運(yùn)行測(cè)試程序0~4。此處設(shè)定當(dāng)GPI輸入為高電平時(shí),對(duì)應(yīng)測(cè)試程序的觸發(fā)條件為有效,反之,對(duì)應(yīng)測(cè)試程序的觸發(fā)條件為無效,在計(jì)算機(jī)POST過程中會(huì)跳過對(duì)應(yīng)測(cè)試程序不予執(zhí)行。軟件實(shí)現(xiàn)方面,可通過分別讀取GPI輸入電平來判定觸發(fā)條件是否有效,以此決定是否運(yùn)行對(duì)應(yīng)的測(cè)試程序。
參考Intel公司ICH4的產(chǎn)品手冊(cè),可以看出,在PCI Configuration Space中的寄存器BUS0:DEV1F:FUNC0:REG58中記錄著一個(gè)基地址,通過訪問以這個(gè)地址為偏移的一組I/O地址,可以讀取GPI的狀態(tài)。假定這個(gè)寄存器的值為00001181H,則基地址為1180h。讀取I/O端口1180h+0Ch=118Ch中的一個(gè)字節(jié)的數(shù)值,即可得知GPI0~GPI7的電平輸入狀態(tài)。Bit0對(duì)應(yīng)GPI0,Bit1對(duì)應(yīng)GPI1,...依此類推。
以K0控制測(cè)試程序0為例,假設(shè)芯片組中的寄存器判斷框中的程序偽代碼如下讀取I/O端口118Ch中的一個(gè)字節(jié),將值賦給整數(shù)i;i<-i.AND.01h;ifi>0調(diào)用測(cè)試程序0;else不調(diào)用測(cè)試程序繼續(xù)執(zhí)行;endif
這樣就實(shí)現(xiàn)了用機(jī)箱上的微開關(guān)選擇執(zhí)行測(cè)試程序的目的。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種利用智能設(shè)備的固件實(shí)現(xiàn)部件檢測(cè)的方法,其特征在于,在智能設(shè)備中預(yù)先設(shè)置測(cè)試程序模塊,在固件上電自檢POST過程中的指定位置設(shè)置所述測(cè)試程序模塊對(duì)應(yīng)的調(diào)用接口,該方法進(jìn)一步包括智能設(shè)備開機(jī)啟動(dòng)后運(yùn)行POST過程,當(dāng)運(yùn)行到所述調(diào)用接口的位置時(shí),暫時(shí)中斷POST過程,啟動(dòng)該調(diào)用接口,利用該調(diào)用接口調(diào)用對(duì)應(yīng)的測(cè)試程序模塊對(duì)所述設(shè)備的部件進(jìn)行測(cè)試,輸出測(cè)試結(jié)果;該測(cè)試程序模塊進(jìn)行的測(cè)試結(jié)束后,再繼續(xù)運(yùn)行所中斷的POST過程。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述測(cè)試程序模塊內(nèi)嵌設(shè)置在所述固件中,或者設(shè)置在所述固件外的存儲(chǔ)設(shè)備中。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的在POST過程中的指定位置設(shè)置所述測(cè)試程序模塊對(duì)應(yīng)的調(diào)用接口,是在所述測(cè)試程序模塊進(jìn)行測(cè)試所必需的POST階段之后的指定位置設(shè)置該測(cè)試程序模塊的調(diào)用接口。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在測(cè)試程序模塊進(jìn)行測(cè)試的過程中,所述調(diào)用接口保持所述固件與測(cè)試程序模塊的通信,根據(jù)測(cè)試需要從固件中獲取測(cè)試所需要的原始參數(shù)并傳送給測(cè)試程序模塊,或者將測(cè)試程序模塊的測(cè)試結(jié)果傳送給固件,并由固件輸出。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述調(diào)用接口中設(shè)置有用于調(diào)用對(duì)應(yīng)測(cè)試程序模塊的觸發(fā)條件;該方法進(jìn)一步包括當(dāng)啟動(dòng)所述調(diào)用接口后,該調(diào)用接口首先判定自身設(shè)置的觸發(fā)條件是否有效,如果有效,則再調(diào)用該調(diào)用接口對(duì)應(yīng)的測(cè)試程序模塊進(jìn)行測(cè)試;如果觸發(fā)條件無效,則繼續(xù)運(yùn)行所中斷的POST過程。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,在所述調(diào)用接口中設(shè)置觸發(fā)條件的具體方法為在調(diào)用接口中設(shè)置通用接口GPI,用該GPI的兩種不同電平狀態(tài)分別表示觸發(fā)條件有效和觸發(fā)條件無效,通過外部開關(guān)設(shè)置該GPI的兩種不同電平狀態(tài)。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,在所述調(diào)用接口中設(shè)置觸發(fā)條件的具體方法為在調(diào)用接口中設(shè)置與指定輸入按鍵對(duì)應(yīng)的診斷標(biāo)識(shí),該診斷標(biāo)識(shí)與測(cè)試程序模塊的觸發(fā)條件對(duì)應(yīng);利用該診斷標(biāo)識(shí)的兩種不同狀態(tài)分別表示觸發(fā)條件有效或觸發(fā)條件無效,并通過判斷指定輸入按鍵是否被激活來改變?cè)撛\斷標(biāo)識(shí)的狀態(tài)。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的調(diào)用接口調(diào)用對(duì)應(yīng)的測(cè)試程序模塊是通過鉤HOOK方式調(diào)用測(cè)試程序模塊的。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述POST過程中,如果在所述智能設(shè)備的標(biāo)準(zhǔn)輸出設(shè)備模塊沒有成功初始化之前調(diào)用了測(cè)試程序模塊,則以智能設(shè)備的蜂鳴器或喇叭發(fā)聲輸出檢測(cè)結(jié)果;如果在所述標(biāo)準(zhǔn)輸出設(shè)備模塊成功初始化之后調(diào)用了測(cè)試程序模塊,以標(biāo)準(zhǔn)輸出設(shè)備的標(biāo)準(zhǔn)輸出方式輸出檢測(cè)結(jié)果。
10.根據(jù)權(quán)利要求1至9任一項(xiàng)所述的方法,其特征在于,所述的智能設(shè)備為計(jì)算機(jī),所述的固件為計(jì)算機(jī)的輸入輸出系統(tǒng)。
全文摘要
本發(fā)明公開了一種利用智能設(shè)備的固件實(shí)現(xiàn)部件檢測(cè)的方法,該方法在智能設(shè)備中預(yù)先設(shè)置測(cè)試程序模塊,在固件上電自檢POST過程中的指定位置設(shè)置所述測(cè)試程序模塊對(duì)應(yīng)的調(diào)用接口,該方法進(jìn)一步包括智能設(shè)備開機(jī)啟動(dòng)后運(yùn)行POST過程,當(dāng)運(yùn)行到所述調(diào)用接口的位置時(shí),暫時(shí)中斷POST過程,啟動(dòng)該調(diào)用接口,利用該調(diào)用接口調(diào)用對(duì)應(yīng)的測(cè)試程序模塊對(duì)所述設(shè)備的部件進(jìn)行測(cè)試,輸出測(cè)試結(jié)果;該測(cè)試程序模塊進(jìn)行的測(cè)試結(jié)束后,再繼續(xù)運(yùn)行所中斷的POST過程。本發(fā)明可以實(shí)現(xiàn)在智能設(shè)備的POST過程中,即可對(duì)部件進(jìn)行較POST自檢更深、更廣的故障檢測(cè)。
文檔編號(hào)G06F9/445GK1889051SQ200510079788
公開日2007年1月3日 申請(qǐng)日期2005年6月28日 優(yōu)先權(quán)日2005年6月28日
發(fā)明者王曉文, 劉濤, 龔仲濤, 樊小軍 申請(qǐng)人:聯(lián)想(北京)有限公司