USB設備的調試與測試技巧
USB設備的調試與測試技巧
SB是一種靈活的高速接口技術,可以替代計算機中原來的串行口和并行口,但靈活性高也意味著更加復雜,使得USB設計調試以及設計完成后的驗證都比較困難。本文首先對USB規(guī)范做一簡要介紹,然后詳細討論USB產品在調試與規(guī)范驗證方面的一些實用技巧。
通用串行總線(USB)是一種很流行的接口,可用于那些與個人計算機進行通信的設備。近年來,所有新PC機和Mac機都支持USB技術,這種接口有足夠的靈活性,既可用于驅動器和鍵盤之類的普通外圍設備,也可用于定制按特殊用途設計的外設。此外USB還有一些對用戶和開發(fā)人員都很有吸引力的特性,如從總線向設備提供電源、易于通過集線器進行總線擴展,以及主計算機對設備能自動識別等等。
但USB的超強性能也意味著它的接口要比它所替代的老式串行和并行接口都復雜,每個USB設備必須響應總線上的一系列標準請求和各種事件。大多數(shù)總線交流需要雙向通信,而且延遲必須很小,總線上的數(shù)據(jù)都經過編碼,單單只用示波器或邏輯分析儀觀察不是很容易。工程技術人員可以選擇不同的工具與技術或采用不同設計,簡化并加快USB的開發(fā)和故障排除。
USB規(guī)范
圖1:Windows的設備管理器會顯示出所有枚舉成功的USB設備。
USB規(guī)范是由英特爾、微軟和另外幾個PC及外設公司共同提出的,在USB應用者論壇(USB-IF)的網站上提供了供開發(fā)人員使用的規(guī)范文本、相關信息及工具(詳情可訪問www.usb.org)。
每個總線上有一個主控制器,用來控制與總線上面設備的通信。為了給設備提供更大帶寬,一臺計算機可以有多個主控制器,分別控制其自己的總線。
USB支持三種總線速度:低速1.5Mbps、全速12Mbps和高速480Mbps。高速模式是2000年發(fā)布的規(guī)范2.0版本新增加的,WindowsXP是支持USB2.0的第一個Windows系統(tǒng),微軟公司允諾在Windows2000和WindowsME中對USB2.0提供更新支持,而其它操作系統(tǒng)以后也將逐漸支持USB2.0。
對于嵌入式PC操作系統(tǒng),WindowsCE也支持USB。大多數(shù)WindowsCE計算機作為USB主機使用,WindowsCE3.0中還包括用于Cypress/ScanLogic公司SL11主/從控制器的驅動程序。有了這些驅動程序(或者用于其它控制器的類似驅動程序),一個WindowsCE計算機還可以作為USB外設使用。
USB的多功能性主要歸功于它的4種傳輸類型,每一種類型適用于不同的用途。其中控制傳輸模式用于傳輸枚舉過程中的請求,也用于發(fā)送請求至設備和接收答復(可選);中斷傳輸模式用于鍵盤鼠標之類由主機定期發(fā)出請求和發(fā)送數(shù)據(jù)的設備;批傳輸模式用在諸如打印機和掃描儀之類的設備中,這類設備要求傳輸速度快,但在總線忙碌時傳輸數(shù)據(jù)可以等待;同步傳輸用于實時伴音和其他應用,這類應用對時序要求很高,但允許有偶爾的錯誤。
在自舉或者當某個設備連接到總線上時,設備集線器就向主機報告連接情況,在一個稱為枚舉的過程中,主機發(fā)送系列請求以了解連接的設備并與之建立通信,設備則以所謂描述符數(shù)據(jù)結構返回應答信息。Windows的設備管理器將描述符內的信息與PC內部INF文檔進行比較,從中找出最佳匹配,然后指定一個設備驅動程序,這樣應用程序就能夠訪問該設備了。
所有設備必需遵循USB對功率管理的要求,包括限制設備吸收的總線電流和檢測什么時候進入低功耗掛起狀態(tài),允許的電流量取決于器件描述符中的信息。
目前市面上有很多帶USB功能的設備控制器芯片可供選用,有的是帶一個USB口的微控制器,有的是非CPU控制器,上面帶有一個USB口和一個用于與普通微控制器通信的串口或并口。大多數(shù)具有USB功能的微控制器都有C語言編譯器,如果你熟悉某個微控制器系列,那么它提供的USB功能變量將非常有用。測試USB設備的通信功能包括幾個階段,第一個目
標是成功枚舉,如果設備不能枚舉,那么接口什么事也做不了。其它測試包括讓設備執(zhí)行預定的任務(例如讀出或寫入文檔至一個USB設備),以及驗證該設備是否遵循功率管理規(guī)則。
圖2:從集線器上收到的設備描述符代碼。
USB通信調試可在三個位置進行,即在PC主機、設備和線纜等處,每個方案都有其自己的優(yōu)點。
在主機上進行調試
在主機處,可以驗證一個設備是否枚舉成功并能執(zhí)行預定的功能。在主機檢測到問題后,要找到問題根源常常還需要檢查設備本身硬件或線纜中的總線通信流量情況。
當USB設備連接到主機后,Windows的設備管理器(圖1)會進行快速檢查,看設備枚舉是否有問題。圖標列表上的驚嘆號表示與該設備通信或尋找驅動程序時有問題,而圖標上的X號則表示設備存在但己不起作用。
為精確地看到主機在枚舉時收到什么信息,可以使用USBCheck應用軟件包或者新的USB指令驗證器工具,USB-IF網站上免費提供了這兩種工具。USBCheck能觀察描述符、發(fā)送控制請求、觀察結果以及在集線器和HID(擬人接口設備)上對設備做進一步測試。
USBCheck的設備框架測試能讀出描述符并發(fā)送標準請求,這些測試作為初始檢查非常有用,此時Windows從設備上檢索到它所想要的信息。圖2顯示了USBCheck從集線器接收到的設備描述碼。主機對USB設備枚舉成功后,應用軟件可以按預定用途對設備進行測試,Windows設備驅動程序可通過組合API函數(shù)如ReadFile()、WriteFile()或DeviceIoControl()等使應用軟件訪問USB設備。有些不同等級的設備還有額外支持,如應用軟件能以訪問其它驅動器的同樣方法訪問USB驅動器,應用軟件不必了解驅動器是使用USB還是其它接口,因為這些細節(jié)在更低一級中進行處理。對于許多設備來講,USB等級規(guī)范定義了設備的預定功能及固件響應,如HID、大容量存貯器件和用于靜止圖像捕獲的設備等。
當出現(xiàn)錯誤時,Windows返回的錯誤信息通常提供不了太多幫助。例如向HID類設備發(fā)送WriteFile()函數(shù)失效時,返回的錯誤一般是“CRCError”,而造成傳輸失效的任何固件問題都會得到這個錯誤信息。通常排查錯誤要是從CRC計算著手基本上是找不到什么的,跟蹤這類問題出現(xiàn)的原因常常需要在設備或總線上進行調試。
認證測試USB應用者論壇和微軟公司可為USB設備和主機軟件開發(fā)人員提供測試,通過測試的產品可以在上面使用USB標識或者MicrosoftWindows標識。
為了能在多種條件下徹底測試產品,USB-IF成員可以將自己的設備在USB-IF指定的認證程序中進行登記,一年登記費用為2,500美元,其中包括程序運行費用,以及其它支持USB產品開發(fā)和在市場上推廣USB活動的費用。當某個設備符合認證程序的標準時,USB-IF將認為該設備“測量結果可以接受”,然后會把它加到認證設備總表中。在收到簽署的許可協(xié)議和付款后,USB-IF將授權這一設備可以使用USB標識。
認證程序有兩項評判標準,分別是檢查對照表和認證測試。檢查對照表包括一些與產品及其功能有關的問題,檢查表可以提供給供應商,外圍設備、集線器、帶USB主機系統(tǒng)和線纜等不同供應商有不同的對照表,有些產品還需要多個檢查表。外圍設備檢查表覆蓋了機械設計、設備狀態(tài)與信號以及工作電壓和功耗,每個問題都相應附有標準規(guī)范中的對應頁面作為參考,可以從中找到更多信息。從USB-IF的網站上可得到這些檢查表。
nbs
p; 圖3:帶位填充的不歸零倒置編碼。
為幫助通過電氣測試,USB-IF還提供了一個USBHSET工具,其中含有軟件和測試步驟。另外也可以使用專業(yè)測試服務咨詢機構VIEngineering的USB預認證測試儀,這是一個硬件單元,能執(zhí)行測試文件中的所有電氣測試,其中包括在LabView下運行的軟件,可以觀察到眼圖、上升與下降次數(shù)、截面電壓、浪涌電流及其它更多內容。
為幫助驗證USB規(guī)范第八章中所討論協(xié)議的響應情況,位于比利時的PIMC公司提供了一個名為Ch8ck的工具。Ch8ck執(zhí)行的測試包括向并不支持的方向或者傳輸類型發(fā)送一個信息包ID,然后檢查中斷端點的響應,以及要求CRC值時的位填充情況。當認為產品能通過檢查表上各項內容時,就可以準備進行認證測試了。USB-IF對一些機構提供資助,可以用不同類型的硬件測試設備,每個機構都有很多供應商和產品。你可以與主機硬件供應商一起安排專門測試,也可以參與USB-IF的“plugfests”測試,這個測試將有盡可能多的供應商把他們的設備連到一臺主機上,觀察所有設備是否可以相互和平共處。USB-IF也授權一些私人實驗室進行認證測試。
認證測試程序文件對測試有詳細描述,包括對標準請求的響應、功率的消耗和分配、信號質量和協(xié)同性等。其中協(xié)同性測試將你的產品與其它多個USB外圍設備連在一個系統(tǒng)中并使用多種軟件,以模擬用戶使用情況。
設備應該工作正常,不會出現(xiàn)任何設備檢測不到錯誤或者系統(tǒng)崩潰、死機或重新自舉等錯誤。設備不僅要在一條只連接一個設備的總線上通過測試,而且也應該在一條連有多種集線器和其它通用外圍設備的總線上通過測試。
如果設備通過認證測試,就有資格使用USB標識,為取得標識使用權,高速設備還必須在全速模式下測試所有功能。此外非USB-IF成員還須支付額外一項管理費,數(shù)額為每兩年1,500美元。
對于連接在PC上的設備,微軟公司鼓勵采用Windows硬件質量實驗室(WHQL)的測試方案,通過這些測試的設備可以使用MicrosoftWindows標識,并將列入到微軟公司的硬件兼容表中,同時微軟公司也會將設備的驅動程序加入到Windows驅動程序庫中。
微軟公司提供了用于硬件和設備驅動程序的測試組件,你可以下載所需組件并對你的設備進行測試。當你相信你的設備能夠通過所有測試時,就可以提交一份材料給授權的測試機構,材料中應包括設備、驅動程序和相關文檔、測試記錄以及相應的費用。在www.microsoft.com/hwtest網站中可以找到有關WHQL的更多信息。
在設備上進行調試
在設備上的調試與任何嵌入式系統(tǒng)調試類似,提供帶USB功能微控制器的供應商同時也提供了帶監(jiān)控程序的開發(fā)系統(tǒng),監(jiān)控程序可以設置斷點、單步運行、跟蹤模式和其它自診斷工具。
USB通信所需的固件支持數(shù)量取決于控制器芯片的結構,從芯片供應商或其它地方獲得高品質固件也很重要。
MCCI公司有一個免費的USB資源編輯器,有助于將設備描述符信息翻譯成C語言的數(shù)據(jù)初始化結構,并將其存在設備的程序存儲器中,MCCI還提供了USBDataPump便攜式固件包和安裝實用程序。
圖4:協(xié)議分析儀采集到的總線通信數(shù)據(jù)。
用PC作為模擬的USB設備是專用開發(fā)組件的一個低成本替代方案,可對最終駐留在嵌入式設備中的代碼進行初始測試。如DeVaSys公司的USBLPT-PD11板,上面帶有飛利浦PDIUSBD11USB控制器,控制器的I2C接口與PC并口進行通信,軟件使用DOS版BorlandTurboC語言控制被仿真設備。
使用這一方法,你可以編寫PC應用,使最終控制設備的固件執(zhí)行一些功能,包括在設備枚
舉和響應其它任務時發(fā)送描述符。C語言編寫的PC軟件對設備是可移植的,不過每個控制器都有芯片專用操作,因此針對最終產品還需要作一些修改。
在線纜上進行調試
有些時候,僅僅在主機和設備上進行調試還不夠。在主機上,能夠觀察和控制的信息要經過主機控制器及其驅動程序過濾;而在設備上,固件又看不到硬件管理的底層通信。為填補這一空白,需要觀察線纜中發(fā)送的是什么。
如果用示波器或邏輯分析儀來觀察USB通信,你將會發(fā)現(xiàn)讀取位的狀態(tài)并不像將電壓與邏輯電平匹配那么容易。在總線上的數(shù)據(jù)是用帶有位填充的不歸零倒置(NRZI)代碼進行編碼的,這種編碼能使接收器與發(fā)送器保持同步,不需要每個字節(jié)都發(fā)送時鐘信號或開始與結束位等額外的工作。
NRZI不是采用電壓方式定義邏輯0和邏輯1,而是用電壓改變代表邏輯0,電壓保持不變代表邏輯1。如圖3所示,每個邏輯0都會使前面一個狀態(tài)發(fā)生改變,而每一個邏輯1則不發(fā)生狀態(tài)改變,數(shù)據(jù)首先發(fā)送最低有效位。
之所以要用位填充是因為接收器在切換時要同步,如果數(shù)據(jù)全部為0會有許多轉變,但如果數(shù)據(jù)中有一長串1,由于缺少轉變會使接收器失去同步。
例如數(shù)據(jù)有6個連續(xù)的1,發(fā)送器就在第6個1后面填充或插入一個0(用一個切換來表示),這樣就保證每7個位至少有一個轉換,接收器檢測到每6個連續(xù)1以后的任意位都會丟棄掉。隨機數(shù)據(jù)的位填充開銷僅為0.8%,即每125個數(shù)據(jù)位有1個填充位。
幸運的是,每個端口的USB硬件會進行所有編碼和解碼工作,所以設備開發(fā)人員和編程人員不必擔心這一點。觀察數(shù)據(jù)的最好方法是使用協(xié)議分析儀,這種分析儀可收集數(shù)據(jù),然后進行解碼并以有用的格式顯示出來。你可以看到在枚舉時發(fā)生了什么,檢測和檢查協(xié)議及信令錯誤,觀察任何傳輸中的數(shù)據(jù),或者關注通信中你所希望的任何方面。
任何分析儀都可以執(zhí)行USB通信解碼和顯示結果這類基本任務,只是在用戶接口和顯示信息的方式上有所區(qū)別,不是所有分析儀都支持高速模式。圖4顯示了用Catalyst的SBAE-20總線分析儀-操作儀采集的數(shù)據(jù)。控制分析儀和觀察通信數(shù)據(jù)的用戶界面可以是一臺PC或邏輯分析儀,與PC相連的分析儀可使用USB口、并口、以太網口或ISA板上接口連接。如果你有一臺通用邏輯分析儀,那么用USB分析儀與之相連會比其它方案更便宜,如CrescentHeartSoftware的分析儀可與Tektronix的相連,而FuturePlus的分析儀可與Agilent的相連。測試設備與軟件
除了通過應用程序訪問設備外,進一步對總線通信和信令進行控制在測試和調試中也是很重要的,同樣也有一些儀器可做到這一點ComputerAccessTechnology的通信發(fā)生器可對總線通信和事件進行精確控制,你可以在PC上運行他們的軟件通過并口連接來控制通信發(fā)生器,可生成各種合法和非法信息和總線狀態(tài),而且還能控制每個位的狀態(tài)和位寬度。
Transdimension的USB主機/設備操作儀和Catalyst的SBAE-20都既具有協(xié)議分析儀功能,又具有在總線上產生通信數(shù)據(jù)的主機功能,SBAE-20其它功能還包括測量涌入和掛起狀態(tài)下的電流。
RPMSystems的Root1USB功能驗證適配器能執(zhí)行許多主機和根集線器功能,Root1可枚舉相連接的設備,對其它通信進行初始化并執(zhí)行各種測試,包括控制總線電壓。
由于有很多新供應商進入到該領域,而原來的供應商也在擴展和改進他們的產品,因此測試工具的數(shù)量和種類在過去數(shù)年已有所增加,隨著USB設備日益普及,這個趨勢肯定還會繼續(xù)下去。對任何開發(fā)項目來講,對少量工具進行投資并學會如何很好使用這些工具將會在長期運行中節(jié)約更多的時間和資金。
評論