国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法

      文檔序號(hào):1369359閱讀:211來(lái)源:國(guó)知局
      專利名稱:一種計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種計(jì)算機(jī)硬件參數(shù)的獲取與測(cè)試生成方法,特別是涉及一種計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法。
      背景技術(shù)
      隨著計(jì)算機(jī)的速度越來(lái)越快,發(fā)熱量也越來(lái)越大,在這方面,以CPU(中央處理器,central processing unit)更為突出,因?yàn)镃PU的集成度高達(dá)幾百萬(wàn)晶體管,所以發(fā)熱量之大讓人難以想象。普通的CPU表面溫度甚至可以達(dá)到40-60度,而CPU內(nèi)部則更是高達(dá)80度甚至于上百度。如果計(jì)算機(jī)經(jīng)常發(fā)生死機(jī)、藍(lán)屏錯(cuò)誤、IE錯(cuò)誤、打開(kāi)程序錯(cuò)誤、丟失數(shù)據(jù)、自動(dòng)重啟等問(wèn)題,不是操作系統(tǒng)有問(wèn)題,就是可能因?yàn)镃PU過(guò)熱而造成的。
      如今,風(fēng)扇在CPU分冷系統(tǒng)中發(fā)揮著決定性的作用,由于CPU的發(fā)熱量實(shí)在是太大,只靠散熱片的作用是不夠的,因此一定要風(fēng)扇來(lái)幫忙。
      另一方面,每一臺(tái)計(jì)算機(jī),特別是筆記本計(jì)算機(jī),在出廠之前為保證質(zhì)量都要對(duì)所有硬件進(jìn)行嚴(yán)格的測(cè)試。由于CPU風(fēng)扇是確保CPU工作在安全溫度范圍的重要部件,對(duì)風(fēng)扇的品質(zhì)要求也越來(lái)越高,因此風(fēng)扇測(cè)試也是計(jì)算機(jī)硬件測(cè)試的重要組成部分。
      對(duì)于測(cè)試方來(lái)說(shuō),對(duì)風(fēng)扇的測(cè)試目前都是通過(guò)在測(cè)試程序中先設(shè)置風(fēng)扇轉(zhuǎn)速,然后再讀取風(fēng)扇轉(zhuǎn)速,通過(guò)判斷兩者是否一致,來(lái)實(shí)現(xiàn)風(fēng)扇的測(cè)試。
      然而,通常情況下,每個(gè)計(jì)算機(jī)廠商控制CPU風(fēng)扇的方法都是不同的,甚至同一廠商的不同系列的機(jī)型,其控制方法也是不同的。以前,新機(jī)型風(fēng)扇測(cè)試程序的開(kāi)發(fā)都要經(jīng)過(guò)以下步驟1、查找新機(jī)型的BIOS開(kāi)發(fā)小組;2、向BIOS小組詢問(wèn)新機(jī)型的系統(tǒng)架構(gòu)、有關(guān)風(fēng)扇的參數(shù)和設(shè)置方法;3、根據(jù)獲得的相關(guān)參數(shù)編制程序;4、利用新機(jī)型的樣機(jī)測(cè)試編制好的程序;
      5、如有問(wèn)題仍要重復(fù)以上的2-4;6、將測(cè)試成功的方法添加到測(cè)試程序中。
      以上方法存在開(kāi)發(fā)周期長(zhǎng),兼容性差,程序維護(hù)成本高且穩(wěn)定性很差。主要原因就在于BIOS小組提供的風(fēng)扇參數(shù)只是針對(duì)風(fēng)扇的底層實(shí)現(xiàn)方法而言的,而真正的測(cè)試都是在操作系統(tǒng)層下完成。這樣一來(lái),如果只是直接對(duì)風(fēng)扇操作會(huì)出現(xiàn)與操作系統(tǒng)發(fā)出的風(fēng)扇指令沖突的現(xiàn)象,輕則導(dǎo)致程序中斷,嚴(yán)重的會(huì)造成死機(jī)等情況。
      而另一方面,關(guān)于計(jì)算機(jī)的電源管理,現(xiàn)在有APM(Advanced PowerManagement,高級(jí)電源管理)和ACPI(Advanced Configuration PowerInterface高級(jí)配置電源界面)兩種規(guī)范。特別是ACPI,它是一項(xiàng)電源管理的新技術(shù),由操作系統(tǒng)可以直接和使用者直接互動(dòng),即當(dāng)操作系統(tǒng)察覺(jué)現(xiàn)在某部分功能沒(méi)有使用,便會(huì)自動(dòng)降低其功能來(lái)減少電能使用,以儲(chǔ)備更多電能,ACPI可以被運(yùn)用在不同程序語(yǔ)言的操作系統(tǒng),例如windows 2000對(duì)筆記本計(jì)算機(jī)電池的運(yùn)作,可以通過(guò)電源選項(xiàng)來(lái)控制,從電池計(jì)量表得知電池使用量等。如果要使用ACPI則必須從硬件、BIOS、及驅(qū)動(dòng)程序均要符合,則ACPI操作系統(tǒng)才能正常地運(yùn)作。
      ACPI標(biāo)準(zhǔn)定義了硬件寄存器、BIOS接口(包含配置表格、控制方法以及主板設(shè)備列舉和配置)、系統(tǒng)和設(shè)備的電源狀態(tài)和ACPI熱模型。BIOS提供的支持代碼不是用匯編語(yǔ)言,而是用AML(ACPI Machine Language,ACPI機(jī)器碼,以二進(jìn)制方式存在,為了使用方便通常以十六進(jìn)制表示)編寫(xiě)的。
      盡管ACPI是用于電源管理的新技術(shù),但其中也包含有豐富的硬件信息,其中是否有風(fēng)扇參數(shù)的描述,如何獲取并利用這些參數(shù)編制風(fēng)扇測(cè)試程序,已成為業(yè)界急需解決的問(wèn)題。

      發(fā)明內(nèi)容
      本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,可自動(dòng)獲取風(fēng)扇測(cè)試參數(shù),提高開(kāi)發(fā)效率與穩(wěn)定性。
      為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,利用ACPI規(guī)范從BIOS中解析出風(fēng)扇數(shù)據(jù),以有效獲取并設(shè)置風(fēng)扇測(cè)試參數(shù),其特點(diǎn)在于,該方法包括根據(jù)ACPI規(guī)范從BIOS中解析出AML代碼;分析該AML代碼,獲取與風(fēng)扇有關(guān)的參數(shù);根據(jù)風(fēng)扇參數(shù)生成測(cè)試代碼;及根據(jù)測(cè)試代碼確定端口訪問(wèn)中的系統(tǒng)保護(hù)代碼。
      上述計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特點(diǎn)在于,該根據(jù)ACPI規(guī)范從BIOS中解析出AML代碼的步驟,是通過(guò)讀取內(nèi)存中的BIOS圖像而獲取。
      上述計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特點(diǎn)在于,該根據(jù)ACPI規(guī)范從BIOS中解析出AML代碼的步驟,還包括如下步驟在BIOS中搜尋與風(fēng)扇信息有關(guān)的關(guān)鍵詞;及將該關(guān)鍵詞從二進(jìn)制代碼翻譯為AML代碼。
      上述計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特點(diǎn)在于,該與風(fēng)扇有關(guān)的參數(shù)包括風(fēng)扇的硬件標(biāo)識(shí)符、風(fēng)扇狀態(tài)、風(fēng)扇狀態(tài)的設(shè)定方法、風(fēng)扇的測(cè)試實(shí)現(xiàn)途徑等。
      上述計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特點(diǎn)在于,該風(fēng)扇狀態(tài)包括風(fēng)扇停、慢、快等狀態(tài)。
      上述計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特點(diǎn)在于,該風(fēng)扇測(cè)試實(shí)現(xiàn)途徑包括SystemIO、EmbeddedController、SMBus、CMOS等。
      上述計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特點(diǎn)在于,該生成測(cè)試代碼的步驟中,包括設(shè)定風(fēng)扇的轉(zhuǎn)速。
      上述計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特點(diǎn)在于,該生成測(cè)試代碼的步驟,是生成C++測(cè)試代碼。
      上述計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特點(diǎn)在于,該生成測(cè)試代碼的步驟后,還包括進(jìn)一步精煉該測(cè)試代碼的步驟。
      本發(fā)明功效,在于可自動(dòng)獲取風(fēng)扇參數(shù),開(kāi)發(fā)效率高,生成的測(cè)試代碼穩(wěn)定性高,通用性好。
      以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述,但不作為對(duì)本發(fā)明的限定。


      圖1為本發(fā)明的計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法流程圖;圖2為本發(fā)明的二進(jìn)制代碼翻譯成ASL代碼的流程圖。
      其中,附圖標(biāo)記步驟101-根據(jù)ACPI規(guī)范從BIOS中解析出AML代碼步驟102-分析該AML代碼,獲取與風(fēng)扇有關(guān)的參數(shù)步驟103-根據(jù)風(fēng)扇參數(shù)生成測(cè)試代碼步驟104-根據(jù)測(cè)試代碼確定端口訪問(wèn)中的系統(tǒng)保護(hù)代碼步驟201-查找關(guān)鍵詞“41 D0 0C 0B”步驟202-判斷是否找到步驟203-解析并翻譯二進(jìn)制代碼為ASL碼得到相應(yīng)Power Resource對(duì)象名步驟204-查找關(guān)鍵詞“5B 84 XX YY”步驟205-解析并翻譯二進(jìn)制代碼為ASL碼,得到相應(yīng)Method對(duì)象名步驟206-查找關(guān)鍵詞“14 XX YY”步驟207-翻譯并解析二進(jìn)制代碼為AML碼,得到相應(yīng)Method對(duì)象名具體實(shí)施方式
      現(xiàn)在的絕大部分操作系統(tǒng)都已支持ACPI,ACPI是由一些表狀結(jié)構(gòu)和一些二進(jìn)制數(shù)碼組成,這些表狀結(jié)構(gòu)和二進(jìn)制代碼被固化到計(jì)算機(jī)的BIOS中,在操作系統(tǒng)啟動(dòng)之前被調(diào)入內(nèi)存,其中一部分是操作系統(tǒng)不可以更改的。就在這部分固定不變的內(nèi)容中,包含了許多硬件的端口地址、操作偏移量以及硬件的操作數(shù)。
      在這些硬件信息里,本發(fā)明可以從中自動(dòng)查找獲取與風(fēng)扇測(cè)試相關(guān)的內(nèi)容。這些內(nèi)容是以二進(jìn)制代碼(即AML碼)的形式記錄的,根據(jù)ACPI的規(guī)范,可以將其翻譯成一種語(yǔ)言即ASL(ACPI Source Language)碼,但是ASL碼不能夠直接運(yùn)行,在這些早已經(jīng)記錄在BIOS的語(yǔ)言中,本發(fā)明可以解析出設(shè)置/讀取風(fēng)扇轉(zhuǎn)速的途徑和硬件端口以及相應(yīng)的操作參數(shù)。而這些信息正是編制風(fēng)扇測(cè)試程序必不可少的。
      基于上述原因,本發(fā)明提供了一種新的方法,即通過(guò)分析ACPI中描述的有關(guān)讀取/設(shè)置風(fēng)扇轉(zhuǎn)速部分二進(jìn)制代碼得到風(fēng)扇測(cè)試方法。
      請(qǐng)參閱圖1,為本發(fā)明的計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法流程圖,首先步驟101,根據(jù)ACPI規(guī)范從BIOS中解析出AML代碼;步驟102,分析該AML代碼,獲取與風(fēng)扇有關(guān)的參數(shù);步驟103,根據(jù)風(fēng)扇參數(shù)生成測(cè)試代碼;步驟104,最后根據(jù)測(cè)試代碼確定端口訪問(wèn)中的系統(tǒng)保護(hù)代碼。
      其中,該根據(jù)ACPI規(guī)范從BIOS中解析出AML代碼的步驟,是通過(guò)讀取內(nèi)存中的BIOS圖像而獲取的,首先在BIOS中搜尋與風(fēng)扇信息有關(guān)的關(guān)鍵詞,然后再將該關(guān)鍵詞從二進(jìn)制代碼(AML碼)翻譯為ASL代碼。
      與風(fēng)扇有關(guān)的參數(shù)包括風(fēng)扇的硬件標(biāo)識(shí)符、風(fēng)扇狀態(tài)、風(fēng)扇狀態(tài)的設(shè)定方法、風(fēng)扇的測(cè)試實(shí)現(xiàn)途徑等。其中,風(fēng)扇狀態(tài)包括風(fēng)扇停、慢、快等狀態(tài),風(fēng)扇測(cè)試實(shí)現(xiàn)途徑包括SystemIO、EmbeddedController、SMBus、CMOS等。
      生成的測(cè)試代碼可以是C++代碼。生成測(cè)試代碼后,還可以根據(jù)具體情況分析,進(jìn)一步精煉測(cè)試代碼。
      下面以一具體實(shí)施例來(lái)說(shuō)明本發(fā)明。首先需要讀取內(nèi)存中的BIOS映像(AML)找到關(guān)鍵詞“41 D0 0C 0B”(對(duì)應(yīng)的ASL碼PNP0C0B),通常會(huì)找到幾組關(guān)鍵詞組合,每一組都代表一種風(fēng)扇狀態(tài)信息,如風(fēng)扇停、慢、快等狀態(tài)。每一種狀態(tài)信息由_HID、_UID以及_PR0等信息組成。PNP0C0B就是風(fēng)扇的_HID(Hardware ID),正是利用該標(biāo)識(shí)找到了風(fēng)扇設(shè)備,_HID關(guān)鍵詞為“08 5F48 49 44”。_UID(Unique persistent ID)關(guān)鍵詞為“08 5F 55 49 44”,描述了風(fēng)扇狀態(tài)的序號(hào)。每一組狀態(tài)有一個(gè)相對(duì)唯一的ID。_PR0(PowerResource for D0)關(guān)鍵詞為“08 5F 50 52 30”,描述了此狀態(tài)的設(shè)定方法。跟在關(guān)鍵詞后的第一個(gè)字節(jié)(Byte)是操作碼,操作碼是信息格式的起始關(guān)鍵詞。即不同的操作碼對(duì)應(yīng)不同的信息格式。以AML碼“12”為例,所代表的ASL操作碼為“Package”,相應(yīng)第二字節(jié)是“Package Length”即Package信息的位組長(zhǎng)度。第三位字節(jié)是“Package Lead Byte”,注意這部分很可能不只占一個(gè)字節(jié),具體結(jié)構(gòu)描述為bit 7-6第一個(gè)字節(jié)的高兩位表示了隨后的Package Length的字節(jié)數(shù),如果Package Length只有一個(gè)字節(jié)即此兩位值均為零則bit 0-5表示PackageLength;bit 5-4預(yù)留;bit 3-0標(biāo)識(shí)Package長(zhǎng)度的最末字節(jié)。
      第三字節(jié)后就是_PR0的詳細(xì)信息。此部分通常只是列出了有關(guān)狀態(tài)實(shí)現(xiàn)的對(duì)象名。(為了方便后面的論述假設(shè)一個(gè)對(duì)象名為”F001”)根據(jù)這個(gè)對(duì)象名進(jìn)一步查找風(fēng)扇測(cè)試的實(shí)現(xiàn)途徑。
      按照對(duì)象名“F001”在內(nèi)存中的BIOS圖像找關(guān)鍵詞“5B 84 XX F0 01”。此關(guān)鍵詞分三部分,第一部分“5B 84”是“PowerResOP”對(duì)象編碼名(ObjectEncoding Name);第二部分“XX”是“Package Lead Byte”,標(biāo)識(shí)了該對(duì)象描述部分的長(zhǎng)度;第三部分“F0 01”就是準(zhǔn)備描述的對(duì)象名稱。關(guān)鍵詞之后是“PowerResOP”的參數(shù)部分,一個(gè)字節(jié)表示了該對(duì)象的systemlevel參數(shù);再后面兩個(gè)字節(jié)是resourceorder參數(shù)。至此有關(guān)“PowerResOP”對(duì)象的描述結(jié)束。在對(duì)象描述部分的后面是有對(duì)象相關(guān)方法的描述。該對(duì)象通常包括三種方法_STA、_ON、_OFF,分別為得到風(fēng)扇狀態(tài)、打開(kāi)該狀態(tài)、關(guān)上該狀態(tài)。在此僅以“_ON”為例說(shuō)明,其它方法與此相仿。
      方法(MethodOP)對(duì)象的二進(jìn)制標(biāo)識(shí)編碼是“14”。然后是此方法描述部分的長(zhǎng)度占一個(gè)字節(jié)。然后是方法參數(shù)。方法有兩個(gè)參數(shù),第一個(gè)參數(shù)是名稱串“ON”,第二個(gè)參數(shù)占一個(gè)字節(jié)其中每一個(gè)bit表示如下bit 0-2參數(shù)個(gè)數(shù)(0--7),bit 3SerializeFlag,值“0”表示NotSerialized,值“1”表示Serialized,bit 4-7SyncLevel(0x00-0x0f)。Serialize規(guī)則用來(lái)防止方法的重復(fù)調(diào)用,如果創(chuàng)建namespace對(duì)象,這個(gè)規(guī)則尤其重要,沒(méi)有這個(gè)規(guī)則,當(dāng)嘗試創(chuàng)建同一個(gè)namespace對(duì)象重復(fù)調(diào)用方法將失敗。SyncLevel參數(shù)聲明同步對(duì)象的邏輯嵌套的層次,范圍是0-15。再后面通常是另一個(gè)方法對(duì)象(假設(shè)此方法對(duì)象名為“F002”),如果此對(duì)象有參數(shù),參數(shù)前會(huì)有參數(shù)標(biāo)識(shí)0x0a、0x0b、0x0c、0x0e、0x0d分別表示參數(shù)的數(shù)據(jù)類型為byte、WORD、DWORD、QWORD、String。至此對(duì)象PowerResOP翻譯完畢。下面就是追蹤方法對(duì)象“F002”。
      按照對(duì)象名“F001”在內(nèi)存中的BIOS圖像找關(guān)鍵詞“14 XX F0 02”。第一個(gè)字節(jié)是上面講過(guò)的方法(Method)對(duì)象的二進(jìn)制標(biāo)識(shí)編碼是“14”。第二個(gè)字節(jié)“XX”是“Package Lead Byte”,因此這部分很可能不只占一個(gè)字節(jié)。后面是該方法對(duì)象的具體實(shí)現(xiàn)。因?yàn)椴煌瑱C(jī)型的具體實(shí)現(xiàn)方法不同,但其翻譯過(guò)程與上面的論述相仿,這里不一一介紹了。
      請(qǐng)參閱圖2,簡(jiǎn)要說(shuō)明了上述由二進(jìn)制代碼翻譯成ASL(ACPI SourceLanguage,ACPI源語(yǔ)言)代碼的過(guò)程,首先步驟201,查找關(guān)鍵詞“41 D0 0C0B”,步驟202,判斷是否找到,步驟203,如果找到,則解析并翻譯二進(jìn)制代碼為ASL碼得到相應(yīng)Power Resource對(duì)象名,步驟204,接著查找關(guān)鍵詞“5B 84 XX YY”,其中,XX“Package Length”,YY“Power Resource對(duì)象名”,步驟205,然后解析并翻譯二進(jìn)制代碼(AML碼)為ASL碼,得到相應(yīng)Method對(duì)象名,步驟206,然后查找關(guān)鍵詞“14 XX YY”,其中,XX“PackageLength”,YY“Method對(duì)象名,步驟207,翻譯并解析二進(jìn)制代碼為ASL碼,得到相應(yīng)Method對(duì)象名。
      以HP系列筆記本計(jì)算機(jī)的Ruby機(jī)型為例,ACPI BIOS有關(guān)風(fēng)扇部分二進(jìn)制編碼翻譯成AML碼的對(duì)照描述如下1、搜索關(guān)鍵詞“41 D0 0C 0B”41 D0 0C 0B 08 5F 55 49 44 0A 00 A...._UID..
      08 5F 50 52 30 12 06 01 43 32 30 36 5B 82 22 43._PR0...C206[.”C32 30 42 08 5F 48 49 44 0C20B._HID.
      Name(_HID(Path\_TZ_.C20A._HID),EisaId(“PNP0C0B”))Name(_UID (Path\_TZ_.C20A._UID),0x00)Name(_PR0(Path\_TZ_.C20A._PR0),Package(0x01){C206})2、搜索關(guān)鍵詞“5B 84 XX YY”5B 84 36 43 32 30 36 00 00. rh..a.a[.6C206..
      00 14 0F 5F 53 54 41 00 A4 43 31 46 46 0A 01 0A..._STA..C1FF...
      80 14 0E 5F 4F 4E 5F 00 43 32 30 30 0A 01 0A 80..._ON_.C200....
      14 0E 5F 4F 46 46 00 43 32 30 31 0A 01 0A 9E.._OFF.C201....
      PowerResource(C206(Path\_TZ_.C206),0x00,0x0000){Method(_STA(Path\_TZ_.C206._STA),0,NotSerialized){Return(C1FF(0x01,0x80))}
      Method(_ON(Path\_TZ_.C206._ON_),O,NotSerialized){C200(0x01,0x80)}Method(_OFF(Path\_TZ_.C206._OFF),0,NotSerialized){C201(0x01,0x9E)}}3、搜索關(guān)鍵詞”14 XX C200”14 4B 08 43 32 30 30 0A 79 68 0A 01 60 .K.C200.yh..
      76 60 70 0A 9D 5C 2F 05 5F 53 42 5F 43 30 34 36v`p..\.._SB_C04643 30 35 39 43 30 45 39 43 31 31 45 70 0A 62 5CC059C0E9C11Ep.b\2F 05 5F 53 42 5F 43 30 34 36 43 30 35 39 43 30.._SB_C046C059C045 39 43 31 31 46 A0 3E 93 7B 43 31 46 45 60 00E9C11F.&gt;.{C1FE`.
      0A 00 70 0A 92 5C 2F 05 5F 53 42 5F 43 30 34 36..p..\.._SB_C04643 30 35 39 43 30 45 39 43 31 31 45 70 69 5C 2FC059C0E9C11Epi\.
      05 5F 53 42 5F 43 30 34 36 43 30 35 39 43 30 45._SB_C046C059C0E39 43 31 31 46 7D 43 31 46 45 68 43 31 46 459C11F}C1FEhC1FEMethod(C200(Path\_TZ_.C200),2,Serialized){ShiftLeft(Arg0,0x01,Local0)
      Decrement(Local0)Store(0x9D,\_SB.C046.C059.C0E9.C11E)Store(0x62,\_SB.C046.C059.C0E9.C11F)If(LEqua1(And(C1FE,Loca10),0x00)){Store(0x92,\_SB.C046.C059.C0E9.C11E)Store(Arg1,\_SB.C046.C059.C0E9.C11F)}0r(C1FE,Arg0,C1FE)}4、搜索關(guān)鍵詞”C1 1E”“C1 1F”5B 80 43 31 31 44 [.C11D01 0A 3E 0A 02 5B 81 10 43 31 31 44 01 43 31 31..&gt;..[..C11D.C1145 08 43 31 31 46 08 E.C11F.
      OperationRegion (C11D (Path \_SB_.C046.C059.C0E9.C11D),SystemIO,0x3E,0x02)Field(C11D,ByteAcc,NoLock,Preserve){C11E,8,C11F,8}然后,由ASL代碼可以得到不同機(jī)型測(cè)試風(fēng)扇的途徑。實(shí)現(xiàn)風(fēng)扇測(cè)試有多種途徑,常用到的是SystemIO訪問(wèn)。其它方法如EmbeddedController,SMBus,CMOS訪問(wèn)等因與SystemIO相仿且用到的較少這里不作詳細(xì)說(shuō)明。通常在得到的ASL中搜索標(biāo)識(shí)符OperationRegion,該語(yǔ)句的第二個(gè)參數(shù)標(biāo)明了風(fēng)扇測(cè)試的途徑。該語(yǔ)句的基本格式為OperationRegion(RegionName,//區(qū)域名稱RegionSpace,//區(qū)域空間關(guān)鍵詞,就是風(fēng)扇測(cè)試實(shí)現(xiàn)的途徑
      Offset,//相對(duì)區(qū)域空間基址偏移量,整數(shù)型Length//區(qū)域長(zhǎng)度,整數(shù)型)以本文實(shí)例為例分析測(cè)試方法的獲取過(guò)程。
      在實(shí)例ASL中搜索“OperationRegion”可以得實(shí)例第4步代碼如下OperationRegion(C11D(Path\_SB_.C046.C059.C0E9.C11D),SystemIO,0x3E,0x02)根據(jù)語(yǔ)句基本格式可以解釋為操作區(qū)域“C11D”屬于SMBus設(shè)備,通過(guò)System IO區(qū)域空間偏移0x3E字節(jié)訪問(wèn),該區(qū)域占用System IO兩個(gè)字節(jié)即0x3E,0x3F。
      另舉通過(guò)EmbeddedControl訪問(wèn)測(cè)試風(fēng)扇的實(shí)例OperationRegion(ECF2(Path\_SB_.PCIO.LPCB.ECO_.ECF2),EmbeddedControl,0x00,0xFF)表示操作區(qū)域“ECF2”屬于SMBus設(shè)備,通過(guò)EmbeddedControl區(qū)域空間偏移0x00字節(jié)訪問(wèn),該區(qū)域占用EmbeddedControl空間256個(gè)字節(jié)。
      緊跟在OperationRegion語(yǔ)句之后的是Field語(yǔ)句。該語(yǔ)句是對(duì)應(yīng)操作區(qū)域的具體描述,聲明了一系列的已命名的數(shù)據(jù)對(duì)象的值以及排列次序?;靖袷饺缦翭ield(RegionName,//區(qū)域名稱=&gt;OperationRegionAccessType,//訪問(wèn)類型LockRule,//加鎖規(guī)則UpdateRule//更新規(guī)則){FieldUnitList}針對(duì)上面的實(shí)例Field(C11D,ByteAcc,NoLock,Preserve){C11E,8,C11F,8}
      解釋為區(qū)域?qū)ο竺癈11D”,“ByteAcc”表示訪問(wèn)方式為字節(jié),“NoLock”表示訪問(wèn)域內(nèi)對(duì)象時(shí)不關(guān)心全局鎖(Global Lock后面將有說(shuō)明),“Preserve”預(yù)留?!癈11E”位于對(duì)象“C11D”所在區(qū)域的第一個(gè)字節(jié),因?yàn)檎?Bit。同樣對(duì)象“C11F”也占一個(gè)字節(jié)。
      利用解析ASL碼獲取風(fēng)扇相關(guān)參數(shù)及控制方法,即可生成相應(yīng)C++代碼ASLMethod(C200(Path\TZ_.C200),2,Serialized)C++void SetFanOn(unsigned char arg0,unsigned char arg1){ASLShiftLeft(Arg0,0x01,Loca10)C++unsigned char Loca10;C++Loca10=arg0<<1;ASLDecrement(Loca10)C++Loca10--;ASLStore(0x9D,\_SB.C046.C059.C0E9.C11E)C++outportb(0x3E,0x9D);ASLStore(0x62,\_SB.C046.C059.C0E9.C11F)C++outportb(0x3F,0x62);ASLIf(LEqual(And(C1FE,Loca10),0x00))C++unsigned char flag=0;C++if((flag&amp;Loca10)==0){ASLStore(0x92,\_SB.C046.C059.C0E9.C11E)C++outportb(0x3E,0x92);ASLStore(Arg1,\_SB.C046.C059.C0E9.C11F)C++outportb(0x3F,Arg1);
      }ASLOr(C1FE,Arg0,C1FE)C++flag=flag|arg0;}上面的實(shí)例變量flag是ACPI系統(tǒng)中標(biāo)志風(fēng)扇狀態(tài)的字節(jié),在設(shè)置風(fēng)扇狀態(tài)時(shí)可以忽略。參數(shù)arg0代表狀態(tài)代碼,在設(shè)置風(fēng)扇轉(zhuǎn)速時(shí)也可以忽略。arg1代表需要打開(kāi)的風(fēng)扇轉(zhuǎn)速值。精煉后的設(shè)置風(fēng)扇轉(zhuǎn)速C++代碼為void SetFanOn(unsigned char speed){outportb(0x3E,0x92);outportb(0x3F,speed);}對(duì)于確定系統(tǒng)保護(hù)碼,可以通過(guò)分析OperationRegion語(yǔ)句中對(duì)象的LockRule參數(shù)的描述確定是否有必要在設(shè)置風(fēng)扇轉(zhuǎn)速時(shí)獲得“Global Lock”?!癎lobal Lock”用來(lái)在OSPM(Operation System Power Management)環(huán)境和外部控制器環(huán)境(如SMI)之間同步訪問(wèn)共享硬件資源。在某一個(gè)時(shí)刻,這個(gè)Lock只能由OSPM或固件獨(dú)占。當(dāng)Lock所有權(quán)被申請(qǐng)時(shí),它可能被其它設(shè)備占用,在此情況下申請(qǐng)環(huán)境退出并且等待Lock被釋放的信號(hào)發(fā)出。例如GlobalLock可以用來(lái)保護(hù)Embedded Controler接口。在同一時(shí)刻只能有一個(gè)OSPM或者固件訪問(wèn)Embedded Controler接口。有了這把“鎖”可以有效地防止設(shè)置風(fēng)扇轉(zhuǎn)速時(shí)發(fā)生的沖突導(dǎo)致死機(jī)等情況發(fā)生。因全局鎖的獲取和釋放不是本文論述的重點(diǎn),因此只作簡(jiǎn)略說(shuō)明,不深入說(shuō)明。
      在所列實(shí)例中LockRule為“NoLock”表示設(shè)置轉(zhuǎn)速中不需要加鎖。因?yàn)榈玫降囊陨洗a是硬件底層代碼,如果在操作系統(tǒng)下調(diào)用有必要在兩次端口操作之間加入延時(shí)以增強(qiáng)穩(wěn)定性,延時(shí)的長(zhǎng)短可以是2-10毫秒,得到函數(shù)SetFanOn設(shè)置風(fēng)扇轉(zhuǎn)速的最終方法如下。
      在所列實(shí)例中LockRule為“NoLock”表示設(shè)置轉(zhuǎn)速中不需要加鎖。因?yàn)榈玫降囊陨洗a是硬件底層代碼,如果在操作系統(tǒng)下調(diào)用有必要在兩次端口操作之間加入延時(shí)以增強(qiáng)穩(wěn)定性,延時(shí)的長(zhǎng)短可以是2-10毫秒,得到函數(shù)SetFanOn設(shè)置風(fēng)扇轉(zhuǎn)速的最終方法如下。
      void SetFanOn(unsigned char speed){outportb(0x3E,0x92);delay(10);outportb(0x3F,speed);}本實(shí)施例只詳細(xì)描述了風(fēng)扇某一種狀態(tài)“_ON”方法C++代碼的獲取生成過(guò)程,其它方法與此方法類似,只需根據(jù)本發(fā)明采用相同的方式就可以得到全部實(shí)現(xiàn)。
      當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明權(quán)利要求的保護(hù)范圍。
      權(quán)利要求
      1.一種計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,利用ACPI規(guī)范從BIOS中解析出風(fēng)扇數(shù)據(jù),以有效獲取并設(shè)置風(fēng)扇測(cè)試參數(shù),其特征在于,該方法包括根據(jù)ACPI規(guī)范從BIOS中解析出AML代碼;分析該AML代碼,獲取與風(fēng)扇有關(guān)的參數(shù);根據(jù)風(fēng)扇參數(shù)生成測(cè)試代碼;及根據(jù)測(cè)試代碼確定端口訪問(wèn)中的系統(tǒng)保護(hù)代碼。
      2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特征在于,該根據(jù)ACPI規(guī)范從BIOS中解析出AML代碼的步驟,是通過(guò)讀取內(nèi)存中的BIOS圖像而獲取。
      3.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特征在于,該根據(jù)ACPI規(guī)范從BIOS中解析出AML代碼的步驟,還包括如下步驟在BIOS中搜尋與風(fēng)扇信息有關(guān)的關(guān)鍵詞及將該關(guān)鍵詞從二進(jìn)制代碼翻譯為AML代碼。
      4.根據(jù)權(quán)力要求1所述的計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特征在于,該與風(fēng)扇有關(guān)的參數(shù)包括風(fēng)扇的硬件標(biāo)識(shí)符、風(fēng)扇狀態(tài)、風(fēng)扇狀態(tài)的設(shè)定方法、風(fēng)扇的測(cè)試實(shí)現(xiàn)途徑等。
      5.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特征在于,該風(fēng)扇狀態(tài)包括風(fēng)扇停、慢、快等狀態(tài)。
      6.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特征在于,該風(fēng)扇測(cè)試實(shí)現(xiàn)途徑包括SystemIO、EmbeddedController、SMBus、CMOS等。
      7.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特征在于,該生成測(cè)試代碼的步驟中,包括設(shè)定風(fēng)扇的轉(zhuǎn)速。
      8.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特征在于,該生成測(cè)試代碼的步驟,是生成C++測(cè)試代碼。
      9.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,其特征在于,該生成測(cè)試代碼的步驟后,還包括進(jìn)一步精煉該測(cè)試代碼的步驟。
      全文摘要
      本發(fā)明涉及一種計(jì)算機(jī)風(fēng)扇參數(shù)測(cè)試方法,利用ACPI規(guī)范從BIOS中解析出風(fēng)扇數(shù)據(jù),以有效獲取并設(shè)置風(fēng)扇測(cè)試參數(shù),該方法包括根據(jù)ACPI規(guī)范從BIOS中解析出AML代碼;分析該AML代碼,獲取與風(fēng)扇有關(guān)的參數(shù);根據(jù)風(fēng)扇參數(shù)生成測(cè)試代碼;及根據(jù)測(cè)試代碼確定端口訪問(wèn)中的系統(tǒng)保護(hù)代碼。本發(fā)明可自動(dòng)獲取風(fēng)扇參數(shù),開(kāi)發(fā)效率高,生成的測(cè)試代碼穩(wěn)定性高,通用性好。
      文檔編號(hào)G06F11/22GK1749969SQ200410074679
      公開(kāi)日2006年3月22日 申請(qǐng)日期2004年9月13日 優(yōu)先權(quán)日2004年9月13日
      發(fā)明者劉文涵, 宋建福, 劉萍, 劉一波, 胡幸 申請(qǐng)人:英業(yè)達(dá)股份有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1