專利名稱:硬件裝置的狀態(tài)設(shè)定方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種硬件裝置的狀態(tài)設(shè)定方法,特別是指一種使用一 通用驅(qū)動(dòng)程序來作為應(yīng)用端與硬件端之間溝通的設(shè)定方法。
背景技術(shù):
在一般的操作系統(tǒng)中,使用者于操作系統(tǒng)中不容易直接存取硬件 的狀態(tài),除非系統(tǒng)具有可支持該硬件的驅(qū)動(dòng)程序。例如,當(dāng)使用者想
要從一嵌入式系統(tǒng)中通過主機(jī)板上的GPIO去取得一特殊按鍵的狀態(tài) 或者控制一 LED發(fā)光,則嵌入式系統(tǒng)需要一具有可支持GPIO的驅(qū)動(dòng) 程序去直接存取GPIO的狀態(tài)數(shù)據(jù),進(jìn)而通過GPIO取得特殊按鍵狀態(tài) 或者控制LED發(fā)光的目的。
然而,在實(shí)際的運(yùn)用上,可支持特定硬件去達(dá)到特殊功能的驅(qū)動(dòng) 程序,皆具有其單一性與獨(dú)特性,而此特性讓其它的使用者無法明白 及使用。同時(shí),具有獨(dú)特性的驅(qū)動(dòng)程序通常沒有經(jīng)過適當(dāng)?shù)臏y(cè)試過程, 所以在運(yùn)用上,若是沒有小心的使用,常常會(huì)發(fā)生硬件的損害,因而 不具有安全性。
前述的情況通常會(huì)發(fā)生在系統(tǒng)整合的期間,包括了通用型輸入輸 出裝置(GPIO)、內(nèi)部集成電路裝置(12C)、系統(tǒng)管理總線(SM-Bus)、 背光源裝置(Black-Light)、亮度調(diào)整裝置(Bright)、看門狗計(jì)時(shí)裝置 (Watchdog timer)及監(jiān)視裝置(Hard-Monitor)等的整合。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一硬件裝置的狀態(tài)設(shè)定方法,借助一通 用驅(qū)動(dòng)程序作為系統(tǒng)的應(yīng)用端通過基本輸入輸出系統(tǒng)(BIOS)與各硬件 間的溝通接口,此種技術(shù)特征可以用來改善傳統(tǒng)需要多個(gè)特殊驅(qū)動(dòng)程 序以分別對(duì)應(yīng)控制各個(gè)硬件的缺點(diǎn),此外,因?yàn)锽IOS程序代碼的重 復(fù)利用,大大減少系統(tǒng)開發(fā)時(shí)程。經(jīng)由本發(fā)明使用的通用驅(qū)動(dòng)程序可 以整合各類特殊的硬件以達(dá)成各項(xiàng)特殊功能。
本發(fā)明的方法步驟包括有首先,使用者可以執(zhí)行一應(yīng)用程序用 以發(fā)出一要求設(shè)定指令,并且將一定義內(nèi)容存放在一內(nèi)存中。接著, 一通用驅(qū)動(dòng)程序接受該要求設(shè)定指令,即從基本輸入輸出中的某一區(qū) 塊取得一標(biāo)頭檔并設(shè)定一序列索引碼,并且判斷該標(biāo)頭檔是否正確。在前述判斷中,若是該標(biāo)頭檔為正確的標(biāo)頭文件,則該驅(qū)動(dòng)程序會(huì)運(yùn) 算該序列索引碼,并且送出一控制權(quán)轉(zhuǎn)移碼給一基本輸入輸出系統(tǒng)。 然后,基本輸入輸出系統(tǒng)會(huì)根據(jù)該控制權(quán)轉(zhuǎn)移碼、序列索引碼及該內(nèi) 存中的定義內(nèi)容設(shè)定一硬件裝置,并將該硬件裝置的狀態(tài)數(shù)據(jù)回存到 該內(nèi)存。最后,使用者通過該應(yīng)用程序從該內(nèi)存中取得硬件裝置的狀 態(tài)數(shù)據(jù)。
本發(fā)明提供的硬件裝置的狀態(tài)設(shè)定系統(tǒng),包括有一內(nèi)存、 一應(yīng)用 程序、 一通用驅(qū)動(dòng)程序及一基本輸入輸出系統(tǒng)。其中,應(yīng)用程序系發(fā) 出一要求設(shè)定指令,以及預(yù)設(shè)一定義內(nèi)容在該內(nèi)存中。通用驅(qū)動(dòng)程序 取得該要求設(shè)定指令,并根據(jù)該要求設(shè)定指令,從基本輸入輸出系統(tǒng) 中的某一區(qū)塊取得一標(biāo)頭文件與一序列索引碼,并且依據(jù)正確的該標(biāo) 頭檔,送出一控制權(quán)轉(zhuǎn)移碼?;据斎胼敵鱿到y(tǒng)取得該控制權(quán)轉(zhuǎn)移碼, 并根據(jù)控制權(quán)轉(zhuǎn)移碼及該內(nèi)存中的定義內(nèi)容控制相對(duì)應(yīng)的硬件裝置, 并將該硬件裝置的狀態(tài)數(shù)據(jù)回存到該內(nèi)存中。借此,該應(yīng)用程序可以 通過該內(nèi)存取得該硬件裝置的狀態(tài)。
如此,借助前述的方法步驟與系統(tǒng),本發(fā)明可以輕易且安全的提 供系統(tǒng)的應(yīng)用端與各硬件之間的溝通,包括了各硬件裝置的狀態(tài)設(shè)定 以及各硬件狀態(tài)的讀取等。同時(shí),借助由通用驅(qū)動(dòng)程序的使用,本發(fā) 明可以達(dá)到快速系統(tǒng)整合的目的。
以上的概述與接下來的詳細(xì)說明皆為示范性質(zhì),是為了進(jìn)一步說 明本發(fā)明的保護(hù)范圍。而有關(guān)本發(fā)明的其它目的與優(yōu)點(diǎn),將在后續(xù)的 說明與附圖加以闡述。
圖1為本發(fā)明的系統(tǒng)架構(gòu)方塊示意圖;及 圖2為本發(fā)明的流程示意圖。
主要元件附圖標(biāo)記說明
應(yīng)用程序10 內(nèi)存12 緩沖區(qū)122 暫存區(qū)124 通用驅(qū)動(dòng)程序14 基本輸入輸出系統(tǒng)16 硬件裝置18 要求設(shè)定指令D1 標(biāo)頭檔D2序列索引碼D3 控制權(quán)轉(zhuǎn)移碼D具體實(shí)施例方式
請(qǐng)參閱圖1,為本發(fā)明的系統(tǒng)架構(gòu)方塊示意圖。在圖1揭示有關(guān) 本發(fā)明的設(shè)定方法所適用的系統(tǒng)架構(gòu)。在此系統(tǒng)架構(gòu)中,包括有一應(yīng) 用程序10、 一內(nèi)存12、 一通用驅(qū)動(dòng)程序14及一基本輸入輸出系統(tǒng)16。 其中,內(nèi)存12設(shè)置有一緩沖區(qū)122與一暫存區(qū)124。
復(fù)參考圖1,當(dāng)應(yīng)用程序IO要將一定義內(nèi)容設(shè)定于該硬件裝置, 以及取得該硬件裝置的狀態(tài)時(shí),應(yīng)用程序10需發(fā)出一要求設(shè)定指令 Dl給該通用驅(qū)動(dòng)程序14,并且將該定義內(nèi)容放置在內(nèi)存12緩沖區(qū)122 中。該通用驅(qū)動(dòng)程序14會(huì)根據(jù)該要求設(shè)定指令Dl,掃描該內(nèi)存12, 并且從該內(nèi)存12的暫存區(qū)124中取得一標(biāo)頭檔D2與一序列索引碼D3。 該通用驅(qū)動(dòng)程序14會(huì)先判斷該標(biāo)頭檔D2是否正確,若是標(biāo)頭檔D2 正確,則再運(yùn)算該序列索引碼D3,以送出一控制權(quán)轉(zhuǎn)移碼D4給基本 輸入輸出系統(tǒng)16。
此時(shí),基本輸入輸出系統(tǒng)16取得系統(tǒng)的控制權(quán),并且根據(jù)控制權(quán) 轉(zhuǎn)移碼D4及該緩沖區(qū)122中的定義內(nèi)容控制相對(duì)應(yīng)的硬件裝置18, 并將該硬件裝置18的狀態(tài)數(shù)據(jù)回存到該內(nèi)存12的緩沖區(qū)122中。如 此,應(yīng)用程序IO便可以將定義內(nèi)容設(shè)定于該硬件裝置18,以及通過基 本輸入輸出系統(tǒng)16得以快速的取得硬件裝置18的狀態(tài)。
接下來,以一GPIO硬件作為說明。 一般來說,GPIO硬件的輸入 /輸出狀態(tài)通常于系統(tǒng)開機(jī)后即被存放在基本輸入輸出系統(tǒng)16中。使用 者若要重新設(shè)定GPIO硬件的輸入/輸出狀態(tài),則需操作本發(fā)明的應(yīng)用 程序IO,以通過通用驅(qū)動(dòng)程序14將預(yù)先設(shè)定的定義內(nèi)容,動(dòng)態(tài)的請(qǐng)求 基本輸入輸出系統(tǒng)16的服務(wù),并設(shè)定GPIO硬件。另外,應(yīng)用程序IO 再?gòu)膬?nèi)存12中讀回基本輸入輸出系統(tǒng)16送回的GPIO硬件的輸入/輸 出狀態(tài)。
如此,本發(fā)明的方法系利用一由C語言(C language)所組成的通 用驅(qū)動(dòng)程序14與一由匯編語言(assembly language)所組成的基本輸 入輸出系統(tǒng)14的資源,以提供各種應(yīng)用程序10與相對(duì)應(yīng)的硬件裝置 18間溝通的安全接口,同時(shí),可以整合各類特殊的硬件裝置18以達(dá)成 某一特殊功能。
配合圖1,參考圖2,為本發(fā)明的流程示意圖。本發(fā)明的硬件裝置 的狀態(tài)設(shè)定方法適用于前述圖1的系統(tǒng)架構(gòu)中,其步驟為首先,使 用者可以借助執(zhí)行特定的應(yīng)用程序10 (Application Programming Interface; API)用以發(fā)出一要求設(shè)定指令Dl,并且提供一定義內(nèi)容存硬件裝置18的設(shè)定數(shù)據(jù)。
接著,通用驅(qū)動(dòng)程序14接受該要求設(shè)定指令D1,并從該內(nèi)存12 的暫存區(qū)124中取得一標(biāo)頭檔D2與一序列索引碼D3 (102),其中該 標(biāo)頭檔D2的初始區(qū)段地址為F000H,而該序列索引碼D3包括有一硬 件類別索引碼、-一功能索引類別碼及一保留索引碼。
另外,在本發(fā)明的方法中,該硬件類別碼定義有以下類別 一通 用型輸入輸出接口 (GPIO)、 一內(nèi)部集成電路接口 (12C)、 一系統(tǒng)管理 總線(SM-Bus)、 一背光源Black-Light、 一亮度界面(Bright)、 一看 門狗(Watchdog)及一監(jiān)視界面(Hard-Monitor)。碼分別對(duì)應(yīng)一功能 索引類別碼,其中,該功能索引類別碼對(duì)應(yīng)于一事件地址,以索引該 緩沖區(qū)中相對(duì)應(yīng)的該定義內(nèi)容。同時(shí),前述各個(gè)硬件類別碼分別對(duì)應(yīng) 有一功能索引類別碼,該功能索引類別碼對(duì)應(yīng)于一事件地址,用以索 引該緩沖區(qū)122中相對(duì)應(yīng)的該定義內(nèi)容。
然后,通用驅(qū)動(dòng)程序14會(huì)先判斷該標(biāo)頭文件D2的數(shù)據(jù)是否正確, 為步驟S104。在前述判斷步驟S104中,若是標(biāo)頭文件D2的數(shù)據(jù)為正 確,則通用驅(qū)動(dòng)程序14會(huì)緊接著運(yùn)算序列索引碼D3,并且送出控制 權(quán)轉(zhuǎn)移碼D4給基本輸入輸出系統(tǒng)16,為步驟S106。反之,若是標(biāo)頭 文件D2的數(shù)據(jù)不正確,則該通用驅(qū)動(dòng)程序14停止動(dòng)作,并回到歩驟 S100。在此,該控制權(quán)轉(zhuǎn)移碼D4包括有一硬件代碼與一控制碼。
接下來,基本輸入輸出系統(tǒng)16取得該硬件代碼與該控制碼,并且 根據(jù)硬件代碼來選擇對(duì)應(yīng)的硬件裝置18,以及根據(jù)該控制碼將該定義 內(nèi)容送至對(duì)應(yīng)的硬件裝置18,并將對(duì)應(yīng)的硬件裝置18的狀態(tài)數(shù)據(jù)回存 到內(nèi)存12的緩沖區(qū)122中,為步驟S108。最后,使用者通過該應(yīng)用程 序10以從該緩沖區(qū)122中取得該硬件裝置18的狀態(tài)數(shù)據(jù),為步驟S109。 配合圖1,參考表一,其中標(biāo)頭檔D2定義有一識(shí)別碼 -標(biāo)頭長(zhǎng)度SuSi HeaderSize...等,如下表一所示。
SuSi—Signature 、
SUSI—HEADER STRUC
SuSi—SignatureDB" $SuSi$
SuSiJeadei.SizeDW
SuSi—Support FlagDW
SuSi—HeaderC服S咖DB
SuSi—SMI—NumDB
SuS—SMI—CMDDW
SuS—LaterVersionDW
SuS—SupportDeviceDD
signature
Size of the SUSI Header Size of the SUSI Header
SUSI—HEADER ENDS
丄ater version of SUSI
;Which device is supported on the platform7
表一同時(shí),通用驅(qū)動(dòng)程序10請(qǐng)求基本輸入輸出系統(tǒng)服務(wù)16可內(nèi)坎匯 編程序,如下表二所示。
Example
mov ax,seg SUSI—Node mov ds , ax
mov si , off set SUSIJode mov dx, seg Buffer mov es,di
mov di,offset SuSi—Buff mov ah,O ;ah:device number=0
mov al,byte ptr ds: [si] .SuSLSMI—Num mov dx,word ptr ds:[si],SuSi—SMI—CMD out dx,al
表二
另外,硬件類別碼定義的類別包括有check SUSI support、 GPIO...Hard-Monitor等,如下所示。
0- check SUSI support
1- GPIO
2- I2C
3- SMBus
4- BackLight
5- Bnght
6- WatchDog
7- Hardware Monitor
此外,每一硬件類別碼分別對(duì)應(yīng)有一功能索引類別碼,列舉GPIO 類別如下所示。 0x0000 — SusiIOQueryMask 0x0001 — SusiIOGetDirection 0x0002 — SusiIOSetDirection 0x0003 - SusiIORead 0x0004 - SusiIOWnte
其中,每一功能索引類別碼對(duì)應(yīng)于緩沖區(qū)中相對(duì)應(yīng)的該定義內(nèi)容, 列舉GPIO類別的定義內(nèi)容如下所示?!?SusiIOQueryMask Input:
Output:
SuSi_Buff +0-8 bytes, for GPIO pm mask
■ SusiIOGetDirection Input:
Output:
SuSi—Buff +0-8 bytes, for GPIO pin direction (0:Out, l:In)
SuSi_Buff +8-8 bytes, for pin direction property (O:can not change, l:can be change)
■ SusiIOSetDirection Input:
SuSi—Buff +0-8 bytes, for pin direction would be write (0:Out, l:In)
Output:
None
■ SusiIORead Input: None Output:
SuSi—Buff +0-8 bytes, for pin status (0:Low, l:High)
■ SusiIOWrite Input:
SuSi—Buff +0-8 bytes, for pm status would be write (0:Low, l:High) Output:
None
綜上所述,本發(fā)明提供的硬件裝置的狀態(tài)設(shè)定方法,是借助一通 用驅(qū)動(dòng)程序作為系統(tǒng)的應(yīng)用端與各硬件之間的溝通接口,此種技術(shù)特 征可以輕易且安全的提供系統(tǒng)的應(yīng)用端與各硬件之間的溝通,此溝通 包括了各硬件裝置的狀態(tài)設(shè)定以及各硬件狀態(tài)的讀取等。
同時(shí),借助通用驅(qū)動(dòng)程序的使用,本發(fā)明可以達(dá)到系統(tǒng)整合的目 的,可以用來改善傳統(tǒng)需要多個(gè)各別硬件驅(qū)動(dòng)程序的缺點(diǎn),并節(jié)省操
作系統(tǒng)與BIOS間功能重復(fù)開發(fā)時(shí)程。
所附附圖僅提供參考與說明用,并非用來對(duì)本發(fā)明加以限制。但 以上所述僅為本發(fā)明的較佳可行實(shí)施例,非因此即局限本發(fā)明的保護(hù) 范圍,因此凡是運(yùn)用本發(fā)明說明書及附圖內(nèi)容所做的等效結(jié)構(gòu)變化, 均同理包含于本發(fā)明的保護(hù)范圍之內(nèi),特此說明。
權(quán)利要求
1. 一種硬件裝置的狀態(tài)設(shè)定方法,其特征在于,步驟包括有a. 執(zhí)行一應(yīng)用程序,用以發(fā)出一要求設(shè)定指令,并且將一定義內(nèi)容存放在一內(nèi)存中;b. 根據(jù)該要求設(shè)定指令,一通用驅(qū)動(dòng)程序從一基本輸入輸出系統(tǒng)中的某一區(qū)塊中取得一標(biāo)頭文件與一序列索引碼,并且判斷該標(biāo)頭檔是否正確;c. 若是正確,則該通用驅(qū)動(dòng)程序運(yùn)算該序列索引碼,并且送出一控制權(quán)轉(zhuǎn)移碼給該基本輸入輸出系統(tǒng);及d. 根據(jù)該控制權(quán)轉(zhuǎn)移碼,該基本輸入輸出系統(tǒng)取得該內(nèi)存中的該定義內(nèi)容,并且根據(jù)該定義內(nèi)容設(shè)置一硬件裝置,并將該硬件裝置的狀態(tài)數(shù)據(jù)回存到該內(nèi)存。
2. 如權(quán)利要求1所述的硬件裝置的狀態(tài)設(shè)定方法,其特征在于, 在步驟a中,該定義內(nèi)容存放在該內(nèi)存的一緩沖區(qū)中,在步驟b中, 該標(biāo)頭文件與序列索引碼存放在該內(nèi)存的一暫存區(qū)中,其中該標(biāo)頭檔 的初始區(qū)段地址為F000H,若是該標(biāo)頭檔不正確,則該通用驅(qū)動(dòng)程序 停止動(dòng)作,并且,于步驟d后,執(zhí)行該應(yīng)用程序,以從該內(nèi)存中取得 該硬件裝置的該狀態(tài)數(shù)據(jù)。
3. 如權(quán)利要求2所述的硬件裝置的狀態(tài)設(shè)定方法,其特征在于, 該序列索引碼包括有一硬件類別索引碼、 一功能索引類別碼及一保留 索引碼,該硬件類別索引碼包括有一通用型輸入輸出接口、 一內(nèi)部集 成電路接口、 一系統(tǒng)管理總線、 一背光源、 一亮度界面、 一看門狗及 一監(jiān)視接口,該功能索引類別碼對(duì)應(yīng)于一事件地址,以索引該緩沖區(qū) 中相對(duì)應(yīng)的該定義內(nèi)容,該控制權(quán)轉(zhuǎn)移碼包括一硬件代碼與一控制碼。
4. 如權(quán)利要求3所述的硬件裝置的狀態(tài)設(shè)定方法,其特征在于, 該基本輸入輸出系統(tǒng)根據(jù)該硬件代碼選擇該硬件裝置,并且,根據(jù)該 控制權(quán)轉(zhuǎn)移碼及該定義內(nèi)容控制該硬件裝置,并將該硬件裝置的該狀 態(tài)數(shù)據(jù)回存到該內(nèi)存的該緩沖區(qū)中。
5. 如權(quán)利要求1所述的硬件裝置的狀態(tài)設(shè)定方法,其特征在于, 該通用驅(qū)動(dòng)程序?yàn)橐?C語言程序。
6. —種硬件裝置的狀態(tài)設(shè)定系統(tǒng),其特征在于,用以存取一硬件 裝置的狀態(tài);包括有一內(nèi)存;一應(yīng)用程序,發(fā)出一要求設(shè)定指令,以及預(yù)設(shè)一定義內(nèi)容在該內(nèi)存中;一通用驅(qū)動(dòng)程序,取得該要求設(shè)定指令,并根據(jù)該要求設(shè)定指令, 從該基本輸入輸出系統(tǒng)中的某一區(qū)塊取得一標(biāo)頭文件與一序列索引碼,并且依據(jù)正確的該標(biāo)頭檔,送出一控制權(quán)轉(zhuǎn)移碼;及一基本輸入輸出系統(tǒng),取得該控制權(quán)轉(zhuǎn)移碼,并根據(jù)控制權(quán)轉(zhuǎn)移 碼及該定義內(nèi)容控制相對(duì)應(yīng)的硬件裝置,并將該硬件裝置的狀態(tài)數(shù)據(jù) 回存到該內(nèi)存中;借此,該應(yīng)用程序可以通過該內(nèi)存取得該硬件裝置的狀態(tài)。
7. 如權(quán)利要求6所述的硬件裝置的狀態(tài)設(shè)定系統(tǒng),其特征在于, 該內(nèi)存包括有一緩沖區(qū)與一暫存區(qū),該定義內(nèi)容儲(chǔ)存于該緩沖區(qū),該 標(biāo)頭文件與該序列索引碼儲(chǔ)存于該暫存區(qū),該標(biāo)頭檔的初始區(qū)段地址 為剛0H。
8. 如權(quán)利要求7所述的硬件裝置的狀態(tài)設(shè)定系統(tǒng),其特征在于, 該序列索引碼包括有一硬件類別索引碼、 一功能索引類別碼及一保留 索引碼,該硬件類別索引碼包括有一通用型輸入輸出接口、 一內(nèi)部集 成電路接口、 一系統(tǒng)管理總線、 一背光源、 一亮度界面、 一看門狗及 一監(jiān)視接口,該功能索引類別碼對(duì)應(yīng)于一事件地址,以索引該緩沖區(qū) 中相對(duì)應(yīng)的該定義內(nèi)容,該控制權(quán)轉(zhuǎn)移碼包括一硬件代碼與一控制碼。
9. 如權(quán)利要求8所述的硬件裝置的狀態(tài)設(shè)定系統(tǒng),其特征在于, 該基本輸入輸出系統(tǒng)根據(jù)該硬件代碼控制該硬件裝置。
10. 如權(quán)利要求8所述的硬件裝置的狀態(tài)設(shè)定系統(tǒng),其特征在于, 該基本輸入輸出系統(tǒng)根據(jù)該控制碼,將該定義內(nèi)容送至該硬件裝置, 并將該硬件裝置的狀態(tài)數(shù)據(jù)回存到該內(nèi)存中。
全文摘要
本發(fā)明提供一種硬件裝置的狀態(tài)設(shè)定方法及系統(tǒng),系統(tǒng)包括有一內(nèi)存、一應(yīng)用程序、一通用驅(qū)動(dòng)程序及一基本輸入輸出系統(tǒng)。其中,應(yīng)用程序發(fā)出一要求設(shè)定指令及預(yù)設(shè)一定義內(nèi)容在內(nèi)存中。通用驅(qū)動(dòng)程序取得要求設(shè)定指令時(shí),即從基本輸入輸出系統(tǒng)中的某一區(qū)塊取得一標(biāo)頭檔并設(shè)定一序列索引碼,再依據(jù)正確的標(biāo)頭檔送出一控制權(quán)轉(zhuǎn)移碼?;据斎胼敵鱿到y(tǒng)取得控制權(quán)轉(zhuǎn)移碼,并根據(jù)控制權(quán)轉(zhuǎn)移碼及內(nèi)存中的定義內(nèi)容設(shè)定相對(duì)應(yīng)的硬件裝置,再將硬件裝置的狀態(tài)數(shù)據(jù)回存到內(nèi)存中,以提供應(yīng)用程序擷取。
文檔編號(hào)G06F9/445GK101436134SQ200710165568
公開日2009年5月20日 申請(qǐng)日期2007年11月12日 優(yōu)先權(quán)日2007年11月12日
發(fā)明者周廉峰, 張峰嘉 申請(qǐng)人:研華股份有限公司