實(shí)時(shí)USB類級解碼
背景技術(shù):通用串行總線(USB)分析器由USB裝置、軟件(例如,驅(qū)動程序)、固件等的制造商及其它開發(fā)人員用于監(jiān)測和分析通用串行總線(USB)上的通信。例如,可監(jiān)測目標(biāo)USB裝置和該裝置經(jīng)由目標(biāo)主機(jī)上的USB端口與其連接的目標(biāo)主機(jī)之間的通信,以確保該裝置按照可適用USB標(biāo)準(zhǔn)和協(xié)議與目標(biāo)主機(jī)正確地通信,而且反過來也是。硬件USB分析器通常包括:具有第一組連接器的獨(dú)立或其它硬件裝置,該組連接器使分析器能夠被連接以至于能夠觀測目標(biāo)USB裝置與目標(biāo)主機(jī)之間的業(yè)務(wù);用于將在被監(jiān)測的USB連接上觀測到的信號解碼為USB分組的硬件和/或固件;以及使分析器能夠連接到分析PC并且向分析PC進(jìn)行轉(zhuǎn)發(fā)的硬件、邏輯和/或外部連接器。USB基本規(guī)范定義管理USB總線上的通信的協(xié)議。裝置類代碼被定義成使USB裝置能夠?qū)⒆约鹤R別為一個(gè)或多個(gè)裝置類的成員,例如,通過將相關(guān)聯(lián)的USB類代碼和/或裝置描述符信息包含在該裝置在初始連接時(shí)傳送給主機(jī)的“枚舉”信息中。裝置類可具有一個(gè)或多個(gè)子類級,以及這些一個(gè)或多個(gè)子類級的每個(gè)可具有與其相關(guān)聯(lián)的一個(gè)或多個(gè)不同協(xié)議。對于每個(gè)USB裝置類,類規(guī)范定義類特定協(xié)議。以這種方式,例如,與獨(dú)立于USB裝置開發(fā)的USB驅(qū)動程序應(yīng)當(dāng)是隨裝置可使用的,只要均符合可適用USB規(guī)范中所定義的相同類和/或裝置特定協(xié)議。附圖說明在以下詳細(xì)描述和附圖中公開了本發(fā)明的各個(gè)實(shí)施例。圖1是示出硬件USB分析器的實(shí)施例的框圖。圖2是示出USB分析器的實(shí)施例的框圖。圖3是提供可與USB數(shù)據(jù)相關(guān)聯(lián)的各個(gè)語義級的概念表示的框圖。圖4是示出分析PC的實(shí)施例的框圖。圖5是示出生成分析流的過程的實(shí)施例的流程圖。圖6是示出對所監(jiān)測USB數(shù)據(jù)進(jìn)行解碼和顯示的過程的實(shí)施例的流程圖。圖7是示出根據(jù)類級上下文來生成超時(shí)的過程的實(shí)施例的流程圖。圖8是示出被解碼到類級的所監(jiān)測USB數(shù)據(jù)的的實(shí)施例的框圖。圖9是示出循環(huán)緩沖器的實(shí)施例的框圖。圖10A是示出用于保存枚舉和相關(guān)信息的過程的實(shí)施例的流程圖。圖10B是示出用于保存枚舉和相關(guān)信息的過程的實(shí)施例的流程圖。圖10C是示出用于保存枚舉和相關(guān)信息的過程的實(shí)施例的流程圖。圖11是示出用于實(shí)時(shí)類級解碼的過程的實(shí)施例的流程圖。圖12是示出用于顯示USB類級信息的過程的實(shí)施例的流程圖。圖13是示出用于USB事務(wù)級信息的過程的實(shí)施例的流程圖。圖14是示出在類級與事務(wù)級視圖之間進(jìn)行切換的過程的實(shí)施例的狀態(tài)圖。圖15是示出在類級與事務(wù)級視圖之間進(jìn)行切換的過程的一個(gè)實(shí)施例的狀態(tài)圖。圖16是示出類級視圖的實(shí)施例的框圖。圖17是示出事務(wù)級視圖的實(shí)施例的框圖。具體實(shí)施方式本發(fā)明能夠采用許多方式來實(shí)現(xiàn),包括實(shí)現(xiàn)為過程、設(shè)備、系統(tǒng)、物的組合、在計(jì)算機(jī)可讀存儲介質(zhì)上具體實(shí)施的計(jì)算機(jī)程序產(chǎn)品和/或如配置成執(zhí)行與處理器耦合的存儲器上存儲的和/或由存儲器提供的指令的處理器的處理器。在本說明書中,這些實(shí)現(xiàn)或者本發(fā)明可采取的任何其它形式可稱作技術(shù)。一般來說,所公開過程的步驟的順序在本發(fā)明的范圍之內(nèi)可以改變。除非另外說明,描述為被配置成執(zhí)行任務(wù)的如處理器或存儲器的組件可實(shí)現(xiàn)為在給定時(shí)間暫時(shí)被配置成執(zhí)行該任務(wù)的通用組件或者被制造成執(zhí)行該任務(wù)的專用組件。本文所使用的術(shù)語‘處理器’指的是被配置成處理如計(jì)算機(jī)程序指令的數(shù)據(jù)的一個(gè)或多個(gè)裝置、電路和/或處理核心。下面連同附圖一起來提供本發(fā)明的一個(gè)或多個(gè)實(shí)施例的詳細(xì)描述,附圖示出本發(fā)明的原理。結(jié)合這樣的實(shí)施例來描述本發(fā)明,但是本發(fā)明并不局限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利要求書來限定,并且本發(fā)明包含許多備選、修改和等效物。在以下描述中陳述大量具體細(xì)節(jié),以提供對本發(fā)明的透徹了解。提供這些細(xì)節(jié)是出于示例的目的,并且本發(fā)明可在沒有這些具體細(xì)節(jié)的部分或全部的情況下按照權(quán)利要求書來實(shí)施。為了清楚起見,沒有詳細(xì)描述與本發(fā)明相關(guān)的技術(shù)領(lǐng)域中已知的技術(shù)資料,以免不必要地模糊本發(fā)明。公開了實(shí)時(shí)USB類級解碼。在各個(gè)實(shí)施例中,硬件USB分析器被配置成接收和監(jiān)測例如目標(biāo)USB裝置與相關(guān)聯(lián)目標(biāo)主機(jī)之間的USB通信。分析器向分析個(gè)人計(jì)算機(jī)(PC)或其它分析計(jì)算機(jī)提供分析流,例如,分析流包含在目標(biāo)裝置與目標(biāo)主機(jī)之間所發(fā)送的所觀測USB分組。分析PC運(yùn)行分析軟件,分析軟件被配置成使PC能夠?qū)⑺O(jiān)測USB業(yè)務(wù)解碼到類級,并且經(jīng)由顯示裝置向用戶顯示裝置類級信息,如在目標(biāo)裝置與目標(biāo)主機(jī)之間所發(fā)送的類級指令和命令。在一些實(shí)施例中,如果分析器在所規(guī)定時(shí)間之內(nèi)尚未觀測到分組,則分析器向分析PC輸出周期的“無活動”分組或其它報(bào)告。在PC上運(yùn)行的分析軟件使用與“無活動”分組相關(guān)聯(lián)的時(shí)間戳或其它時(shí)間以及目標(biāo)裝置與目標(biāo)主機(jī)之間的上一次觀測到分組的時(shí)間連同對類級狀態(tài)(例如,掛起并且尚未完成的類級交互,如從“大容量存儲”裝置“讀取”)的認(rèn)知一起以有效且及時(shí)的方式來檢測和報(bào)告超時(shí)。在一些實(shí)施例中,分析器在所監(jiān)測分組被接收時(shí)將其存儲在循環(huán)緩沖器中。一旦緩沖器已滿,則當(dāng)新分組被接收并被解碼時(shí),覆寫較舊的分組。在接收“捕獲”命令或其它指示時(shí),將緩沖器的內(nèi)容在“捕獲”流中提供給分析PC。在一些實(shí)施例中,在分析器處接收到分組時(shí),分析器確定它們是否與裝置的初始枚舉和/或如裝置描述符數(shù)據(jù)的后枚舉信息相關(guān)聯(lián)。這樣的信息需要是已知的,并且在一些實(shí)施例中用于實(shí)現(xiàn)類級解碼;然而,可在接收到枚舉信息之后(相對)長時(shí)間啟動“捕獲”。在一些實(shí)施例中,例如在被覆寫之前,枚舉記錄被復(fù)制和加索引,以確保它們(或者從其中得出的相關(guān)聯(lián)信息)對于以后用于實(shí)現(xiàn)后續(xù)“捕獲的”流的類級解碼將是可用的。在一些實(shí)施例中,分析軟件被配置成按照如下方式來顯示信息:使得用戶可能不感興趣的分組以防止用戶看到的方式將不會顯示,例如,在適當(dāng)緊湊和/或同時(shí)可見的顯示區(qū)中查看感興趣的相關(guān)分組序列的方式來顯示用戶可能不感興趣的分組??赡懿桓信d趣的分組的示例是周期地發(fā)送以標(biāo)記新幀開始的連續(xù)“幀開始”(SOF)分組和在目標(biāo)主機(jī)與目標(biāo)裝置之間的連續(xù)“IN”和“NAK”分組對的交換,即當(dāng)主機(jī)在裝置無論什么原因而沒有數(shù)據(jù)向主機(jī)發(fā)送的時(shí)期期間周期地輪詢裝置的數(shù)據(jù)時(shí)所交換的分組。在各個(gè)實(shí)施例中,對不是特別感興趣的這樣的分組進(jìn)行編組和顯示的方式可取決于選擇了類級視圖還是選擇了事務(wù)級視圖而改變。圖1是示出硬件USB分析器的實(shí)施例的框圖。在所示示例中,USB分析器102被配置成監(jiān)測目標(biāo)USB裝置104與目標(biāo)主機(jī)106之間的USB連接。第一USB纜線/連接器108將目標(biāo)USB裝置104連接到分析器102;以及第二USB纜線/連接器110將分析器102連接到目標(biāo)主機(jī)106。目標(biāo)USB裝置的示例包括但不限于打印機(jī)、大容量存儲裝置以及如鼠標(biāo)或鍵盤的人機(jī)接口設(shè)備(HID)。采用圖1所示方式來連接,分析器102接收由目標(biāo)USB裝置傳送給目標(biāo)主機(jī)或者由目標(biāo)主機(jī)傳送給目標(biāo)裝置的USB總線信號,使分析器能夠監(jiān)測雙向通信。分析器通常被配置成被動地監(jiān)聽,以使得目標(biāo)主機(jī)和目標(biāo)裝置認(rèn)為它們之間具有直接USB連接。分析器102經(jīng)由分析流輸出連接112向分析PC(或其它計(jì)算機(jī))114來提供分析流。在一些實(shí)施例中,連接112本身是分析器102與分析PC114之間的USB連接。在各個(gè)實(shí)施例中,分析PC114和目標(biāo)主機(jī)106可包括相同的物理系統(tǒng),例如,裝置104經(jīng)由分析器102以及連接108和110與其連接的PC。圖2是示出USB分析器的實(shí)施例的框圖。在所示示例中,圖1的硬件USB分析器102被示出為包括USB分組解碼器202,USB分組解碼器202被配置成接收和解碼圖1中所示的目標(biāo)裝置與目標(biāo)主機(jī)之間發(fā)送的信號。在圖2所示的示例中,箭頭指示對由目標(biāo)裝置104經(jīng)由連接108所發(fā)送的預(yù)計(jì)送往目標(biāo)主機(jī)106的分組的觀測,目標(biāo)主機(jī)106經(jīng)由連接110連接到分析器102;然而,從主機(jī)發(fā)送給裝置的分組也會被接收和解碼。USB分組解碼器202向分析流生成器204提供所觀測分組,分析流生成器204將所觀測分組包括在作為連接112上的輸出提供給分析PC的分析流中。在一些實(shí)施例中,分析器102將分析器時(shí)間戳附加在經(jīng)由連接112所發(fā)送的每個(gè)所觀測分組上。在所示示例中,時(shí)間戳生成器和邏輯206生成并且提供時(shí)間戳。在一些實(shí)施例中,在所監(jiān)測總線(例如這個(gè)示例中的108、110)上的不活動的時(shí)期期間,分析流生成器被配置成例如周期地輸出“無活動”或其它周期分組以指示在相關(guān)聯(lián)的時(shí)期期間在所監(jiān)測總線上沒有觀測到分組。例如,在一些實(shí)施例中,分析器時(shí)間戳包括16位,以及在所監(jiān)測總線上沒有所監(jiān)測分組被看到的情況下每次時(shí)間戳翻轉(zhuǎn)時(shí)發(fā)送“無活動”分組。圖3是提供可與USB數(shù)據(jù)相關(guān)聯(lián)的各個(gè)語義級的概念表示的框圖。在所示示例中,多層概念表示300包括電信號層302。在物理導(dǎo)線和連接器級,USB裝置和目標(biāo)主機(jī)在導(dǎo)線上發(fā)送和接收信號。例如,USB1.0或2.0纜線具有4條導(dǎo)線,兩條用于電力(Vcc、GND)以及兩條用于數(shù)據(jù)(D+、D-)。對總線上的信號進(jìn)行解碼以識別對應(yīng)分組(304)。在所規(guī)定序列中交換的一系列分組包括事務(wù)(306)。例如,主機(jī)用以從裝置輪詢和接收數(shù)據(jù)的“IN”事務(wù)可包括由主機(jī)發(fā)送給裝置的“IN”分組、由裝置發(fā)送回主機(jī)的“DATA”分組以及從主機(jī)至裝置以確認(rèn)數(shù)據(jù)的接收的“ACK”分組。(如果裝置沒有數(shù)據(jù),則裝置用“NAK”分組來響應(yīng)IN分組,并且那將是特定交換的結(jié)束。)另一個(gè)示例是“OUT”事務(wù)(從主機(jī)至裝置的OUT分組、接著將數(shù)據(jù)從主機(jī)提供給裝置的DATA分組,最后接著從裝置至主機(jī)的確認(rèn)數(shù)據(jù)的接收的ACK分組)。USB類使另一個(gè)語義級能夠被理解和使用。在類級,以及取決于類、子類等,一組一個(gè)或多個(gè)相關(guān)事務(wù)可包括類級傳遞、命令、指令等。例如,USB裝置在“大容量存儲”類中的情況下,“讀取”傳遞可包括用于發(fā)起操作的“命令傳輸”、傳遞數(shù)據(jù)的“數(shù)據(jù)傳輸”以及標(biāo)記傳遞的完成和同步狀態(tài)的“狀態(tài)傳輸”。這些“傳輸”的每個(gè)又可包括一個(gè)或多個(gè)事務(wù)。例如,數(shù)據(jù)傳輸可包括一系列IN事務(wù),其中的每個(gè)用于向主機(jī)遞送待讀取的所請求數(shù)據(jù)的一部分。如前所述,一系列一個(gè)或多個(gè)事務(wù)的類級含意通常在類或類相關(guān)的規(guī)范中定義。圖3中,表示了1至n(308)的多個(gè)類。在一些實(shí)施例中,例如在連接到可兼容主機(jī)的特定配置的裝置的上下文中,可應(yīng)用一個(gè)或多個(gè)類、子類和/或類和/或子類特定協(xié)議和/或配置。在一些實(shí)施例中,類、子類、協(xié)議和/或裝置描述符信息可由裝置來提供和/或在初始連接和/或啟動(例如引導(dǎo))時(shí)交換,并且可包括以上提到的枚舉信息和/或如裝置描述符信息的后枚舉信息。在各個(gè)實(shí)施例中,這樣的枚舉和/或后枚舉信息例如由分析PC上的分析軟件使用以將所觀測USB業(yè)務(wù)解碼到類級,并例如經(jīng)由顯示器以人可讀的形式在類級來呈現(xiàn)信息。圖4是示出分析PC的實(shí)施例的框圖。在所示示例中,圖1的分析PC114被示出為包括配置成經(jīng)由連接112來與硬件USB分析器通信的通信接口402,例如USB、網(wǎng)絡(luò)或其它接口。通信接口402向事務(wù)級解碼引擎404提供包含經(jīng)由連接112所接收的分析流的所觀測分組(和其它數(shù)據(jù),如以上提到的周期的“無活動”分組)。事務(wù)級解碼引擎404將分組關(guān)聯(lián)到包括事務(wù)的編組中,并且向類級解碼引擎406提供事務(wù)級信息。在一些實(shí)施例中,事務(wù)級解碼引擎404向類級解碼引擎406向上傳遞分析流中包含的任何“無活動”分組(或者在一些實(shí)施例中包含同樣的數(shù)據(jù),如分析器時(shí)間戳)。類級解碼引擎406分析所接收事務(wù)信息以得出類級信息,如識別類級傳遞、命令和指令。在各個(gè)實(shí)施例中,類級解碼引擎406使用在裝置枚舉或后枚舉期間所觀測的類和/或裝置描述符和/或其它數(shù)據(jù)來確定如何在類級對信息進(jìn)行解碼。在一些實(shí)施例中,類級解碼引擎406被配置成接收由分析器在所監(jiān)測總線上的靜寂時(shí)期期間所生成的“無活動”分組或其它周期的分組和/或包含同樣的數(shù)據(jù),例如分析器時(shí)間戳,并使用所接收的無活動數(shù)據(jù)連同對類級狀態(tài)(例如,在任何類級操作正掛起時(shí)的類級狀態(tài))的認(rèn)知來生成和顯示類級超時(shí)事件,如下面結(jié)合圖7更全面的描述。在圖4所示的示例中,用戶接口代碼408從類級解碼引擎接收信息,并經(jīng)由顯示裝置410來顯示類級信息。在一些實(shí)施例中,用戶接口代碼408響應(yīng)例如來自用戶輸入以選擇將要顯示的視圖。例如,在一些實(shí)施例中,如果啟用“分類”或“類級解碼”,則顯示解碼到該類級的信息;但是,如果沒有啟用分類,則顯示事務(wù)級信息。在各個(gè)實(shí)施例中,事務(wù)級解碼引擎404、類級解碼引擎406和用戶接口代碼408中的一個(gè)或多個(gè)包括通過使用包括PC114的處理器執(zhí)行相關(guān)聯(lián)的軟件指令來提供的實(shí)體。圖5是示出生成分析流的過程的實(shí)施例的流程圖。在一些實(shí)施例中,圖5的過程在硬件USB分析器上實(shí)現(xiàn)。在所示示例中,例如由圖2的解碼器202將在所監(jiān)測總線上感測的電信號解碼成分組(502)。一旦分組被解碼(504),就附加分析器時(shí)間戳并將所觀測分組包括在作為輸出所提供的分析流中(506)。如果在規(guī)定的(例如可配置)周期之內(nèi)沒有檢測到分組(508),則生成攜帶分析器時(shí)間戳的“無活動”分組并將其包含在分析流中(510)。在一些實(shí)施例中,不管所監(jiān)測總線上是否已經(jīng)存在活動,分析器周期地輸出“無活動”或者其它分組,以及在一些這樣的實(shí)施例中,步驟508被省略,和/或包括確定是否已經(jīng)到達(dá)提供作為輸出的“無活動”或其它周期的分組的時(shí)間的步驟。在一些實(shí)施例中,不管所監(jiān)測總線上的活動如何,每次相關(guān)聯(lián)計(jì)數(shù)器翻轉(zhuǎn)時(shí),使用16位分析器時(shí)間戳并輸出周期的分組。如前所述繼續(xù)操作直到完成(512),例如分析器被斷開和/或從分析PC接收到停止命令。圖6是示出對所監(jiān)測USB數(shù)據(jù)進(jìn)行解碼和顯示的過程的實(shí)施例的流程圖。在一些實(shí)施例中,圖6的過程由如圖1和圖4的分析PC114的分析計(jì)算機(jī)來實(shí)現(xiàn)。在所示示例中,在接收到分組(602)時(shí),將其解碼到事務(wù)級(604)。又將事務(wù)級信息解碼到類級(606),并顯示類級操作、命令和指令(608)。圖7是示出根據(jù)類級上下文來生成超時(shí)的過程的實(shí)施例的流程圖。在一些實(shí)施例中,圖7的過程由如圖4的類級解碼引擎406的類級解碼引擎來實(shí)現(xiàn)。在所示示例中,接收“無活動”事件(702)。在各個(gè)實(shí)施例中,無活動事件可包括由USB分析器所生成和發(fā)送的無活動分組和/或從其中所得出的事件或其它記錄或指示。例如,在一些實(shí)施例中,USB分析器被配置成在每次16位或其它計(jì)數(shù)器翻轉(zhuǎn)時(shí)輸出虛(dummy)分組或其它分組。分析PC被配置成生成超時(shí),即使在所監(jiān)測總線上接收到n個(gè)這樣的虛分組或其它無活動分組而沒有觀測到包含數(shù)據(jù)的介入的分組(interveningpacket)的情況下。在一些實(shí)施例中,在沿至類級解碼引擎的路徑的介入級處,可收集一個(gè)或多個(gè)這樣的事件,并生成下一級超時(shí)事件。例如,事務(wù)級解碼引擎在生成事務(wù)級超時(shí)和/或向類級解碼引擎向上傳遞事務(wù)級所生成的超時(shí)事件之前可累積m個(gè)分組級超時(shí)事件。一旦在類級解碼引擎接收超時(shí)事件(702),如果類級操作正掛起(704),例如已經(jīng)觀測到包括類級傳遞的一個(gè)或多個(gè)事務(wù)但是預(yù)期將接收與類級傳遞有關(guān)的一個(gè)或多個(gè)剩余事務(wù),例如借助于在可適用類規(guī)范中陳述的要求和協(xié)議,將“無活動”事件相關(guān)聯(lián)的時(shí)間和與類級操作相關(guān)聯(lián)的時(shí)間進(jìn)行比較,例如,和與類級操作相關(guān)聯(lián)的第一所接收分組的時(shí)間戳進(jìn)行比較(706)。如果經(jīng)過的時(shí)間超過所規(guī)定閾值(708),則生成類級超時(shí)事件并且向用戶顯示相關(guān)聯(lián)告警(710)。在一些實(shí)施例中,通過累積連續(xù)事務(wù)級或其它所接收超時(shí)事件來確定經(jīng)過的時(shí)間,以及如果連續(xù)接收到超過所規(guī)定數(shù)量的這樣的所接收超時(shí)事件而沒有由類級解碼引擎作為輸出所提供的類級操作完成事件,則生成類級超時(shí)事件。如果沒有類級超時(shí)被確定為已經(jīng)發(fā)生,或者如果沒有類級操作正掛起,或者一旦生成超時(shí)事件并且顯示告警,則該過程結(jié)束。圖8是示出被解碼到類級的所監(jiān)測USB數(shù)據(jù)的顯示的實(shí)施例的框圖。在所示示例中,顯示器800包括記錄欄802和數(shù)據(jù)欄804,在記錄欄802中顯示描述類級記錄的性質(zhì)和含意的信息;在數(shù)據(jù)欄804中顯示與記錄相關(guān)聯(lián)的對應(yīng)數(shù)據(jù)。在所示示例中,顯示與從USB大容量存儲裝置中讀取數(shù)據(jù)的操作相關(guān)聯(lián)的數(shù)據(jù)。在第一行(排),“讀取”操作通過“讀取”記錄來表示,其中負(fù)號指示該記錄已經(jīng)被擴(kuò)展以顯示在后續(xù)行中的分量記錄。在數(shù)據(jù)欄中,顯示指示被讀取數(shù)據(jù)的邏輯塊地址(LBA)和長度的數(shù)據(jù)連同被觀測的操作已經(jīng)成功完成(“已通過”)的指示。讀操作被示出為包括命令傳輸、數(shù)據(jù)傳輸和狀態(tài)傳輸。數(shù)據(jù)傳輸記錄已經(jīng)被擴(kuò)展為示出包含數(shù)據(jù)傳輸?shù)亩鄠€(gè)IN事務(wù)。第一IN事務(wù)已經(jīng)被擴(kuò)展為示出包括該事務(wù)的IN、DATA和ACK分組。在一些實(shí)施例中,如果在所規(guī)定時(shí)間之內(nèi)尚未觀測到圖8所示的傳輸序列已經(jīng)完成,則會顯示錯(cuò)誤或其它指示。例如,在一些實(shí)施例中,基于對類級上下文的認(rèn)知(在這里是掛起從“大容量存儲”裝置類的成員的裝置的讀取),如果在上一次確認(rèn)事務(wù)和一個(gè)或多個(gè)后續(xù)事務(wù)和/或預(yù)期被接收以指示類級操作的完成的分組之間已經(jīng)經(jīng)過了所規(guī)定時(shí)間量(例如基于“無活動”等分組和/或從分析器所接收的并向上傳播到類級解碼引擎的信息來確定的),則類級解碼引擎或相關(guān)元件被配置成生成超時(shí)。在這樣的情況下,顯示“超時(shí)”或其它錯(cuò)誤而不是圖8所示的“已通過”狀態(tài)。使用上述方式,能夠?qū)崟r(shí)檢測類級傳遞或其它類級操作的完成中的超時(shí)或其它錯(cuò)誤。在非實(shí)時(shí)分析中,有可能在分析流中向前搜索(lookahead)來查看是否和/或何時(shí)接收到與類級傳遞相關(guān)聯(lián)的后續(xù)分組。然而,為了執(zhí)行實(shí)時(shí)分析,以及具體來說為了及時(shí)檢測超時(shí)并且實(shí)時(shí)向用戶顯示相關(guān)聯(lián)告警,要求如本文所述的那些技術(shù)在不利用能夠無限地檢查將來的情況下使分析軟件能夠?qū)崟r(shí)確定類級操作已經(jīng)超時(shí)。否則,用戶體驗(yàn)會是顯示不會變化,這可由除了類級傳遞的完成的失敗之外的原因而引起,例如硬件分析器的故障、分析器與分析PC之間的連接的問題和/或分析軟件和/或PC的故障。在各個(gè)實(shí)施例中,硬件USB分析器和/或分析PC被配置成使用循環(huán)緩沖器來存儲包括所監(jiān)測USB流的分組和/或記錄。一旦建立連接并在所監(jiān)測總線上觀測到數(shù)據(jù),就對分組進(jìn)行解碼并將相關(guān)聯(lián)記錄存儲在循環(huán)緩沖器中,以供在接收到想要實(shí)時(shí)“捕獲”和分析的指示的情況下進(jìn)一步使用和分析。循環(huán)緩沖器用于削減用來存儲記錄的存儲器或其它存儲裝置。一旦接收到開始實(shí)時(shí)捕獲的命令,就從緩沖器抽出記錄,以及例如在適用的情況下,通過將信息解碼到事務(wù)和/或類級來分析記錄。圖9是示出循環(huán)緩沖器的實(shí)施例的框圖。在所示示例中,循環(huán)緩沖器900包括多個(gè)存儲位置902,存儲器或其它存儲裝置的所分配塊被組織成該多個(gè)存儲位置902。在概念上,在一些實(shí)施例中,第一記錄會被存儲在最左位置,下一記錄存儲向右的下一位置,依此類推,直到達(dá)到最后(在本例中為最右)存儲位置。如箭頭904所示,下一個(gè)接收的數(shù)據(jù)會被存儲在最左位置,以覆寫存儲在該位置中的數(shù)據(jù)來作為開始。寫入(存儲)會向右進(jìn)行,以覆寫先前存儲的數(shù)據(jù),直到再次達(dá)到最后位置,這時(shí)寫入會返回到第一位置,依此類推。這種方式允許被分配的有限的存儲量存儲所觀測USB數(shù)據(jù),但是,一旦緩沖器已經(jīng)被填充,新數(shù)據(jù)就只能夠通過覆寫早前所觀測并存儲的數(shù)據(jù)來存儲。在沒有使用本文所述的技術(shù)的情況下,這種方式可以導(dǎo)致覆寫將來支持實(shí)時(shí)類級解碼可能需要數(shù)據(jù),如通常當(dāng)裝置被首次連接時(shí)和/或在啟動時(shí)交換的枚舉信息和裝置描述符信息,并且因此是一旦循環(huán)緩沖器變滿則首先被覆寫的數(shù)據(jù)中的數(shù)據(jù)。在一些實(shí)施例中,在可能將來需要來實(shí)現(xiàn)在USB數(shù)據(jù)流被接收時(shí)對其進(jìn)行實(shí)時(shí)類級解碼的數(shù)據(jù),如枚舉和裝置描述符信息,在其被覆寫之前被存儲在(與循環(huán)緩沖器不同的)另一個(gè)位置。圖10A是示出用于保存枚舉和相關(guān)信息的過程的實(shí)施例的流程圖。在所示示例中,監(jiān)測在所監(jiān)測總線上所觀測的USB數(shù)據(jù),以檢測包括枚舉信息的記錄(1002)。將所檢測枚舉記錄(1004)復(fù)制到與循環(huán)緩沖器不同的存儲位置,并且對其加索引以幫助檢索(1006)。非枚舉記錄和枚舉記錄以同樣的方式被寫入循環(huán)緩沖器(1008)。繼續(xù)該過程直到完成(1010),例如,分析器被從目標(biāo)裝置和/或目標(biāo)主機(jī)斷開連接。圖10B是示出用于保存枚舉和相關(guān)信息的過程的實(shí)施例的流程圖。在所示示例中,當(dāng)接收分組(1030)時(shí),確定它是否為枚舉(或其它裝置類、身份和/或配置)相關(guān)的(1032)。如果是的話,則將相關(guān)聯(lián)記錄標(biāo)記為枚舉記錄(1034)。在一些實(shí)施例中,僅當(dāng)啟用類級解碼時(shí)才標(biāo)記枚舉記錄。將未標(biāo)記記錄(如果所接收分組不是枚舉相關(guān)的)或者標(biāo)記記錄(在枚舉記錄的情況下)存儲在循環(huán)緩沖器中(1036)。圖10C是示出用于保存枚舉和相關(guān)信息的過程的實(shí)施例的流程圖。在所示示例中,在接收關(guān)于循環(huán)緩沖器已滿(或者接近為滿)的指示(1050)時(shí),例如,通過檢查如關(guān)于圖10B所提到的標(biāo)記來檢查緩沖器枚舉記錄的存在(1052)。如果找到任何枚舉記錄(1054),則將它們復(fù)制到另一個(gè)位置并且加索引(1056)。如果沒有找到枚舉記錄(1054)或者如果這樣一旦已經(jīng)復(fù)制和索引了所有這樣的記錄(1056)時(shí),則繼續(xù)/恢復(fù)寫入循環(huán)緩沖器(1058),如果適用,包括覆寫先前存儲的枚舉(若有的話)和/或非枚舉記錄。圖11是示出用于實(shí)時(shí)類級解碼的過程的實(shí)施例的流程圖。在所示示例中,在接收開始實(shí)時(shí)類級解碼的指示(1102)時(shí),檢索與目標(biāo)裝置相關(guān)聯(lián)的枚舉記錄(1104)。在一些實(shí)施例中,如果循環(huán)緩沖器仍然存在記錄,則從循環(huán)緩沖器檢索記錄,或者如果不存在記錄,則從其被復(fù)制到的位置來檢索記錄。在一些實(shí)施例中,如果需要避免它們被覆寫,則檢查將枚舉記錄已經(jīng)復(fù)制到其中的位置;如果存在枚舉記錄,則對它們進(jìn)行檢索并使用,如果不存在,則按順序從緩沖器播放記錄,并且在遇到枚舉記錄時(shí)對它們進(jìn)行處理。一旦被檢索(和/或在緩沖器遇到),就處理枚舉記錄,并對相關(guān)聯(lián)裝置信息提取、顯示和/或用于將類級解碼引擎配置成使相關(guān)聯(lián)USB數(shù)據(jù)解碼到類級(1106)。一旦枚舉記錄已經(jīng)被處理,則根據(jù)從枚舉記錄所確定的枚舉信息來處理后續(xù)記錄,其中包括通過根據(jù)從枚舉記錄所得出的裝置和其它枚舉信息將信息解碼到類級(1108)。USB目標(biāo)裝置和主機(jī)生成一些分組,這些分組是適用的USB協(xié)議的正確操作和實(shí)現(xiàn)所需的但是通常至少單獨(dú)地不是開發(fā)人員特別感興趣的。例如,由目標(biāo)主機(jī)周期地輸出幀開始(SOF)分組以描繪幀邊界。同樣,USB協(xié)議是主機(jī)為中心的,因此主機(jī)通常將周期地輪詢所連接裝置,以邀請它們向主機(jī)發(fā)送數(shù)據(jù)。如果裝置沒有數(shù)據(jù),例如鼠標(biāo)或其它輸入裝置一段時(shí)間尚未被用戶觸摸,則將發(fā)送邀請裝置發(fā)送數(shù)據(jù)的IN分組以及指示裝置沒有對于該主機(jī)的數(shù)據(jù)的響應(yīng)NAK分組的序列。顯示器具有有限物理尺寸和作為結(jié)果的顯示區(qū),通過參照圖8能夠看到,例如在相對空閑時(shí)期或者當(dāng)感興趣活動正發(fā)生但以相對慢時(shí)間尺度發(fā)生時(shí)的時(shí)期期間,顯示器可能被一系列IN-NAK對或者SOF分組記錄充滿,從而將感興趣信息推出查看區(qū),或者通過散布不感興趣的記錄來模糊這樣的信息,不感興趣的記錄在這個(gè)意義上只是噪聲。在一些實(shí)施例中,與預(yù)期不是特別感興趣的分組或其它數(shù)據(jù)相關(guān)聯(lián)的記錄不一定單獨(dú)和/或立即顯示。反而,這樣的記錄被積累并被作為編組來表示,例如,采用不干擾可能更感興趣的其它記錄的顯示的方式。在各個(gè)實(shí)施例中,累積不太可能感興趣的分組、事務(wù)和/或其它數(shù)據(jù)和事件。一旦事務(wù)和/或類級事件準(zhǔn)備好被顯示,就顯示所累積的不感興趣的記錄和/或它們的編組表示,例如,在正好在顯示事務(wù)和/或類級記錄的顯示區(qū)之上或者與其相鄰和/或分離的行或者其它區(qū)域中顯示。圖12是示出用于顯示USB類級信息的過程的實(shí)施例的流程圖。在所示示例中,當(dāng)接收分組(1202)時(shí),例如基于分組類型和/或事務(wù)或者分組與其相關(guān)聯(lián)的其它交互來對分組是否可能是感興趣的作出確定(1204)。例如,SOF分組和IN-NAK分組對可被認(rèn)為是不太可能感興趣的。如果所接收分組(1202)是不太可能感興趣的(1204),則該分組與其它類似分組一起被累積(1206)而不立即顯示。如果分組是感興趣的(1204),則對與其相關(guān)聯(lián)的事務(wù)是否完成(1208)作出確定。如果是的話,則生成相關(guān)聯(lián)事務(wù)記錄(1210),并且取決于顯示模式和用戶動作來顯示該相關(guān)聯(lián)事務(wù)記錄。例如,在圖8所示的示例中,顯示與包含數(shù)據(jù)傳輸?shù)氖聞?wù)相關(guān)聯(lián)的記錄,而不顯示包含命令傳輸和狀態(tài)傳輸?shù)哪切┯涗?。在生成事?wù)記錄(1210)中,對于類級傳遞或事務(wù)與其相關(guān)聯(lián)的其它操作是否完成作出確定(1212)。如果是的話,則生成和顯示與類級傳遞或其它操作相關(guān)聯(lián)的記錄,并顯示任何所累積的不太可能感興趣的記錄的編組表示,例如,正好在類記錄之前或附近或者作為類記錄的組成部分顯示。當(dāng)接收和處理后續(xù)分組時(shí),繼續(xù)該過程直到完成(1216)。圖13是示出用于USB事務(wù)級信息的過程的實(shí)施例的流程圖。在所示示例中,接收分組(1302)。如果分組是不感興趣的(1304),則它與類似分組(若有的話)一起被累積而不被立即顯示(1306)。如果分組是感興趣的并且相關(guān)聯(lián)的事務(wù)這時(shí)完成(1308),則顯示與事務(wù)相關(guān)聯(lián)的記錄以及被認(rèn)為是不感興趣的任何所累積的分組的編組表示(1310)。繼續(xù)該過程直到完成(1312)。圖14是示出在類級與事務(wù)級視圖之間進(jìn)行切換的過程的實(shí)施例的狀態(tài)圖。在所示示例中,顯示器能夠在第一視圖(1402)和第二視圖(1404)之間切換,在第一視圖(1402)中,如圖12中的,被認(rèn)為不是特別感興趣的記錄基于類級事件被累積并且并被表示為編組,在第二視圖(1404)中,如圖13中的,被認(rèn)為不是特別感興趣的記錄基于事務(wù)級事件被累積并且被表示為編組。使用這種方式,取決于已經(jīng)啟用哪種類級解碼(和/或相關(guān)聯(lián)視圖),采用最小地干擾可能是感興趣的信息的顯示的方式在類級或事務(wù)級表示不是感興趣的記錄。圖15是示出在類級與事務(wù)級視圖之間進(jìn)行切換的過程的實(shí)施例的狀態(tài)圖。在一些實(shí)施例中,圖15的過程實(shí)現(xiàn)圖14的狀態(tài)圖。在所示示例中,如果沒有啟用分類(即,類級解碼)(1502),則被認(rèn)為不太可能感興趣的記錄在事務(wù)級被編組和被顯示(1504)。如果啟用分類(1502),則被認(rèn)為不太可能感興趣的記錄在類級被編組和被顯示(1506)。繼續(xù)該過程直到完成(1508)。圖16是示出類級視圖的實(shí)施例的框圖。在所示示例中,顯示器1600包括記錄欄1602和數(shù)據(jù)欄1604。例如,裝置可以是大容量存儲裝置。在所示示例中,顯示在類級與三個(gè)“讀取”傳遞相關(guān)聯(lián)的記錄。第一傳遞在第一行中按照“折疊”方式示出,其中在數(shù)據(jù)欄中示出概括信息并且指示“已通過”狀態(tài)。在第二行中,就在與開始于第三行的第二“讀取”相關(guān)聯(lián)的記錄的顯示之前,顯示93個(gè)介入的SOF分組的編組表示,其中在數(shù)據(jù)欄中具有它們表示的幀的概括列表。注意,在連續(xù)行中顯示93個(gè)SOF分組會導(dǎo)致要求用戶在查看下一個(gè)“讀取”傳遞之前向下卷動通過93個(gè)記錄。在所示示例中,圖16所示的在第三行上開始的第二傳遞的“讀取”傳遞記錄已經(jīng)被擴(kuò)展為示出還包含傳遞的命令傳輸、數(shù)據(jù)傳輸和狀態(tài)傳輸類級事件的分量記錄。在這個(gè)示例中,在頂部類級“讀取”記錄(即,所示的顯示1600的第四行)之后的第一行中的9個(gè)SOF分組被表示為編組,該9個(gè)SOF分組可能已經(jīng)被散布有包含分量類級傳輸和/或包含那些傳輸?shù)氖聞?wù)的分組。這樣,在沒有不感興趣的介入的記錄的情況下,分量傳輸以及包含那些傳輸?shù)氖聞?wù)可以被一起查看。圖17是示出事務(wù)級視圖的實(shí)施例的框圖。在所示示例中,顯示器1700包括記錄欄1702和數(shù)據(jù)欄1704。在這個(gè)示例中,提供事務(wù)級視圖。這里不是如圖16中的SOF分組那樣圍繞類級事件對不感興趣編組,在圖17所示的示例中,這樣的分組圍繞感興趣的事務(wù)來被編組和被顯示。例如,在第一行中,在擴(kuò)展的IN事務(wù)記錄(和分量分組)之前,在單個(gè)條目中表示3個(gè)SOF分組的編組。在一些實(shí)施例中,即使SOF分組的一個(gè)或多個(gè)已經(jīng)被散布于所監(jiān)測總線上所觀測的業(yè)務(wù)中,這樣的分組也通過就在與事務(wù)相關(guān)聯(lián)的記錄之前(或者備選地之后)所列出的編組條目來表示,該與事務(wù)相關(guān)聯(lián)的記錄是就在觀測到它們的掛起之前和/或期間的。例如,在圖17所示的示例中,如果3個(gè)SOF分組的一個(gè)或多個(gè)出現(xiàn)在顯示1700的第三和第五行中所示的IN分組與ACK分組之間,則這樣的SOF分組會如圖17中所示的來表示,即通過在第二行中所列出的IN事務(wù)記錄之前的所列出的單個(gè)編組條目來表示。注意,在圖17的最后兩行中所示的最終兩個(gè)IN事務(wù)之間碰巧沒有SOF分組出現(xiàn)。雖然在上述各個(gè)實(shí)施例中,IN-NAK分組對和SOF分組被用作例如對于查看使用USB分析器所監(jiān)測的USB數(shù)據(jù)的顯示的用戶來說可能不是特別感興趣的分組的示例,但是本文所述的技術(shù)可被應(yīng)用于以非侵入方式來顯示不是特別感興趣的其它分組。例如,在USB3.0的上下文中,可能不是特別感興趣的分組可以包括但不限于等時(shí)時(shí)間戳分組(ITP)、鏈路開通(LUP)和/或鏈路停止(LDN)分組和/或如LGO和/或LXU分組的鏈路功率管理分組。本文所述的技術(shù)幫助以實(shí)時(shí)的方式顯示解碼到類級的所監(jiān)測USB數(shù)據(jù)。雖然為了理解的清楚起見而比較詳細(xì)地描述了以上實(shí)施例,但是本發(fā)明并不局限于所提供的細(xì)節(jié)。存在實(shí)現(xiàn)本發(fā)明的許多備選方式。所公開的實(shí)施例是說明性而不是限制性的。