專利名稱:計(jì)算機(jī)外部設(shè)備的主動(dòng)配置方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)外部總線上的設(shè)備的配置方法,尤其是為掛接在外部總線上的外部設(shè)備提供由該設(shè)備控制的主動(dòng)配置的方法。
當(dāng)前計(jì)算機(jī)的外部總線有USB(Universal Serial Bus)、IEEE1394(FireWire)等,掛接在這類外部總線上的設(shè)備,一般由系統(tǒng)(主控制器,即Host)對(duì)資源進(jìn)行統(tǒng)一調(diào)配,外部設(shè)備本身僅能被動(dòng)地接受控制。
掛接在USB總線上的外部設(shè)備,簡(jiǎn)稱USB設(shè)備,分為很多類(class),其中一個(gè)類是大容量存儲(chǔ)設(shè)備(mass storage),包括USB外置硬盤、USB電子盤等。USB電子盤有時(shí)需要作為引導(dǎo)盤,所以PC機(jī)為了支持從這類外置的大容量存儲(chǔ)設(shè)備中啟動(dòng),就在BIOS中針對(duì)這類設(shè)備增加了相應(yīng)的I/O程序,由BIOS借助這些專用的I/O程序從外部設(shè)備中存取數(shù)據(jù),控制并完成整個(gè)引導(dǎo)過程。但因?yàn)橥獠吭O(shè)備繁多,并且不停地有新類型的設(shè)備推向市場(chǎng),其I/O方式也不盡相同,所以通過BIOS提供I/O程序就缺乏通用性,一些外部設(shè)備只能被動(dòng)地等到BIOS升級(jí)后才能完全支持其功能。其它一些USB外部設(shè)備,例如USB身份驗(yàn)證設(shè)備,可能需要在操作系統(tǒng)啟動(dòng)前,也就是在BIOS初始化階段對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行有限的控制,例如,向用戶提示一個(gè)信息、接受用戶的密碼輸入、根據(jù)用戶的權(quán)限和需求選擇硬盤中的某個(gè)操作系統(tǒng)等等,但這樣的功能,在現(xiàn)有的PC機(jī)中只能通過將專用程序升級(jí)到BIOS中的方法或者額外增加一塊控制卡的復(fù)雜方法實(shí)現(xiàn)。另外,很多新推向市場(chǎng)的設(shè)備總是需要用戶向操作系統(tǒng)中安裝專用驅(qū)動(dòng)程序,增加了使用時(shí)的復(fù)雜性。
在實(shí)際應(yīng)用中,掛接在外部總線上的一些外部設(shè)備,可能需要在操作系統(tǒng)啟動(dòng)前,也就是BIOS進(jìn)行初始化(POST)時(shí),對(duì)自身進(jìn)行初始化、或者對(duì)計(jì)算機(jī)系統(tǒng)作一些必要的設(shè)定、或者有限的控制等等,但當(dāng)前的計(jì)算機(jī)并不能方便地滿足外部設(shè)備的上述要求。當(dāng)前的實(shí)際解決方案通常是個(gè)案解決,也就是通過將為某類甚至某個(gè)設(shè)備定制的相關(guān)程序,升級(jí)到BIOS中的方法,支持某個(gè)設(shè)備的要求,實(shí)現(xiàn)其功能。這樣的打補(bǔ)丁方案,缺乏通用性和前瞻性,解決方案總是滯后于設(shè)備需要;并且升級(jí)BIOS是一項(xiàng)很有技術(shù)挑戰(zhàn)性的工作,不適用于普通PC機(jī)用戶;另外,只有非常普及的設(shè)備需求,主板廠家才會(huì)向用戶提供BIOS升級(jí)所需要的資料,而一般不會(huì)為某些特定的應(yīng)用提供BIOS升級(jí)。
本發(fā)明的目的是,在盡可能不增加額外成本的前提下,在現(xiàn)有的PC機(jī)構(gòu)架中,為掛接在外部總線上的設(shè)備提供一種通用的、簡(jiǎn)潔易行的,由該設(shè)備控制的主動(dòng)配置方法,允許外部設(shè)備有選擇地進(jìn)行主動(dòng)配置,實(shí)現(xiàn)設(shè)備特有的功能。本發(fā)明所指的外部設(shè)備,是指掛接在計(jì)算機(jī)外部總線上的設(shè)備;本發(fā)明所指的主動(dòng)配置,包括初始化外部設(shè)備本身,對(duì)計(jì)算機(jī)系統(tǒng)參數(shù)、環(huán)境進(jìn)行相關(guān)的設(shè)定,以及對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行有限的控制等,特別地,從外部存儲(chǔ)設(shè)備進(jìn)行引導(dǎo),進(jìn)而由外部存儲(chǔ)設(shè)備中的程序控制整個(gè)計(jì)算機(jī)系統(tǒng),比可以看作是外部設(shè)備的主動(dòng)配置行為。
本發(fā)明的技術(shù)構(gòu)思是所有需要進(jìn)行主動(dòng)配置的外部設(shè)備本身提供一個(gè)插件,BIOS使用一個(gè)約定的通用操作方式獲取并初始化該外部設(shè)備的插件,該外部設(shè)備在插件中實(shí)現(xiàn)主動(dòng)配置。
本發(fā)明的技術(shù)方案包括下述三個(gè)方面1、所有需要進(jìn)行主動(dòng)配置的外部設(shè)備,內(nèi)置一個(gè)插件,插件中包含進(jìn)行主動(dòng)配置所必要的控制程序;2、在外部總線中增加一個(gè)通用的插件存取操作,系統(tǒng)(主控制器,即Host)可以通過插件存取操作獲取已經(jīng)內(nèi)置插件的外部設(shè)備的插件;3、在BIOS的初始化過程中,增加對(duì)外部設(shè)備的插件掃描程序,在插件掃描程序中對(duì)檢測(cè)到的外部設(shè)備的插件進(jìn)行初始化(或者稱為調(diào)用)。
上述方案中,外部設(shè)備內(nèi)置的插件,具有事先與BIOS約定好的格式和校驗(yàn)標(biāo)準(zhǔn)。
上述方案中,插件存取操作是一個(gè)覆蓋外部總線上的所有設(shè)備的操作。也就是說,不論設(shè)備的分類和用途,只要該外部設(shè)備需要主動(dòng)配置,就可以支持這個(gè)通用的插件存取操作;而不需要主動(dòng)配置的外部設(shè)備,則可以完全不響應(yīng)插件存取操作,或者明確返回不支持信息。這樣既不會(huì)增加不需要主動(dòng)配置的外部設(shè)備的任何成本,又可以為當(dāng)前和將來的需要主動(dòng)配置的外部設(shè)置提供一種通用的、簡(jiǎn)潔的進(jìn)行主動(dòng)配置的方法。
上述方案中,BIOS中增加的插件掃描程序,對(duì)掛接在外部總線上的所有外部設(shè)備進(jìn)行枚舉,通過插件存取操作試圖獲取每個(gè)外部設(shè)備的插件,而只有內(nèi)置插件并支持插件存取操作的外部設(shè)備,其插件才會(huì)被BIOS正確獲取并初始化。
上述方案中,BIOS在正確獲取某外部設(shè)備的插件后,初始化該外部設(shè)備的插件,外部設(shè)備通過插件中的控制程序進(jìn)行主動(dòng)配置,本發(fā)明所指的插件初始化,包括調(diào)用插件中的程序以及根據(jù)插件中提供的信息進(jìn)行資源調(diào)配等。因?yàn)锽IOS并不限定對(duì)某一類外部設(shè)備進(jìn)行插件掃描及初始化,所以本方案不但能夠支持當(dāng)前的各類設(shè)備,也能夠支持我們還未定義的將來的新設(shè)備;只要新設(shè)備滿足本方案的條件,不必再升級(jí)BIOS,就可以支持主動(dòng)配置,使得BIOS一步到位,不必頻繁為支持新設(shè)備的主動(dòng)配置而升級(jí)。
上述方案中,外部設(shè)備內(nèi)置的插件,其程序可以采用特定的腳本語言編寫。
上述方案中,外部設(shè)備內(nèi)置的插件,其程序可以是經(jīng)過編譯的目標(biāo)程序,具有與計(jì)算機(jī)擴(kuò)展ROM相兼容的格式,以便充分利用已有的資源,進(jìn)一步地降低軟件成本。同時(shí)在BIOS的插件掃描程序中,對(duì)于具有擴(kuò)展ROM兼容格式的插件,BIOS可以先將其映射到PC機(jī)的上位內(nèi)存(Upper Memory),生成模擬的擴(kuò)展ROM,再使用初始化擴(kuò)展ROM的標(biāo)準(zhǔn)方法對(duì)該插件進(jìn)行初始化。這樣的方案對(duì)于需要支持遠(yuǎn)程引導(dǎo)的USB網(wǎng)卡而言,將能較好地延用ISA/PCI網(wǎng)卡的用于引導(dǎo)的擴(kuò)展ROM的已有資源。
上述方案中,外部設(shè)備內(nèi)置的插件,如果使用二進(jìn)制目標(biāo)程序,那么插件的靈活性將更大,外部設(shè)備可以在BIOS允許的情況下設(shè)定計(jì)算機(jī)的參數(shù)、環(huán)境、引導(dǎo)操作系統(tǒng)、控制計(jì)算機(jī),完成以前的外部設(shè)備所不能完成的工作。特別是對(duì)于某些特定的應(yīng)用,本發(fā)明的技術(shù)方案方便了外部設(shè)備對(duì)計(jì)算機(jī)系統(tǒng)的控制,使得設(shè)備的功能更強(qiáng)。
上述方案中,外部設(shè)備如果需要跨平臺(tái)使用(例如同時(shí)支持IA結(jié)構(gòu)的PC機(jī)和RISC工作站),則插件程序適宜以腳本語言編寫;如果一定要用二進(jìn)制目標(biāo)程序,則多個(gè)平臺(tái)的插件應(yīng)該分別增加平臺(tái)識(shí)別標(biāo)志,并且某一個(gè)平臺(tái)的BIOS只會(huì)獲取相對(duì)應(yīng)的插件。
作為進(jìn)一步的擴(kuò)展,可以用類似的方法,將外部設(shè)備的驅(qū)動(dòng)程序整合在插件中;或者單獨(dú)提供一個(gè)存取某一特定操作系統(tǒng)的驅(qū)動(dòng)程序的操作,在新設(shè)備接入操作系統(tǒng)時(shí),操作系統(tǒng)首先檢查已有的驅(qū)動(dòng)程序是否支持該新設(shè)備,如果不支持,使用一個(gè)通用的存取驅(qū)動(dòng)程序的操作,從設(shè)備中直接獲取驅(qū)動(dòng)程序,進(jìn)一步簡(jiǎn)化用戶的工作。
本發(fā)明的技術(shù)方案,僅需要主動(dòng)配置的外部設(shè)備增加一個(gè)插件和插件存取操作部分,以及在BIOS中增加一個(gè)插件掃描程序,就可以支持當(dāng)前以及將來的各類設(shè)備的主動(dòng)配置,比目前已有的方法更為通用和簡(jiǎn)潔,靈活性更強(qiáng)。
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的說明。
圖1為需要主動(dòng)配置的外部設(shè)備的局部結(jié)構(gòu)圖。
圖2為需要主動(dòng)配置的外部設(shè)備的局部程序流程圖。
圖3為BIOS中插件掃描程序的程序流程圖。
見圖1,在需要主動(dòng)配置的外部設(shè)備(11)中內(nèi)置了插件(12),而不需要主動(dòng)配置的外部設(shè)備則不需要內(nèi)置插件。
見圖2,這是需要主動(dòng)配置的外部設(shè)備的局部程序流程圖,所有掛接在外部總線上的外部設(shè)備都具有步驟(22),另外步驟(21)和步驟(23)分別為程序入口和出口,需要主動(dòng)配置的外部設(shè)備則還需要增加步驟(24)、步驟(25)、步驟(26)。步驟(21)為局部程序入口,外部設(shè)備檢測(cè)到系統(tǒng)主控制器發(fā)給自身的一個(gè)操作請(qǐng)求,進(jìn)入步驟(24)。在步驟(24)設(shè)備判斷該操作是否為插件存取操作,如果不是則進(jìn)入常規(guī)操作處理步驟(22);如果是插件處理操作則進(jìn)入步驟(25)。在步驟(25),設(shè)備檢查當(dāng)前插件存取操作的參數(shù)是否合理,參數(shù)不合理則不必響應(yīng)該操作或者返回一個(gè)操作錯(cuò)誤信息;參數(shù)合理則進(jìn)入步驟(26)。在步驟(26),設(shè)備按當(dāng)前插件存取操作的要求,將指定的數(shù)據(jù)返回給系統(tǒng)主控制器,然后進(jìn)入步驟(23)。步驟(23)為局部程序出口,設(shè)備操作處理完成。
見圖3,這是BIOS中插件掃描程序的程序流程圖。步驟(32)進(jìn)行外部設(shè)備枚舉,對(duì)所掃描到的每個(gè)外部設(shè)備都嘗試進(jìn)行一組相同的處理即步驟(41)到步驟(48)。在步驟(41)中,BIOS通過外部總線主控制器向掃描到的某個(gè)設(shè)備發(fā)出插件存取操作,嘗試獲取該設(shè)備的插件的插件頭;插件頭是指一種能夠讓BIOS認(rèn)定外部設(shè)備內(nèi)置了有效插件的約定格式,例如約定插件的前兩個(gè)字節(jié)為55H和0AAH(均為十六進(jìn)制數(shù)據(jù)),第三個(gè)字節(jié)用于指示當(dāng)前插件的數(shù)據(jù)長(zhǎng)度,在設(shè)備返回插件頭時(shí),BIOS可以據(jù)此判斷插件是否無效。在步驟(42)中,BIOS等待外部設(shè)備的操作返回,如果被掃描的外部設(shè)備需要主動(dòng)配置,則應(yīng)該返回正確的插件頭數(shù)據(jù);否則不返回?cái)?shù)據(jù)或者返回錯(cuò)誤指示信息,使得BIOS放棄對(duì)該設(shè)備的隨后操作。在步驟(43)中,BIOS對(duì)外部設(shè)備返回的插件頭進(jìn)行檢查,如果插件頭數(shù)據(jù)符合約定的格式,則繼續(xù)獲取整個(gè)插件;否則BIOS放棄對(duì)該設(shè)備的隨后操作。在步驟(44)和步驟(45)中,BIOS通過多次插件存取操作,讀取該外部設(shè)備的整個(gè)插件的數(shù)據(jù),如果中途檢測(cè)到操作超時(shí),可以采用重復(fù)操作,或者中止操作的具體處理方式。在步驟(46)中,BIOS對(duì)讀取的整個(gè)插件進(jìn)行全面校驗(yàn),根據(jù)約定的格式和校驗(yàn)標(biāo)準(zhǔn),最終確定該外部設(shè)備的插件是否有效,如果校驗(yàn)失敗則BIOS放棄對(duì)該設(shè)備的隨后操作,否則進(jìn)入步驟(47)。在步驟(47)中,對(duì)于已經(jīng)確認(rèn)的有效插件,BIOS將兼容計(jì)算機(jī)擴(kuò)展ROM格式的插件映射到上位內(nèi)存,模擬成擴(kuò)展ROM。在步驟(48)中,BIOS以初始化擴(kuò)展ROM的標(biāo)準(zhǔn)方式初始化模擬成擴(kuò)展ROM的插件,或者直接對(duì)插件進(jìn)行初始化,外部設(shè)備依靠該插件實(shí)現(xiàn)主動(dòng)配置,完成后BIOS繼續(xù)進(jìn)行其余的外部設(shè)備的枚舉。在實(shí)際應(yīng)用中,同一種外部總線上的設(shè)備可以支持同一個(gè)插件存取操作,但不同外部總線上的設(shè)備可能需要對(duì)插件存取操作進(jìn)行不同的物理實(shí)現(xiàn);例如,可以為所有的USB設(shè)備定義一個(gè)插件存取操作,但因?yàn)镮EEE1394與USB的物理層和鏈路層不盡相同,所以對(duì)于IEEE1394設(shè)備需要另外定義一個(gè)插件存取操作;但這里的不同主要是指物理層,在邏輯層仍然可以做成統(tǒng)一的格式。同樣,在BIOS方面,可能需要對(duì)每一種外部總線單獨(dú)進(jìn)行一個(gè)插件掃描操作,例如,先對(duì)USB設(shè)備進(jìn)行枚舉和插件掃描,再對(duì)IEEE1394設(shè)備進(jìn)行枚舉和插件掃描。
以掛接在USB總線上的USB身份識(shí)別設(shè)備為例,這類設(shè)備需要在操作系統(tǒng)啟動(dòng)前對(duì)用戶身份進(jìn)行檢查,包括顯示一些界面和接受用戶的一些按鍵輸入,在未采用本發(fā)明技術(shù)方案的情況下,要實(shí)現(xiàn)上述功能,有兩種方案,第一種是在計(jì)算機(jī)中再添置一塊控制卡,成本較高,安裝控制卡要打開機(jī)箱也不方便;第二種是在BIOS中添加一個(gè)專用控制程序,但因?yàn)檫@類設(shè)備并不是非常普及,所以主板廠家通常不會(huì)為此專門升級(jí)BIOS。采用本發(fā)明的技術(shù)方案后,只要將專用控制程序以標(biāo)準(zhǔn)插件格式存放于USB身份識(shí)別設(shè)備中,用戶不需要做任何額外的工作,計(jì)算機(jī)的BIOS就會(huì)自動(dòng)初始化該插件,USB身份識(shí)別設(shè)備借助該插件,就可以控制計(jì)算機(jī)顯示界面以及接受輸入,實(shí)現(xiàn)所需要的功能。這里的插件存取操作應(yīng)該定義為一個(gè)標(biāo)準(zhǔn)的USB設(shè)備級(jí)操作,使得USB總線的各種類型的設(shè)備都可以在需要時(shí)支持該操作,從而使插件存取操作更為通用,支持當(dāng)前尚未定義的新類型的設(shè)備。另外,當(dāng)前的USB網(wǎng)卡因?yàn)锽IOS中未提供USB網(wǎng)卡的引導(dǎo)程序,所以不支持遠(yuǎn)程引導(dǎo),但只要基于本發(fā)明的技術(shù)方案在網(wǎng)卡中增加一個(gè)插件,就可以很方便地支持遠(yuǎn)程引導(dǎo)。作為一種具體應(yīng)用,本發(fā)明的技術(shù)方案還可以應(yīng)用于從任何一種外置存儲(chǔ)裝置中引導(dǎo),而不局限于當(dāng)前已定義的USB外置電子盤。
對(duì)本發(fā)明技術(shù)方案作進(jìn)一步的考慮,還可以增加外部設(shè)備的插件的寫入功能,使得插件可以在必要的情況下進(jìn)行升級(jí)或者修正。另外,操作系統(tǒng)可以執(zhí)行一種插件存取操作,該操作可以從外部設(shè)備中獲取設(shè)備自帶的驅(qū)動(dòng)程序,從而省去用戶安裝驅(qū)動(dòng)程序的過程??傊?,通過為BIOS和外部設(shè)備定義一個(gè)通用的插件存取操作,并讓BIOS在計(jì)算機(jī)初始化過程中進(jìn)行插件掃描,需要主動(dòng)配置的外部設(shè)備只需要內(nèi)置一個(gè)插件,就可以通過插件實(shí)現(xiàn)主動(dòng)配置。基于本發(fā)明的技術(shù)方案,在實(shí)現(xiàn)外部設(shè)備主動(dòng)配置時(shí)更為通用和簡(jiǎn)潔,并且使外部設(shè)備具有更強(qiáng)的靈活性。
權(quán)利要求
1.掛接在計(jì)算機(jī)外部總線上的外部設(shè)備實(shí)現(xiàn)主動(dòng)配置的一種方法,其特征是需要主動(dòng)配置的外部設(shè)備,支持插件存取操作,內(nèi)置一個(gè)插件,插件中包含進(jìn)行主動(dòng)配置所必要的控制程序;計(jì)算機(jī)BIOS中包含插件掃描程序,插件掃描程序嘗試獲取外部設(shè)備的插件,并對(duì)獲取的有效插件進(jìn)行初始化。
2.根據(jù)權(quán)利要求1所述的外部設(shè)備的主動(dòng)配置方法,其特征是外部設(shè)備內(nèi)置的插件,具有與BIOS約定好的格式和校驗(yàn)標(biāo)準(zhǔn),以便BIOS判斷其獲取的插件是否有效。
3.根據(jù)權(quán)利要求1所述的外部設(shè)備的主動(dòng)配置方法,其特征是插件存取操作是一個(gè)標(biāo)準(zhǔn)的設(shè)備級(jí)操作,基于同一種外部總線接口的設(shè)備不論類型與用途,都可以根據(jù)需要決定是否支持該操作。
4.根據(jù)權(quán)利要求1所述的外部設(shè)備的主動(dòng)配置方法,其特征是插件掃描程序包含外部設(shè)備枚舉過程、插件存取操作過程、插件是否有效的判斷過程、插件初始化過程,前面過程的結(jié)果決定是否執(zhí)行后面的過程。
5.根據(jù)權(quán)利要求1或2所述的外部設(shè)備的主動(dòng)配置方法,其特征是外部設(shè)備內(nèi)置的插件中的程序采用腳本語言編寫。
6.根據(jù)權(quán)利要求1或2所述的外部設(shè)備的主動(dòng)配置方法,其特征是外部設(shè)備內(nèi)置的插件中的程序?yàn)榻?jīng)過編譯的目標(biāo)程序。
7.根據(jù)權(quán)利要求6所述的外部設(shè)備的主動(dòng)配置方法,其特征是外部設(shè)備內(nèi)置的插件具有與計(jì)算機(jī)擴(kuò)展ROM相兼容的格式,包括下述特征,插件的前兩個(gè)字節(jié)必須為十六進(jìn)制數(shù)據(jù)55H和0AAH。
8.根據(jù)權(quán)利要求7所述的外部設(shè)備的主動(dòng)配置方法,其特征是BIOS將獲取到的有效插件模擬成擴(kuò)展ROM,并對(duì)其按標(biāo)準(zhǔn)的擴(kuò)展ROM的初始化方式進(jìn)行初始化。
9.根據(jù)權(quán)利要求1所述的外部設(shè)備的主動(dòng)配置方法,其特征是操作系統(tǒng)包含插件掃描程序,并通過插件存取操作獲取外部設(shè)備自帶的基于該操作系統(tǒng)的驅(qū)動(dòng)程序。
10.根據(jù)權(quán)利要求1所述的外部設(shè)備的主動(dòng)配置方法,其特征是所述的外部總線是USB總線,所述的外部設(shè)備為掛接在USB總線上的設(shè)備。
全文摘要
本發(fā)明是關(guān)于為掛接在計(jì)算機(jī)外部總線上的外部設(shè)備提供一種由該設(shè)備控制的主動(dòng)配置的方法。本發(fā)明的方法是,為計(jì)算機(jī)的BIOS和需要主動(dòng)配置的外部設(shè)備定義一個(gè)通用的插件存取操作;需要主動(dòng)配置的外部設(shè)備內(nèi)置一個(gè)用于主動(dòng)配置的插件;由BIOS在計(jì)算機(jī)初始化過程中執(zhí)行一個(gè)插件掃描程序,嘗試獲取外部設(shè)備的插件并對(duì)有效插件進(jìn)行初始化,使得外部設(shè)備得以通過插件實(shí)現(xiàn)主動(dòng)配置。
文檔編號(hào)G06F12/00GK1493975SQ0213851
公開日2004年5月5日 申請(qǐng)日期2002年11月1日 優(yōu)先權(quán)日2002年11月1日
發(fā)明者尹啟鳳 申請(qǐng)人:尹啟鳳