專利名稱:總線連接系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及總線連接系統(tǒng),并且特別涉及能夠與在總線通信系統(tǒng)中的電子設(shè)備一起使用的裝置,用以允許該設(shè)備擔(dān)當(dāng)系統(tǒng)內(nèi)的主機(jī)。
通用串行總線(USB)通信系統(tǒng)變?yōu)槭制毡椤?br>
在USB系統(tǒng)中,將電子設(shè)備的許多部件互連是可能的,所述電子設(shè)備諸如個(gè)人計(jì)算機(jī)、掃描儀、移動(dòng)電話、打印機(jī)等。在任何系統(tǒng)中,設(shè)備的一個(gè)部件可總是被指定為USB主機(jī),其控制與所有其他部件或USB裝置的連接。個(gè)人計(jì)算機(jī)通常配備有所要求的硬件和軟件,使得它們能夠擔(dān)當(dāng)USB主機(jī),但是其他部件通常不配備所要求的硬件和軟件,并因而只能擔(dān)當(dāng)USB裝置。
但是在不要求對設(shè)備進(jìn)行較大的改變,就能讓設(shè)備的部件擔(dān)當(dāng)USB主機(jī)這樣的狀況是有用的。
根據(jù)本發(fā)明的一個(gè)方面,提供一個(gè)優(yōu)選地以硬件加密狗(dongle)為形式的總線工作站,其可與總線通信裝置的總線通信端口連接,使其擔(dān)當(dāng)為一個(gè)總線主機(jī)。在本發(fā)明的優(yōu)選實(shí)施例中,盡管本發(fā)明還應(yīng)用于其他總線通信系統(tǒng),總線工作站運(yùn)行在USB系統(tǒng)中。
更具體地,本發(fā)明的一個(gè)方面提供這樣的一個(gè)總線工作站,當(dāng)它確定總線主機(jī)連接到其第一總線通信端口時(shí),其擔(dān)當(dāng)為收發(fā)器,以允許所述總線主機(jī)和連接到其第二總線通信端口的總線裝置之間的傳統(tǒng)總線通信;當(dāng)它確定運(yùn)行適當(dāng)軟件的總線裝置連接到其第一總線通信端口時(shí),其擔(dān)當(dāng)為可替換的主機(jī),以允許連接到第一總線通信端口的總線裝置和連接到第二總線通信端口的總線裝置中間的通信。
圖1是總線通信系統(tǒng)的示意框圖。
圖2是顯示圖1的系統(tǒng)中的硬件和軟件的框圖。
圖3是顯示根據(jù)本發(fā)明的一個(gè)方面的方法的流程圖。
圖1是根據(jù)本發(fā)明的總線通信系統(tǒng)的示意框圖。
系統(tǒng)2包括具有USB端口6的第一USB裝置4,第二USB裝置8和加密狗10。
在該所說明的實(shí)施例中,第一USB裝置4是個(gè)人數(shù)字助理(PDA),但是可以理解,本發(fā)明可應(yīng)用于任何USB裝置,比如移動(dòng)通信裝置、數(shù)碼相機(jī)或個(gè)人檔案夾。
第二USB裝置8可以是任何USB裝置,包括打印機(jī)、鼠標(biāo)、硬盤或調(diào)制解調(diào)器。
加密狗10包括具有第一主機(jī)端口H1和第二主機(jī)端口H2的嵌入式USB主機(jī)/裝置控制器12,以及低功率微控制器單元(MCU)14。
加密狗10的第一主機(jī)端口H1可如圖1所示的那樣連接到PDA4的USB端口6。當(dāng)加密狗10的第一主機(jī)端口H1連接到PDA4的USB端口6時(shí),PDA能有效地?fù)?dān)當(dāng)為USB主機(jī),并且加密狗10的第二主機(jī)端口H2就可以有效地作用為PDA4的主機(jī)端口。因此,PDA4可控制與通過USB總線15連接到加密狗10的第二主機(jī)端口H2的任何USB裝置的通信。
應(yīng)當(dāng)注意到,當(dāng)?shù)谝恢鳈C(jī)端口H1和第二主機(jī)端口H2如這里所示的那樣連接到同一USB主機(jī)/裝置控制器12時(shí),對于MCU14就可能通過兩個(gè)獨(dú)立的USB主機(jī)/裝置控制器與第一主機(jī)端口H1和第二主機(jī)端口H2通信,第一主機(jī)端口專門與PDA4通信,并且第二第一主機(jī)端口專門與連接的USB裝置或裝置8通信。
為了允許當(dāng)PDA4連接到加密狗10時(shí)擔(dān)當(dāng)為USB接口,PDA要求進(jìn)行驅(qū)動(dòng)程序更新。
驅(qū)動(dòng)程序更新是專門針對于所使用的特定的USB驅(qū)動(dòng)程序,并用作為在虛擬硬件抽象層(VirtualHAL)添加軟件驅(qū)動(dòng)程序,該軟件驅(qū)動(dòng)程序運(yùn)行在PDA4的現(xiàn)有的USB裝置硬件的頂部。
圖2是顯示圖1的系統(tǒng)中的硬件和軟件的框圖。
如傳統(tǒng)那樣,USB裝置4具有一個(gè)操作系統(tǒng)18,主機(jī)堆棧20以及裝置堆棧和裝置硬件22。為了能夠擔(dān)當(dāng)為USB主機(jī),PDA 4還運(yùn)行了VirtualHAL驅(qū)動(dòng)程序軟件16。當(dāng)USB裝置4運(yùn)行在VirtualHAL驅(qū)動(dòng)程序軟件16時(shí),有時(shí)在這里稱之為裝置上的主機(jī)(HostOnDevice)。
加密狗10包括主機(jī)硬件12(即使USB主機(jī)控制器)、MCU14和軟主機(jī)(SoftHost)固件24。
將在下面更詳細(xì)地描述的軟主機(jī)協(xié)議層控制裝置4和加密狗10通過加密狗連接器28的通信。
圖3是說明加密狗10在MCU14的控制下的操作的流程圖。在圖3的步驟32通電之后,在步驟34,MCU輪詢第一主機(jī)端口H1,以確定是否存在到其上的任何連接。如果不存在連接,過程在步驟36結(jié)束。
如果存在連接,在步驟38MCU確定是否存在連接到第一主機(jī)端口H1的USB主機(jī)。如果存在連接到第一主機(jī)端口H1的USB主機(jī),那么過程傳遞到步驟40,其中加密狗10擔(dān)當(dāng)為USB收發(fā)器。即是,其將在第一主機(jī)端口H1和第二主機(jī)端口H2直接傳遞通信,以允許連接的USB主機(jī)控制以傳統(tǒng)方式與連接到第二主機(jī)端口H2的任何USB裝置的通信。
如果在步驟38MCU確定連接到第一主機(jī)端口H1的是USB裝置而不是USB主機(jī),過程傳遞到步驟41,其中確定否存在連接到第二主機(jī)端口H2的USB主機(jī)。如果是,那么在步驟42,在USB主機(jī)/裝置控制器12內(nèi)的USB裝置內(nèi)核允許連接到第一主機(jī)端口H1的USB主機(jī)和連接到第二主機(jī)端口H2的USB主機(jī)之間的傳統(tǒng)USB通信。
如果存在連接到第二主機(jī)端口H2的USB裝置,MCU14在步驟43枚舉第一主機(jī)端口H1的USB裝置,并且檢查是否其是一個(gè)運(yùn)行在VirtualHAL上的裝置。如果MCU在步驟43確定連接的裝置4沒有運(yùn)行VirtualHAL,就在步驟44中禁止裝置4,并且例如將觸發(fā)一個(gè)閃爍LED,信號通知連接的裝置4不支持VirtualHAL。
如果MCU在步驟42確定裝置4正在運(yùn)行VirtualHAL,(即是其具有VirtualHAL驅(qū)動(dòng)程序16)在步驟46中,MCU14將進(jìn)入運(yùn)行模式,以允許加密狗10(與裝置4一起)擔(dān)當(dāng)可替換的USB主機(jī)。在這個(gè)將在下面詳細(xì)描述的模式中,加密狗10能控制與連接到第二主機(jī)端口H2的USB裝置的通信。
在傳統(tǒng)的系統(tǒng)中,其中個(gè)人計(jì)算機(jī)是USB主機(jī),主機(jī)堆棧通過主機(jī)HAL訪問下層的USB硬件。類似地,在傳統(tǒng)的PDA USB裝置中,裝置堆棧通過裝置HAL訪問下層的USB硬件。
但是根據(jù)本發(fā)明,在軟主機(jī)系統(tǒng)中,當(dāng)主機(jī)堆棧(或主機(jī)工作站驅(qū)動(dòng)程序軟件)20需要訪問主機(jī)硬件12時(shí),它將訪問操作細(xì)節(jié)傳送給VirtualHAL驅(qū)動(dòng)程序16。VirtualHAL驅(qū)動(dòng)程序16將這些訪問操作細(xì)節(jié)打包到預(yù)定的軟主機(jī)協(xié)議中。當(dāng)軟主機(jī)加密狗10在突出的軟主機(jī)協(xié)議包中輪詢到一個(gè)軟主機(jī)協(xié)議包時(shí),通過現(xiàn)有的USB裝置硬件22將其發(fā)送出去。
因此,VirtualHAL驅(qū)動(dòng)程序16為主機(jī)工作站驅(qū)動(dòng)程序軟件仿效主機(jī)控制器的存在。即是,從主機(jī)堆棧20的角度看,與VirtualHAL驅(qū)動(dòng)程序16的通信與傳統(tǒng)系統(tǒng)中的主機(jī)HAL的通信沒有什么不同。通過VirtualHAL驅(qū)動(dòng)程序16主機(jī)堆棧20將看到一個(gè)實(shí)際的主機(jī)硬件。
相反,VirtualHAL驅(qū)動(dòng)程序16為裝置控制器(或裝置堆棧)22仿效裝置控制器的存在。因此,VirtualHAL驅(qū)動(dòng)程序16將翻譯主機(jī)工作站驅(qū)動(dòng)程序軟件20與該裝置控制器之間的通信。
軟主機(jī)協(xié)議提供下列訪問函數(shù)—讀一個(gè)在加密狗主機(jī)硬件12中的寄存器—寫一個(gè)在加密狗主機(jī)硬件12中的寄存器—讀一個(gè)在加密狗主機(jī)硬件12中的緩沖存儲器—寫一個(gè)在加密狗主機(jī)硬件12中的緩沖存儲器將添加更高級的功能以提高系統(tǒng)的性能,例如讀取一個(gè)寄存器、將其與一個(gè)值做和運(yùn)算/或運(yùn)算并將修正的值寫回的寄存器的功能。
軟主機(jī)協(xié)議定義運(yùn)行在VirtualHAL上的主機(jī)堆棧20可使用裝置控制器硬件訪問主機(jī)控制器12的硬件的方法。下面詳細(xì)描述軟主機(jī)協(xié)議。在該描述中,屬于“主機(jī)加密狗”被用作表示加密狗10,而術(shù)語“裝置上的主機(jī)”被用作指裝置4,即是具有USB裝置硬件22的嵌入式系統(tǒng),其運(yùn)行在VirtualHAL上的主機(jī)堆棧20上。
在圖3的末尾啟動(dòng)軟主機(jī)協(xié)議,此時(shí)主機(jī)加密狗10已經(jīng)枚舉了連接的裝置4,并且連接的裝置4被確認(rèn)為裝置上的主機(jī)。
在運(yùn)行模式下,MCU14設(shè)置一個(gè)中斷管道并為數(shù)據(jù)在每毫秒枚舉VirtualHAL驅(qū)動(dòng)程序16。在裝置4和加密狗10中間通信的數(shù)據(jù)通過軟主機(jī)協(xié)議的方式、以軟主機(jī)包的協(xié)議被發(fā)送。如果PDA4上的主機(jī)堆棧20已經(jīng)通過VirtualHAL驅(qū)動(dòng)程序16發(fā)送一個(gè)硬件訪問請求,當(dāng)加密狗10的第一主機(jī)端口H1通過中斷管道輪詢其時(shí),VirtualHAL驅(qū)動(dòng)程序16將該請求作為軟主機(jī)包來發(fā)送。
MCU14將從嵌入式USB主機(jī)控制器12的緩沖存儲器取回該軟主機(jī)包,并由此執(zhí)行硬件訪問。如果存在任何返回的數(shù)據(jù)(讀操作),MCU14通過主機(jī)1將對應(yīng)的數(shù)據(jù)發(fā)送出去。
通信量主機(jī)加密狗10和裝置上的主機(jī)4使用專門的雙向大塊管道進(jìn)行通信。存在四種有效負(fù)載。
HRU(主機(jī)加密狗請求單元)由主機(jī)加密狗10發(fā)送8字節(jié)有效負(fù)載的大塊包用作輪詢裝置上的主機(jī)4可包含中斷信息(HRU_IRQ)主機(jī)加密狗10總是在發(fā)送HRU之后發(fā)送64字節(jié)的Bulk-in。
裝置上的主機(jī)4通過該Bulk-in用NOB或CRP應(yīng)答。
NOB(非突出業(yè)務(wù))由裝置上的主機(jī)4發(fā)送8字節(jié)有效負(fù)載的大塊包當(dāng)不存在非突出事務(wù)時(shí)被發(fā)送CRP(通用請求包)由裝置上的主機(jī)4發(fā)送16-64字節(jié)的大塊包包含先前接收的CRP命令的結(jié)果,和最優(yōu)的數(shù)據(jù)集合。
ARP(按照請求的)由主機(jī)加密狗10發(fā)送16-64字節(jié)的大塊包流程如所有USB系統(tǒng)那樣,傳輸是由主機(jī)的一個(gè)動(dòng)作發(fā)起的。在軟主機(jī)協(xié)議的情況下,主機(jī)加密狗10總是主機(jī)。所有的軟主機(jī)傳輸循環(huán)用一個(gè)如上定義的HUR開始。當(dāng)前的傳輸循環(huán)必須在主機(jī)加密狗10開始下一個(gè)傳輸循環(huán)之前完成。
空輪詢循環(huán)HRU-NOB主機(jī)加密狗10為突出命令集合輪詢裝置上的主機(jī)4。如果不存在突出命令集合,裝置上的主機(jī)4用NOB應(yīng)答。
事務(wù)主機(jī)加密狗10發(fā)送BULK-OUT主機(jī)加密狗10發(fā)送DATA(HRU)裝置上的主機(jī)4發(fā)送ACK主機(jī)加密狗10發(fā)送BULK-IN主機(jī)加密狗10發(fā)送DATA(NOB)裝置上的主機(jī)4發(fā)送ACK輪詢某物(Poll-Something)循環(huán)HRU-CRP-ARP主機(jī)加密狗10為突出命令集合輪詢裝置上的主機(jī)4。
裝置上的主機(jī)4通過CRP發(fā)送突出命令集合。主機(jī)加密狗10執(zhí)行命令并通過ARP返回結(jié)果。
事務(wù)主機(jī)加密狗10發(fā)送BULK-OUT主機(jī)加密狗10發(fā)送DATA(HRU)裝置上的主機(jī)4發(fā)送ACK主機(jī)加密狗10發(fā)送BULK-IN主機(jī)加密狗10發(fā)送DATA(CRP)裝置上的主機(jī)4發(fā)送ACK主機(jī)加密狗10發(fā)送BULK-OUT主機(jī)加密狗10發(fā)送DATA(APR)裝置上的主機(jī)4發(fā)送ACK中斷循環(huán)HRU_IRQ-CPR-ARP
主機(jī)加密狗10向裝置上的主機(jī)4警報(bào)突出的應(yīng)將中斷。
裝置上的主機(jī)4判定適當(dāng)?shù)拿罴喜⑵渫ㄟ^CRP發(fā)送。
主機(jī)加密狗10執(zhí)行命令并通過ARP返回結(jié)果。
裝置上的主機(jī)4必須清除突出中斷或禁止HRU_IRQ的生成,否則主機(jī)加密狗10將不斷發(fā)送HRU_IRQ。
事務(wù)主機(jī)加密狗10發(fā)送BULK-OUT主機(jī)加密狗10發(fā)送DATA(HRU_IRQ)裝置上的主機(jī)4發(fā)送ACK主機(jī)加密狗10發(fā)送BULK-IN裝置上的主機(jī)4發(fā)送DATA(CRP)主機(jī)加密狗10發(fā)送ACK主機(jī)加密狗10發(fā)送BULK-OUT主機(jī)加密狗10發(fā)送DATA(APR)裝置上的主機(jī)4發(fā)送ACK包格式HRU格式HRU包含下列信息當(dāng)前幀號在主機(jī)加密狗10中的主機(jī)控制器12的Hc中斷狀態(tài)裝置控制器22的中斷狀態(tài)NOB格式?jīng)]有特別的格式要求CRP和ARP格式在頭部的有效比特是對于CRP是1,對于ARP是0。
CRP可以有16-64字節(jié)的大小??偟拇笮∮上铝胁糠纸M成命令集合的數(shù)量(每個(gè)8字節(jié))
可選的數(shù)據(jù)集合在CRP中的最大命令集合數(shù)量是8。
數(shù)據(jù)集合的最大大小是64-(8×命令集合的數(shù)量)單個(gè)命令請求包中的多個(gè)命令集合允許一系列的硬件訪問可在單個(gè)包內(nèi)通信,并因而減少了傳輸延遲。
命令集合的格式命令集合是8字節(jié)的數(shù)據(jù)結(jié)構(gòu)。其包含下列信息命令集合頭部(1字節(jié))命令集合索引(2字節(jié))命令集合數(shù)據(jù)(4字節(jié))命令集合Aux(1字節(jié))
因此,利用USB裝置硬件,虛擬硬件抽象層(VirtualHAL)提供對連接的加密狗上的目標(biāo)硬件的完全訪問。換句話說,現(xiàn)有的USB裝置硬件被用作異步微處理器接口總線,以允許USB主機(jī)驅(qū)動(dòng)器訪問目標(biāo)硬件。
對VirtualHAL的使用提供硬件加密狗不需要處理USB軟件的優(yōu)點(diǎn),這使得加密狗的成本低廉,并且主機(jī)軟件可由USB裝置上的嵌入式系統(tǒng)處理。
因此,在本發(fā)明的優(yōu)選實(shí)施例中,提供了允許USB裝置獲得USB主機(jī)的功能的加密狗而不用改變現(xiàn)有的硬件。為了實(shí)現(xiàn)此,USB裝置運(yùn)行能夠由USB裝置上的嵌入式系統(tǒng)處理的仿效軟件。這提供了硬件加密狗不需要處理USB軟件的優(yōu)點(diǎn),這使得加密狗的成本低廉。
參考VirtualHAL驅(qū)動(dòng)程序軟件允許USB裝置與加密狗10聯(lián)合作用為一個(gè)USB主機(jī)的系統(tǒng),在這個(gè)問題上描述了本發(fā)明。但是,類似結(jié)構(gòu)化的VirtualHAL驅(qū)動(dòng)程序軟件能被使用來將多個(gè)接口/函數(shù)添加到具有USB裝置能力的系統(tǒng)。例如,驅(qū)動(dòng)程序軟件可允許USB裝置通過藍(lán)牙、IrDA、USB-OTG或其他通信協(xié)議進(jìn)行通信。
權(quán)利要求
1.一種在總線通信系統(tǒng)中使用的總線工作站,包括第一通信端口和第二通信端口,并被安排用作在檢測到與所述第二端口耦合的主機(jī)工作站的存在時(shí)以第一模式操作以及在檢測到與所述第二端口耦合的主機(jī)工作站的不存在時(shí)以第二模式操作,所述總線工作站被安排用作第一操作模式,以傳遞與所述第二端口耦合的所述主機(jī)工作站和與所述第一端口耦合的裝置工作站之間的通信,通過按照所述總線工作站初始化通信所根據(jù)的通信協(xié)議與所述第一端口耦合的所述裝置工作站進(jìn)行通信,所述總線工作站進(jìn)一步被安排用于作為以所述第二操作模式的可替換的主機(jī)工作站進(jìn)行操作。
2.根據(jù)權(quán)利要求1的總線工作站,其中所述總線工作站被安排用于作為以所述第一操作模式的USB收發(fā)器進(jìn)行操作,并以所述第二操作模式的USB主機(jī)進(jìn)行操作。
3.根據(jù)權(quán)利要求1的總線工作站,其中所述總線工作站還包括與所述第一和第二端口耦合的收發(fā)器,用于傳遞與所述第二端口耦合的所述主機(jī)工作站和以所述第一操作模式的所述裝置工作站之間的通信。
4.一種用于一個(gè)總線系統(tǒng)的總線工作站,包括與通信端口耦合的裝置控制器,并被安排用于作為裝置工作站進(jìn)行操作,所述總線工作站進(jìn)一步被安排用作在系統(tǒng)軟件的控制下操作,并包括操作系統(tǒng)和主機(jī)工作站驅(qū)動(dòng)程序軟件,其被安排用作與主機(jī)控制器通信并用作將信息在與操作系統(tǒng)的來回之間傳遞,其中所述系統(tǒng)軟件還包括主機(jī)仿效軟件,其被安排用作為主機(jī)工作站驅(qū)動(dòng)程序軟件仿效主機(jī)控制器的存在和為裝置控制器仿效主機(jī)工作站驅(qū)動(dòng)程序軟件的存在,進(jìn)一步被安排用作翻譯從主機(jī)工作站驅(qū)動(dòng)程序軟件到該裝置控制器之間以及相反方向的通信。
5.一種總線系統(tǒng),包括第一總線工作站,其包括在第二總線工作站上的裝置通信端口,所述第二總線工作站進(jìn)一步包括第二通信端口,所述第二總線工作站被安排用作在檢測到與所述第二端口耦合的主機(jī)工作站的存在時(shí)以第一模式操作以及在檢測到與所述第二端口耦合的主機(jī)工作站的不存在時(shí)以第二模式操作。
6.根據(jù)權(quán)利要求5的總線通信系統(tǒng),其中所述第一工作站包括與所述裝置通信端口耦合的裝置控制器,并被安排用作在系統(tǒng)軟件的控制下操作,包括操作系統(tǒng)和主機(jī)工作站驅(qū)動(dòng)程序軟件,其被安排用作與主機(jī)控制器通信并用作將信息在與操作系統(tǒng)的來回之間傳遞,其中所述系統(tǒng)軟件還包括主機(jī)仿效軟件,其被安排用作為主機(jī)工作站驅(qū)動(dòng)程序軟件仿效主機(jī)控制器的存在和為裝置控制器仿效主機(jī)工作站驅(qū)動(dòng)程序軟件的存在,進(jìn)一步被安排用作翻譯從主機(jī)工作站驅(qū)動(dòng)程序軟件到該裝置控制器之間以及相反方向的通信。
全文摘要
以加密狗的形式的總線工作站,與運(yùn)行有適當(dāng)?shù)能浖腢SB裝置一起操作。當(dāng)總線工作站確定總線主機(jī)連接到其第一總線通信端口時(shí),其擔(dān)當(dāng)為收發(fā)器,以允許所述總線主機(jī)和連接到其第二總線通信端口的總線裝置之間的傳統(tǒng)總線通信。當(dāng)總線工作站確定運(yùn)行適當(dāng)軟件的總線裝置連接到其第一總線通信端口時(shí),其擔(dān)當(dāng)為可替換的主機(jī),以允許連接到第一總線通信端口的總線裝置和連接到第二總線通信端口的總線裝置中間的通信。
文檔編號G06F13/38GK1685326SQ03822668
公開日2005年10月19日 申請日期2003年5月22日 優(yōu)先權(quán)日2002年9月24日
發(fā)明者C·Y·吳, Y·K·常, J·特吉亞, K·沙爾馬 申請人:皇家飛利浦電子股份有限公司