一、USB通信協(xié)議 是什么,?
USB是一種支持在USB主機(jī)和USB設(shè)備之間進(jìn)行串行數(shù)據(jù)傳輸?shù)耐ㄐ艆f(xié)議,。主機(jī)作為總線的主叫方,采用兩種信令模式:全速模式12Mb/s和低速模式1.5Mb/s,。USB使用四種數(shù)據(jù)傳輸方式:控制傳輸(control),、中斷傳輸(interrupt)、批量傳輸(bulk)及等時(shí)傳輸(isochronous),。其中控制模式主要用于控制指令傳輸及USB規(guī)范的實(shí)現(xiàn),,等時(shí)傳輸主要用于音頻及視頻傳輸。USB通過(guò)兩次總線列舉(Enumeration and Renumertion)來(lái)實(shí)現(xiàn)設(shè)備識(shí)別以及驅(qū)動(dòng)程序析加載,。其具體過(guò)程為:USB設(shè)備連到主機(jī)后,,主機(jī)依據(jù)USB規(guī)范在特定地址通過(guò)端口0(endpoint0)與外設(shè)通信,并將外設(shè)視為默認(rèn)設(shè)備,。外設(shè)與主機(jī)通信將其6設(shè)備標(biāo)識(shí)(DID,、PID、VID)發(fā)給主機(jī)進(jìn)行第二次總線列舉,。主機(jī)根據(jù)設(shè)備標(biāo)識(shí),,加載相應(yīng)設(shè)備驅(qū)動(dòng)程序,重新分配地址,并將控制權(quán)轉(zhuǎn)交給外設(shè)固件(firmware),,通過(guò)固件與設(shè)備驅(qū)動(dòng)程序及主機(jī)應(yīng)用程序的交互通信,,來(lái)實(shí)現(xiàn)外設(shè)的功能。
二,、USB通信協(xié)議——數(shù)據(jù)交易
表列出了組成4種傳輸類(lèi)型的元素,。在這里,讀者就需要注意一些通信協(xié)議的結(jié)構(gòu),。例如,,傳輸與數(shù)據(jù)交易,、數(shù)據(jù)交易與封包,、封包與字段之間的關(guān)系。當(dāng)然,,這是相當(dāng)復(fù)雜且容易弄混淆的地方,。其中,傳輸包含1個(gè)或是更多的數(shù)據(jù)交易,,每一個(gè)數(shù)據(jù)交易又包含1個(gè),、2個(gè)或是3個(gè)封包。而封包中,,又包含封包標(biāo)識(shí)符(PID)字段,、檢查字段(CRC)以及額外的信息字段。
表 傳輸類(lèi)型,、數(shù)據(jù)交易與封包的關(guān)系表
*每一個(gè)封包是往下端接口傳遞出去的,,若是低速,前面還會(huì)再放置PRE封包,。
因此,,若要了解完整的USB通信協(xié)議就必須從數(shù)據(jù)域談起。通過(guò)由下而上,,從簡(jiǎn)易至復(fù)雜的通信協(xié)議單位來(lái)組合出各種復(fù)雜的通信協(xié)議,,進(jìn)而構(gòu)建出完整的通信協(xié)議。
從表的第2欄中,,可以知道其中包含了3種數(shù)據(jù)交易類(lèi)型,。這3種數(shù)據(jù)交易是根據(jù)其目的與數(shù)據(jù)流方向來(lái)決定的。其中,,SETUP數(shù)據(jù)交易用來(lái)送出控制傳輸要求給設(shè)備,;IN數(shù)據(jù)交易是數(shù)據(jù)從設(shè)各傳回主機(jī);OUT數(shù)據(jù)交易是將數(shù)據(jù)傳送出去給設(shè)各,。每一個(gè)數(shù)據(jù)交易中,,包含了辨識(shí)、錯(cuò)誤檢核,、狀態(tài)以及控制信息,,同樣也包含了要交換的數(shù)據(jù)等,。此外,一個(gè)完整的數(shù)據(jù)交易可能占用多個(gè)幀,。但是數(shù)據(jù)交易卻是一個(gè)實(shí)現(xiàn)USB通信協(xié)議的最基本的結(jié)構(gòu)組成,。也即是,在總線上沒(méi)有任何通信能夠去切斷該數(shù)據(jù)交易的溝通過(guò)程,。當(dāng)然,,除非是錯(cuò)誤的USB通信過(guò)程。
此外,,一個(gè)小量數(shù)據(jù)的傳輸也許僅需一個(gè)數(shù)據(jù)交易,。如果是大量的數(shù)據(jù),傳輸可能就需使用多個(gè)數(shù)據(jù)交易,,每一次傳輸一部分?jǐn)?shù)據(jù),。讀者或許會(huì)認(rèn)為表的通信協(xié)議的結(jié)構(gòu)非常復(fù)雜。其中,,尤其是第1欄所列的控制傳輸是較為嚴(yán)謹(jǐn)與必須去實(shí)現(xiàn)的,。
根據(jù)上述不同封包的組合與搭配就可以執(zhí)行各種數(shù)據(jù)交易。但最重要的是,,數(shù)據(jù)交易的格式必須與前面所提及的4種傳輸類(lèi)型互相配合,。這是因?yàn)椴煌膫鬏旑?lèi)型就會(huì)執(zhí)行不同的數(shù)據(jù)交易。其中,,除了等時(shí)傳輸外,,控制傳輸、中斷傳輸與批量傳輸都以下列的3個(gè)階段來(lái)組成一個(gè)數(shù)據(jù)交易的動(dòng)作,。
等時(shí)傳輸卻只有包含如下所列的2個(gè)階段而已,。若等時(shí)傳輸在傳輸?shù)倪^(guò)程中發(fā)生錯(cuò)誤,不會(huì)重送一次,,所以也就不具有握手階段,。
因此,為了方便讀者的記憶與了解整個(gè)USB的通信協(xié)議,,在此以一個(gè)較簡(jiǎn)易的方式來(lái)向讀者介紹,。即是通過(guò)一個(gè)小口訣來(lái)介紹USB通信概念。這個(gè)口訣即是:5 4 2 3 3,,如圖所示,。
這個(gè)口訣相當(dāng)簡(jiǎn)單,有點(diǎn)像是通關(guān)秘訣,,而整個(gè)數(shù)字的順序即可串聯(lián)出USB的通信協(xié)議,。5,4,2即分別為每個(gè)封包(令牌,、數(shù)據(jù)與握手)的字段數(shù)目,,其后的3則為實(shí)現(xiàn)一個(gè)數(shù)據(jù)交易所需的3個(gè)封包階段(令牌、數(shù)據(jù)與握手),,而最后的3則為實(shí)現(xiàn)一個(gè)控制傳輸所需的3個(gè)數(shù)據(jù)交易層,。讀者可以對(duì)照表,且只須以這個(gè)簡(jiǎn)易的數(shù)字順序,,從下層到上層,,即可構(gòu)建出一個(gè)完整的控制傳輸。而以下,,先從USB封包類(lèi)型與其所包含的字段來(lái)談起,。
北京迪陽(yáng)公司推出市場(chǎng)上最暢銷(xiāo)的USB協(xié)議分析儀. 價(jià)格:5500元起
USB協(xié)議分析儀是USB產(chǎn)品的開(kāi)發(fā)和測(cè)試工具,它記錄在USB總線上發(fā)送和接收的數(shù)據(jù),,通過(guò)上位機(jī)軟件提供的強(qiáng)大的分析和篩選功能,,迅速定位數(shù)據(jù)中存在的錯(cuò)誤和問(wèn)題,從而改善USB產(chǎn)品的開(kāi)發(fā)質(zhì)量,,縮短開(kāi)發(fā)周期。是USB產(chǎn)品開(kāi)發(fā)人員和USB設(shè)備制造工廠理想的測(cè)試設(shè)備,。
HD-USB12 USB協(xié)議分析儀支持USB1.1低速及USB2.0全速設(shè)備,。
通過(guò)連接一臺(tái)全速USB集線器(Full-Speed USB Hub),HD-USB12 USB協(xié)議分析儀也可以支持USB2.0高速設(shè)備,。
功能特點(diǎn)
1,、 非侵入式全速/低速USB數(shù)據(jù)總線傳輸監(jiān)測(cè);
2,、 自動(dòng)識(shí)別全速/低速USB設(shè)備,;
3、 支持21ns分辨率數(shù)據(jù)時(shí)序顯示,;
4,、 支持實(shí)時(shí)數(shù)據(jù)過(guò)濾,方便迅速定位數(shù)據(jù),;
5,、 支持重復(fù)數(shù)據(jù)包壓縮。
6,、支持OTG (On-The-Go)——記錄及分析HNP 及 SRP協(xié)議, 包括捕獲VBus及D+/D-脈
7,、支持USB1.1 及 USB 2.0 低速、全速及高速數(shù)據(jù)通訊的采集
8,、支持 VBus電壓電流監(jiān)控,;
9、記錄容量不受限制——可以長(zhǎng)時(shí)間大容量數(shù)據(jù)通訊捕獲及記錄,數(shù)據(jù)存儲(chǔ)于系統(tǒng)硬盤(pán),;
10,、無(wú)干擾高阻抗端口——確保對(duì)USB端口通訊無(wú)干擾;
11,、支持任意設(shè)備類(lèi)——不但支持目前已有的設(shè)備類(lèi)還支持未知的設(shè)備類(lèi)協(xié)議分析,;
12、任意可編程觸發(fā)——用戶可以隨意設(shè)置多個(gè)觸發(fā)條件,;
硬件連接
上圖顯示了兩種不同類(lèi)型的硬件連接方式,。
方式一:
監(jiān)控計(jì)算機(jī)與USB主機(jī)使用同一臺(tái)PC機(jī);
在這種連接方式下,,如果監(jiān)控計(jì)算機(jī)上安裝有其它全速或低速USB設(shè)備,,監(jiān)控計(jì)算機(jī)向這些設(shè)備廣播的數(shù)據(jù)包將會(huì)被“HD-USB12協(xié)議分析儀”捕捉并顯示,這些不需要的數(shù)據(jù)可以使用過(guò)濾“IN(Orphaned)”數(shù)據(jù)包的方式濾除(詳見(jiàn)《操作手冊(cè)》4.2.4之第6小點(diǎn)),。
方式二:
監(jiān)控計(jì)算機(jī)使用獨(dú)立的PC機(jī),,USB主機(jī)使用另外一臺(tái)PC機(jī)或其它形式的USB HOST。
硬件連接注意事項(xiàng):
1,、監(jiān)控計(jì)算機(jī)端口必須使用USB2.0高速端口,,并直接連接至電腦主板。其長(zhǎng)度不應(yīng)超過(guò)2米,;
2,、從USB設(shè)備到USB主機(jī)的電纜長(zhǎng)度之和不應(yīng)超過(guò)5米;
3,、USB主機(jī)電纜最好直接連接至主機(jī)主板,,以減少數(shù)據(jù)采集時(shí)的傳輸錯(cuò)誤。
使用方法
要使用“HD-USB12協(xié)議分析儀”對(duì)某個(gè)USB設(shè)備進(jìn)行數(shù)據(jù)分析,,可按照以下步驟操作:
1,、將分析儀監(jiān)控端(MONITOR)用USB電纜連接至監(jiān)控計(jì)算機(jī)(監(jiān)控計(jì)算機(jī)的USB端口必須為2.0高速端口);
2,、將分析儀捕獲端端口USB I或端口USB II用USB電纜連接至USB主機(jī),,注意:此時(shí)暫不連接USB設(shè)備;
3,、在監(jiān)控計(jì)算機(jī)上運(yùn)行“HD-USB12”軟件,,在軟件的狀態(tài)欄上可以看到分析儀與監(jiān)控計(jì)算機(jī)的連接狀態(tài)。確保分析儀與監(jiān)控計(jì)算機(jī)已連接,;
4,、單擊工具條上的“設(shè)置”按鈕,設(shè)置合適的數(shù)據(jù)緩沖區(qū)限制及數(shù)據(jù)緩沖區(qū)增量,,緩沖區(qū)大小不應(yīng)超過(guò)系統(tǒng)可用內(nèi)存的50%,。默認(rèn)的數(shù)據(jù)緩沖區(qū)為128M,;默認(rèn)的數(shù)據(jù)緩沖區(qū)增量為2M;
5,、在“數(shù)據(jù)過(guò)濾區(qū)域”中設(shè)置過(guò)濾條件,,以濾除不需要的數(shù)據(jù)包。過(guò)濾條件設(shè)置完成后用鼠標(biāo)單擊工具欄的“過(guò)濾”按鈕啟動(dòng)過(guò)濾,;
6,、在軟件工具條上用鼠標(biāo)單擊“ 開(kāi)始”按鈕啟動(dòng)數(shù)據(jù)采集;
7,、將分析儀另一個(gè)捕獲端端口用USB電纜連接至需要分析的USB設(shè)備,,此時(shí)捕獲的USB設(shè)備總線數(shù)據(jù)將實(shí)時(shí)顯示在監(jiān)控計(jì)算機(jī)的軟件中。
單擊軟件工具條上“停止”按鈕可停止數(shù)據(jù)采集,。
可以在數(shù)據(jù)捕獲之前,,數(shù)據(jù)捕獲當(dāng)中或數(shù)據(jù)捕獲之后在“數(shù)據(jù)過(guò)濾區(qū)域”中設(shè)置不同的過(guò)濾條件,以快速獲得需要的數(shù)據(jù)包,。
選擇“文件”菜單的“保存”命令,,可將捕獲的數(shù)據(jù)保存為擴(kuò)展名是.USB的二進(jìn)制文件;
選擇“文件”菜單的“導(dǎo)出”命令,,可將過(guò)濾后的數(shù)據(jù)保存為擴(kuò)展名是.USB的二進(jìn)制文件,。
性能指標(biāo)
1、 監(jiān)控USB端口:,;USB2.0 High Speed
2,、 采集USB端口支持:USB2.0 Full Speed&USB1.1 Low Speed
3、 采集端消耗電流:<8mA
4,、兼容于所有USB2.0 的三種速度;
5,、于測(cè)試速度下自動(dòng)發(fā)現(xiàn)鏈接,;
6、USBbus 狀態(tài)與低階protocols 的量測(cè),;
7,、支持每個(gè)研發(fā)人員均可擁有一部的可負(fù)擔(dān)價(jià)格;
8,、非侵入式分析,;
9、小型但強(qiáng)健的封裝,,電源由USB 供給,;
10、絕佳的Off-Site 介入,;
11,、以高速USB2.0 連接實(shí)時(shí)地下載分析的數(shù)據(jù),;
12、可加附式(Scalable) 設(shè)計(jì)的硬件,;
13,、可顯示Transactions 與傳輸?shù)膶蛹?jí)(Transfers Layers);
14,、需求及描述元(Descriptor) 之高階解碼,;
15、功能強(qiáng)大的顯示過(guò)濾器,;
16,、可以多種形式(XML 、text ,、raw 等等)輸出分析過(guò)的數(shù)據(jù),;
17、有條理的明細(xì)表顯示,;
18,、有軟件開(kāi)發(fā)套件可利用;
19,、免費(fèi)的Viewer 軟件,。
USB協(xié)議分析儀在實(shí)際USB連通中的作用
在現(xiàn)代電子設(shè)備中,越來(lái)越多的使用USB接口,,不僅因?yàn)槠涫褂梅奖?,即插即拔,更因?yàn)槠鋬r(jià)格低廉,,協(xié)議開(kāi)放,,而廣泛使用在各種電子設(shè)備上,并且已經(jīng)發(fā)展為不可缺少的一種接口形式,。但USB接口的開(kāi)發(fā)過(guò)程中,,對(duì)于工程師來(lái)說(shuō)還是會(huì)遇到這樣或那樣的問(wèn)題,如何提高調(diào)試效率,,縮短研發(fā)周期,,就需要一種調(diào)試測(cè)試工具——USB協(xié)議分析儀。
USB協(xié)議分析儀
USB協(xié)議分析儀是協(xié)議層的分析工具,,是測(cè)試設(shè)備的一種,。對(duì)于USB這種高速串行總線來(lái)說(shuō),僅僅進(jìn)行物理層測(cè)試是遠(yuǎn)遠(yuǎn)不夠的,,由于在高低電平中寓含著豐富的指令,,傳遞著大量信息。所以對(duì)于USB傳輸協(xié)議就需要專(zhuān)用的USB協(xié)議分析儀來(lái)分析測(cè)試,,USB協(xié)議分析儀是按照標(biāo)準(zhǔn)的USB協(xié)議來(lái)分解數(shù)據(jù),,將包含有用信息的數(shù)據(jù)提取出來(lái),,并解釋這些數(shù)據(jù)的含義。隨著設(shè)備之間傳遞數(shù)據(jù)速度的不斷提高,,越來(lái)越多的高速串行總線被使用,,如SATA、SAS,、Ethernet,、FC等等,這些高速串行總線也同樣有其協(xié)議分析工具,。
為了讓讀者更好的了解USB協(xié)議分析儀的功能與用途,,本文列舉一個(gè)調(diào)試USB通信的小例子。
實(shí)驗(yàn)環(huán)境
如圖所示,,左側(cè)計(jì)算機(jī)安裝USB協(xié)議分析儀軟件,,加上USB協(xié)議分析儀主機(jī)構(gòu)成USB協(xié)議分析系統(tǒng)。DE2實(shí)驗(yàn)板作為USB設(shè)備,,右側(cè)計(jì)算機(jī)安裝應(yīng)用程序?qū)E2進(jìn)行操作,。我們主要關(guān)心安裝有應(yīng)用程序的計(jì)算機(jī)與DE2實(shí)驗(yàn)板之間的USB通信是否正常,并且希望了解這個(gè)通信過(guò)程是怎樣完成的,。
DE2實(shí)驗(yàn)板是教學(xué)過(guò)程中使用的開(kāi)發(fā)板,,針對(duì)USB通信接口部分有一片接口控制芯片,可通過(guò)加載固件程序控制USB數(shù)據(jù)傳輸,,對(duì)于USB開(kāi)發(fā)工程師來(lái)說(shuō),,編寫(xiě)固件程序是實(shí)現(xiàn)USB通信的重要部分,但很難驗(yàn)證固件程序是否正確,,是否按照工程師的意愿執(zhí)行,。在PC端安裝有應(yīng)用程序控制實(shí)現(xiàn)哪些功能,是在設(shè)備底層還需要編寫(xiě)驅(qū)動(dòng)程序,,確??蓪?shí)現(xiàn)USB通信,在生產(chǎn)研發(fā)中,,驅(qū)動(dòng)程序部分和應(yīng)用程序部分大多由軟件工程師完成,所以USB協(xié)議分析儀是硬件工程師和軟件工程師都需要的測(cè)試設(shè)備,。
USB協(xié)議分析儀是按照USB協(xié)議,,將總線上的信號(hào)翻譯成數(shù)據(jù),再將數(shù)據(jù)逐層解析,,分析其傳輸數(shù)據(jù)的含義,。在這個(gè)過(guò)程中,可將USB傳輸過(guò)程中的錯(cuò)誤明確的指示出來(lái),,用戶可根據(jù)上下文關(guān)系找到問(wèn)題所在,。
分析過(guò)程
在本實(shí)驗(yàn)中,,如圖所示,PC端應(yīng)用程序的主要功能是:按下ADD鍵,,給DE2發(fā)送加1的指令,,顯示在DE2實(shí)驗(yàn)板的液晶顯示屏上;按下CLEAR鍵,,給設(shè)備發(fā)送清零的指令,,DE2實(shí)驗(yàn)板的液晶顯示屏上的顯示為00;通過(guò)這個(gè)簡(jiǎn)單的應(yīng)用程序,,我們可以了解實(shí)驗(yàn)板上USB固件程序,,計(jì)算機(jī)上USB驅(qū)動(dòng)程序是否可以正確工作。
如圖所示,,在應(yīng)用程序的源程序中,,點(diǎn)擊ADD,發(fā)送的數(shù)據(jù)為“AA AB AC AD AE AF A0 A1”,,這個(gè)就是我們要在USB通信過(guò)程中需要傳輸?shù)臄?shù)據(jù),。傳輸了這一組數(shù)據(jù)也就表示傳輸了ADD指令。
點(diǎn)擊ADD鍵發(fā)送的指令數(shù)據(jù):
AA AB AC AD AE AF A0 A1
下面,,我們用Ex200來(lái)捕獲發(fā)送的ADD指令數(shù)據(jù)以及其前后過(guò)程,。分析捕捉到的數(shù)據(jù)搜索到DATA0,DATA1數(shù)據(jù)包內(nèi)容皆為“AA AB AC AD AE AF A0 A1”,,與源代碼一致,。如圖所示,為DATA0數(shù)據(jù)包的內(nèi)容,。我們每次按下ADD控件,,就可以捕獲到這一組數(shù)據(jù),這說(shuō)明USB通信沒(méi)有問(wèn)題,,可以進(jìn)行下一步的大數(shù)據(jù)量傳輸與通信,。
又如圖所示,在應(yīng)用程序的源程序中,,點(diǎn)擊CLEAR,,發(fā)送的數(shù)據(jù)為“55 55 5C 5D 5E 5F 50 51”,這個(gè)就是我們要在USB通信過(guò)程中需要傳輸?shù)臄?shù)據(jù),。傳輸了這一組數(shù)據(jù)也就表示傳輸了CLEAR指令,。:
點(diǎn)擊CLEAR鍵發(fā)送的指令數(shù)據(jù):
55 55 5C 5D 5E 5F 50 51
我們用Ex200來(lái)捕獲發(fā)送的CLEAR指令數(shù)據(jù)以及其前后過(guò)程。分析捕捉到的數(shù)據(jù)搜索到DATA0,,DATA1數(shù)據(jù)包內(nèi)容皆為“55 55 5C 5D 5E 5F 50 51”,,與源代碼一致。如圖所示,,為DATA0數(shù)據(jù)包的內(nèi)容,。我們每次按下CLEAR控件,,就可以捕獲到這一組數(shù)據(jù)。
另外,,USB協(xié)議分析儀是一種很好的學(xué)習(xí)USB協(xié)議的工具,,如圖所示,通過(guò)USB協(xié)議分析儀可分析并了解USB設(shè)備枚舉過(guò)程,,在教學(xué)中可以生動(dòng)地說(shuō)明USB通信傳輸過(guò)程,,在實(shí)際研發(fā)中,也可提高效率,,縮短開(kāi)發(fā)周期,。
小結(jié)
USB協(xié)議分析儀是在USB開(kāi)發(fā)過(guò)程中必不可少的工具,在研發(fā)過(guò)程中起到事半功倍的效果,,隨著USB通信接口的廣泛使用,,USB協(xié)議分析儀也會(huì)成為更普及的測(cè)試儀器。經(jīng)過(guò)一段時(shí)間的發(fā)展,,USB協(xié)議分析儀也趨于成熟,,主機(jī)體積更加小巧,不需要外加電源即可工作,,軟件界面更加人性化,,讓人一目了然。USB協(xié)議從1.0到2.0,,再到最新的USB3.0,,協(xié)議分析儀也會(huì)追隨USB協(xié)議發(fā)展的腳步,支持所有版本的測(cè)試,。