專利名稱:檢測主機usb接口傳輸率的系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種檢測主機USB接口傳輸率的系統(tǒng)及方法,特別是關(guān)于一種通過固件程序直接利用USB2.0芯片內(nèi)的儲存區(qū)進行USB主機傳輸率測試的系統(tǒng)及方法。
背景技術(shù):
數(shù)據(jù)儲存設(shè)備是電腦設(shè)備中的重要組成部份,在當(dāng)前各種實際應(yīng)用中,用戶需要儲存的數(shù)據(jù)逐漸增多,USB儲存設(shè)備具有便捷、大容量、高速率的進行數(shù)據(jù)儲存特點,如USB接口的硬盤,其中基于USB1.0方式的最大傳輸速率為12Mbps,基于USB2.0方式更是高達480Mbps,而且其容量大,體積小,支持熱拔插,得到了十分廣泛的應(yīng)用。
正是因為USB儲存設(shè)備的廣泛應(yīng)用,對電腦主機上的USB接口的傳輸速率進行檢測就變得尤其重要,它是USB設(shè)備正常運行的重要保證。傳統(tǒng)的檢測方式,是通過借助硬盤等外部儲存設(shè)備儲存執(zhí)行檢測的數(shù)據(jù),而在進行大規(guī)模的USB傳輸率檢測時,就需要大量的硬盤或其它外部儲存設(shè)備,由于硬盤的成本很高,而且長期讀寫硬盤可能會使其損壞,這樣就會無形中提高測試的成本。
此時,就需要一種低成本的檢測主機USB接口傳輸率的系統(tǒng)及方法解決上述問題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明為解決上述問題而提出了一種檢測主機USB接口傳輸率的系統(tǒng)及方法,通過固件程序直接利用USB2.0芯片內(nèi)的儲存區(qū)進行USB主機傳輸率測試。
本發(fā)明提出了一種檢測主機USB接口傳輸率的方法,該方法包括如下步驟首先啟動USB驅(qū)動程序;然后將該USB驅(qū)動程序中的固件程序下載到周邊設(shè)備控制器芯片中;再確定USB控制器的類型;接下來,根據(jù)該USB控制器類型傳輸數(shù)據(jù),確定傳輸時間;最后根據(jù)數(shù)據(jù)傳輸量及該傳輸時間確定該USB控制器的傳輸率。
本發(fā)明提出了一種檢測主機USB接口的系統(tǒng),該系統(tǒng)包括由USB控制器及驅(qū)動模塊組成的電腦主機,其中該USB控制器用于提供執(zhí)行檢測的USB接口,該驅(qū)動模塊用于生成提供檢測的固件程序,由儲存模塊及固件處理模塊組成的周邊設(shè)備控制器芯片,其中該儲存模塊用于儲存提供檢測的固件程序,該固件處理模塊用于執(zhí)行該固件程序,以及用于提供該電腦主機與該周邊設(shè)備控制器芯片之間的連接電路。
與現(xiàn)有的方法相比,本發(fā)明提供的檢測主機USB接口傳輸率的系統(tǒng)及方法,直接利用USB2.0芯片內(nèi)的儲存區(qū)進行USB主機傳輸率測試,所需的測試邊設(shè)周邊設(shè)備僅僅為USB2.0芯片及其標準電路組件,而非現(xiàn)有技術(shù)中的硬盤,從而很大程度上降低了測試成本,有效避免了資源的浪費。
圖1為本發(fā)明的檢測主機USB接口傳輸率的方法的總體流程圖;圖2為本發(fā)明所提出的啟動USB驅(qū)動程序的流程圖;圖3為本發(fā)明所提出的將該USB驅(qū)動程序中的固件程序下載到周邊設(shè)備控制器芯片中的流程圖;圖4為本發(fā)明所提出的實現(xiàn)對周邊設(shè)備控制器芯片的控制的流程圖;圖5為本發(fā)明所提出的根據(jù)接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作的流程圖;圖6為本發(fā)明所提出的根據(jù)再次接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作的流程圖;圖7為本發(fā)明所提出的根據(jù)該USB控制器類型對該周邊設(shè)備控制器芯片進行控制的流程圖;及圖8為本發(fā)明所提出的檢測主機USB接口傳輸率的系統(tǒng)的模塊架構(gòu)圖。
其中,附圖標記說明如下步驟110 啟動USB驅(qū)動程序步驟120 將該USB驅(qū)動程序中的固件程序下載到周邊設(shè)備控制器芯片中步驟130 確定USB控制器的類型步驟140 根據(jù)該USB控制器類型傳輸數(shù)據(jù),確定傳輸時間步驟150 根據(jù)數(shù)據(jù)傳輸量及該傳輸時間確定該USB控制器的傳輸率步驟210 讀取該周邊設(shè)備控制器芯片信息步驟220 確定該周邊設(shè)備控制器芯片中無固件程序步驟310 固件程序下載完成后重新啟動該周邊設(shè)備控制器芯片步驟320 在該周邊設(shè)備控制器芯片中執(zhí)行該固件程序步驟330 重新讀取周邊設(shè)備控制器芯片信息,確定該周邊設(shè)備控制器芯片中的固件程序步驟340 根據(jù)該USB控制器類型對該周邊設(shè)備控制器芯片進行控制步驟410 執(zhí)行固件程序初始化步驟420 開始接收該周邊設(shè)備控制器芯片的中斷信號步驟430 根據(jù)接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作步驟440 根據(jù)再次接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作步驟510 為當(dāng)接收到該數(shù)據(jù)包時,根據(jù)該數(shù)據(jù)包的內(nèi)容執(zhí)行相應(yīng)操作步驟520 當(dāng)未接收到該數(shù)據(jù)包時,延遲1秒種后繼續(xù)準備接收該數(shù)據(jù)包步驟610 當(dāng)再次接收到該數(shù)據(jù)包時,執(zhí)行其中的設(shè)備中斷請求步驟620 當(dāng)未再次接收到該數(shù)據(jù)包時,確定USB總線空閑標志及延遲處理的設(shè)置情況步驟630 根據(jù)該設(shè)置情況執(zhí)行相關(guān)操作步驟710 當(dāng)該USB總線空閑標志及延遲處理都進行設(shè)置時,延遲對該數(shù)據(jù)包的處理步驟720 當(dāng)該USB總線空閑標志未設(shè)置時,則設(shè)置該標志步驟730 當(dāng)該延遲處理未設(shè)置時,則設(shè)置延遲處理810 電腦主機811 USB控制器
812 驅(qū)動模塊820 周邊設(shè)備控制器芯片821 儲存模塊822 固件處理模塊830 連接電路具體實施方式
下面結(jié)合附圖對本發(fā)明進行詳細說明通過圖1來說明,該圖為本發(fā)明的檢測主機USB接口傳輸率的方法的總體流程圖,說明如下首先啟動USB驅(qū)動程序(步驟110);然后將該USB驅(qū)動程序中的固件程序下載到周邊設(shè)備控制器芯片中(步驟120);再確定USB控制器的類型(步驟130);接下來,根據(jù)該USB控制器類型傳輸數(shù)據(jù),確定傳輸時間(步驟140);最后根據(jù)數(shù)據(jù)傳輸量及該傳輸時間確定該USB控制器的傳輸率(步驟150)。
USB驅(qū)動程序(USB Driver)可以是Windows或者是Linux下的USB驅(qū)動程序,依據(jù)操作系統(tǒng)的類型來決定。其中,Windows操作系統(tǒng)下的USBDriver可以在cypress公司提供的開發(fā)包所提供的代碼基礎(chǔ)上進行修改,從而得到檢測所需的USB Driver;Linux操作系統(tǒng)下的USB Driver沒有可以直接使用的軟件程序,本發(fā)明是通過對Linux操作系統(tǒng)中自帶的dabusb driver進行修改,從而得到檢測所需的固件程序。
現(xiàn)有的USB標準包括USB1.0及USB2.0兩種,分別對應(yīng)不同的USB控制器。
通過執(zhí)行周邊設(shè)備控制器芯片(例如Cypress公司的EZ-USB FX2芯片)中的固件程序,USB Driver就能控制該周邊設(shè)備控制器芯片讀取數(shù)據(jù),并由此得到傳輸?shù)臄?shù)據(jù)量及傳輸時間,將傳輸數(shù)據(jù)量/傳輸時間,就能檢測出該USB控制器的傳輸率。
下面,進一步說明本發(fā)明的流程。
請參見圖2,該圖為本發(fā)明所提出的啟動USB驅(qū)動程序的流程圖,說明如下
首先讀取該周邊設(shè)備控制器芯片信息(步驟210);然后確定該周邊設(shè)備控制器芯片中無固件程序(步驟220)。
該周邊設(shè)備控制器芯片可以為USB2.0FX2芯片,通常的芯片都是含有固件程序的,固件程序是刻錄在該芯片中的只讀存儲器(ROM)內(nèi)的,但本發(fā)明所使用的USB2.0芯片中并沒有ROM。
請參見圖3,該圖為本發(fā)明所提出的將該USB驅(qū)動程序中的固件程序下載到周邊設(shè)備控制器芯片中的流程圖,說明如下固件程序下載完成后重新啟動該周邊設(shè)備控制器芯片(步驟3 10);在該周邊設(shè)備控制器芯片中執(zhí)行該固件程序(步驟320);重新讀取該周邊設(shè)備控制器芯片信息,確定周邊設(shè)備控制器芯片中的固件程序(步驟330);根據(jù)該USB控制器類型對該周邊設(shè)備控制器芯片進行控制(步驟340)。
由于本發(fā)明所使用的USB2.0芯片中沒有ROM,不包含固件程序,這樣就可以充分利用USB2.0芯片的特性,將USB Driver內(nèi)的固件程序直接寫入FX2內(nèi)的儲存區(qū)中,然后根據(jù)該USB控制器類型,通過該固件程序控制該FX2內(nèi)的儲存區(qū)執(zhí)行檢測。
請參見圖4,該圖為本發(fā)明所提出的根據(jù)該USB控制器類型對該周邊設(shè)備控制器芯片進行控制的流程圖,說明如下執(zhí)行固件程序初始化(步驟410);開始接收該周邊設(shè)備控制器芯片的中斷信號(步驟420);根據(jù)接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作(步驟430);根據(jù)再次接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作(步驟440)。
該固件程序?qū)嶋H上所控制的是USB2.0芯片中FX2內(nèi)的儲存區(qū),因為在不同類型的USB控制器中,其FIFO(First In Fist Out)的端點是不同的,在固件程序初始化過程中,就需要根據(jù)各FIFO端點的特點,進行空間分配及相關(guān)緩存器設(shè)置,從而實現(xiàn)對周邊設(shè)備控制器芯片的控制,執(zhí)行檢測。
請參見圖5,該圖為本發(fā)明所提出的根據(jù)接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作的流程圖,說明如下當(dāng)接收到該數(shù)據(jù)包時,根據(jù)該數(shù)據(jù)包的內(nèi)容執(zhí)行相應(yīng)操作(步驟510);當(dāng)未接收到該數(shù)據(jù)包時,延遲1秒種后繼續(xù)準備接收該數(shù)據(jù)包(步驟520)。
該數(shù)據(jù)包中的內(nèi)容包括設(shè)備中斷請求、USB總線空閑標志及延遲處理的設(shè)置等相關(guān)信息,是芯片執(zhí)行操作的重要依據(jù)。
請參見圖6,該圖為本發(fā)明所提出的根據(jù)再次接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作的流程圖,說明如下當(dāng)再次接收到該數(shù)據(jù)包時,執(zhí)行其中的設(shè)備中斷請求(步驟610);當(dāng)未再次接收到該數(shù)據(jù)包時,確定USB總線空閑標志及延遲處理的設(shè)置情況(步驟620);根據(jù)該設(shè)置情況執(zhí)行相關(guān)操作(步驟630)。
請參見圖7,該圖為本發(fā)明所提出的根據(jù)該設(shè)置情況執(zhí)行相關(guān)操作的流程圖,說明如下當(dāng)該USB總線空閑標志及延遲處理都進行設(shè)置時,延遲對該數(shù)據(jù)包的處理(步驟710);當(dāng)該USB總線空閑標志未設(shè)置時,則設(shè)置該標志(步驟720);當(dāng)該延遲處理未設(shè)置時,則設(shè)置延遲處理(步驟730)。
請參見圖8,該圖為本發(fā)明所提出的檢測主機USB接口傳輸率的系統(tǒng)的模塊架構(gòu)圖,如圖所示,包括由USB控制器811及驅(qū)動模塊812組成的電腦主機810,由儲存模塊821及固件處理模塊822組成的周邊設(shè)備控制器芯片820,以及用于提供該電腦主機與該周邊設(shè)備控制器芯片之間的連接電路830。
其中,該周邊設(shè)備控制器芯片為USB2.0芯片周邊設(shè)備控制器芯片,該USB控制器811用于提供執(zhí)行檢測的USB接口,該驅(qū)動模塊812用于生成提供檢測的固件程序,該儲存模塊821為USB2.0芯片中FX2內(nèi)的儲存區(qū),用于儲存提供檢測的固件程序,該固件處理模塊822用于執(zhí)行該固件程序。
下面說明用兩種較佳的USB Driver實例。
Windows操作系統(tǒng)下的USB Driver是在cypress公司提供的開發(fā)包所提供的代碼基礎(chǔ)上進行修改,得到檢測所需的USB Driver,其步驟如下(1)應(yīng)用開發(fā)包的Hex2C軟件將固件程序*.hex轉(zhuǎn)變?yōu)閏語言代碼*.c;(2)將*.c加入到download數(shù)組中;(3)在download固件程序的代碼前添加判斷周邊設(shè)備信息功能,以決定是download固件程序還是對周邊設(shè)備進行控制;(4)應(yīng)用Windows DDK build程序得到*.sys USB driver;及(5)將*.sys和相應(yīng)的*.inf文件拷貝到Windows系統(tǒng)目錄。
該程序生成后,通過執(zhí)行USB Driver,就能將固件程序下載到USB2.0芯片中FX2內(nèi)的儲存區(qū),通過其在USB2.0芯片中執(zhí)行來完成檢測過程。
Linux操作系統(tǒng)下沒有可以直接使用的USB Driver程序,本發(fā)明是通過對Linux操作系統(tǒng)中自帶的dabusb driver進行修改,得到檢測所需的driver,其步驟如下(1)應(yīng)用開發(fā)包的Hex2C軟件將固件程序*.hex轉(zhuǎn)變?yōu)閏語言代碼*.c;(2)將*.c加入到download數(shù)組中;(3)在download固件程序的代碼前添加判斷周邊設(shè)備信息功能,以決定是download固件程序還是對周邊設(shè)備進行控制;(4)在linux的dabusb代碼中添加我們周邊設(shè)備的product id和vendorid;(5)在probe函數(shù)中對fpga和interface部分進行修改;(6)修改open函數(shù)的報錯條件,與我們的周邊設(shè)備配合;(7)對bulk傳輸?shù)膃ndpoint設(shè)置進行修改,應(yīng)用copy_from_user和copy_to_user進行driver與應(yīng)用的數(shù)據(jù)交換;(8)應(yīng)用gcc進行編譯得到dabusb.o;及(9)應(yīng)用腳本控制實現(xiàn)加載driver。
該程序生成后,通過執(zhí)行USB Driver,就能將固件程序下載到USB2.0芯片中FX2內(nèi)的儲存區(qū),通過其在USB2.0芯片中執(zhí)行來完成檢測過程。
以上所述者,僅為本發(fā)明其中的較佳實施例而已,并非用來限定本發(fā)明的實施范圍;即凡根據(jù)本發(fā)明的內(nèi)容所作的均等變化與改進,都應(yīng)屬于本發(fā)明的專利范圍。
權(quán)利要求
1.一種檢測主機USB接口傳輸率的方法,其特征在于,所述方法至少包括以下步驟啟動USB驅(qū)動程序;將所述USB驅(qū)動程序中的固件程序下載到周邊設(shè)備控制器芯片中;確定USB控制器的類型;根據(jù)所述USB控制器類型傳輸數(shù)據(jù),確定傳輸時間;及根據(jù)數(shù)據(jù)傳輸量及所述傳輸時間確定所述USB控制器的傳輸率。
2.如權(quán)利要求1所述的檢測主機USB接口傳輸率的方法,其特征在于,啟動USB驅(qū)動程序的步驟還包括以下步驟讀取所述周邊設(shè)備控制器芯片信息;及確定所述周邊設(shè)備控制器芯片中無固件程序。
3.如權(quán)利要求1所述的檢測主機USB接口傳輸率的系統(tǒng),其特征在于,所述周邊設(shè)備控制器芯片為USB2.0芯片。
4.如權(quán)利要求1所述的檢測主機USB接口傳輸率的方法,其特征在于,將所述USB驅(qū)動程序中的固件程序下載到周邊設(shè)備控制器芯片中的步驟還包括以下步驟固件程序下載完成后重新啟動所述周邊設(shè)備控制器芯片;在所述周邊設(shè)備控制器芯片中執(zhí)行所述固件程序;重新讀取周邊設(shè)備控制器芯片信息,確定所述周邊設(shè)備控制器芯片中的固件程序;及根據(jù)所述USB控制器類型對所述周邊設(shè)備控制器芯片進行控制。
5.如權(quán)利要求4所述的檢測主機USB接口傳輸率的方法,其特征在于,根據(jù)所述USB控制器類型對所述周邊設(shè)備控制器芯片進行控制的步驟還包括以下步驟執(zhí)行固件程序初始化;開始接收所述周邊設(shè)備控制器芯片的中斷信號;根據(jù)接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作;根據(jù)再次接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作。
6.如權(quán)利要求5所述的檢測主機USB接口傳輸率的方法,其特征在于,執(zhí)行固件程序初始化為根據(jù)USB控制器的緩沖區(qū)端點,分配空間并執(zhí)行相關(guān)緩存器設(shè)置。
7.如權(quán)利要求5所述的檢測主機USB接口傳輸率的方法,其特征在于,根據(jù)接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作為當(dāng)接收到所述數(shù)據(jù)包時,根據(jù)所述數(shù)據(jù)包的內(nèi)容執(zhí)行相應(yīng)操作。
8.如權(quán)利要求5所述的檢測主機USB接口傳輸率的方法,其特征在于,根據(jù)接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作為當(dāng)未接收到所述數(shù)據(jù)包時,延遲1秒種后繼續(xù)準備接收所述數(shù)據(jù)包。
9.如權(quán)利要求5所述的檢測主機USB接口傳輸率的方法,其特征在于,根據(jù)再次接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作為當(dāng)再次接收到所述數(shù)據(jù)包時,執(zhí)行其中的設(shè)備中斷請求。
10.如權(quán)利要求5所述的檢測主機USB接口傳輸率的方法,其特征在于,根據(jù)再次接收到的芯片設(shè)置數(shù)據(jù)包情況執(zhí)行相應(yīng)操作是當(dāng)未再次接收到所述數(shù)據(jù)包時執(zhí)行以下步驟當(dāng)未再次接收到所述數(shù)據(jù)包時,確定USB總線空閑標志及延遲處理的設(shè)置情況;及根據(jù)所述設(shè)置情況執(zhí)行相關(guān)操作,所述操作為當(dāng)所述USB總線空閑標志及延遲處理都進行設(shè)置時,延遲對所述數(shù)據(jù)包的處理;當(dāng)所述USB總線空閑標志未設(shè)置時,則設(shè)置所述標志;當(dāng)所述延遲處理未設(shè)置時,則設(shè)置延遲處理。
11.一種檢測主機USB接口傳輸率的系統(tǒng),其特征在于,所述系統(tǒng)包括一電腦主機,所述電腦主機包括一USB控制器,用于提供執(zhí)行檢測的USB接口;及一驅(qū)動模塊,用于生成提供檢測的固件程序;一周邊設(shè)備控制器芯片,所述周邊設(shè)備控制器芯片包括一儲存模塊,用于存放檢測數(shù)據(jù);一固件處理模塊,用于執(zhí)行所述固件程序;及一連接電路,用于提供所述電腦主機與所述周邊設(shè)備控制器芯片之間的連接電路。
12.如權(quán)利要求11所述的檢測主機USB接口傳輸率的系統(tǒng),其特征在于,所述周邊設(shè)備控制器芯片為USB2.0周邊設(shè)備控制器芯片。
13.如權(quán)利要求11所述的檢測主機USB接口傳輸率的系統(tǒng),其特征在于,所述儲存模塊為USB2.0芯片中的儲存區(qū)。
全文摘要
一種檢測主機USB接口傳輸率的系統(tǒng)及方法,通過固件程序直接利用USB2.0芯片內(nèi)的儲存區(qū)進行USB主機傳輸率測試,該系統(tǒng)包括由USB控制器及驅(qū)動模塊組成的電腦主機,由儲存模塊及固件處理模塊組成的周邊設(shè)備控制器芯片,以及連接電路,首先啟動USB驅(qū)動程序,然后將USB驅(qū)動程序中的固件程序下載到周邊設(shè)備控制器芯片中,再確定USB控制器的類型,接下來,根據(jù)USB控制器類型傳輸數(shù)據(jù),確定傳輸時間,最后根據(jù)數(shù)據(jù)傳輸量及傳輸時間確定USB控制器的傳輸率。
文檔編號G06F11/34GK1553334SQ03143188
公開日2004年12月8日 申請日期2003年6月5日 優(yōu)先權(quán)日2003年6月5日
發(fā)明者劉文涵, 宋建福, 李冰 申請人:英業(yè)達股份有限公司