天天看點

一、Linux USB驅動之USB規範初探寫在開始的話從體系開始——體系簡介USB系統層次結構圖

寫在開始的話

最近因為工作的需要,需要了解USB體系相關知識,以前喜歡記筆記的,長時間不寫字了,也懶得去寫了,是以就想到了寫部落格,記錄學習USB的過程中的個人了解。至目前(2014年11月),USB3.0規範在嵌入式裝置中還沒有普及,我隻學習USB2.0及以前的規範。是以部落格中僅僅記會錄USB2.0及以前的規範相關了解,主要以USB2.0體系為主。

從體系開始——體系簡介

USB是一種支援熱插拔的高速串行總線,使用差分信号來傳輸資料,到USB2.0規範,它最高支援480Mbps(USB2.0)的傳輸速率,支援USB2.0的裝置稱為高速裝置。其他還有全速裝置(USB1.1),速率為12Mbps,低速裝置(USB1.0),速率為1.5Mbps。

USB支援總線供電和自供電兩種供電方式,總線供電模式下,裝置可以從總線上最大擷取500mA的電流。USB接口的供電電壓為5V,對于總線供電的裝置,在枚舉動作完成之前最多可以從總線上擷取100mA的電流。

USB被設計成向下相容的,當低速和全速裝置連接配接到高速主機上時,主機可以通過分離傳輸來支援他們。這樣改總線上傳輸最高速度等級由最慢的裝置決定。裝置包括主機,HUB,USB功能裝置。

USB體系包括“主機”,“裝置”,以及“實體連接配接”。主機提供USB接口,并提供管理結構的軟體。主機可以是PC機,嵌入式裝置等。一個USB系統中隻能有一個主機。包括USB功能裝置和HUB,一個USB系統中可以有127個裝置。因為一個USB HOST最多同時支援128個位址,0位址為預設位址,在裝置枚舉時臨時使用。以HOST-ROOT HUB為起點,最多支援七層,也就是說任何一個USB系統最多支援5個HUB級聯。

USB系統層次結構圖

USB采用輪詢廣播機制傳輸資料,是以的傳輸都是由主機發起。任何時刻USB系統内隻允許一個資料包在傳輸。USB采用“令牌包”——“資料包”——“握手包”的傳輸機制。在令牌包中指定資料的來源或去向的裝置位址和端點(Endpoint),來保證裝置對廣播的資料包或令牌包做出響應。握手表示傳輸是否成功。

資料包是USB系統中資料傳輸的最小機關。資料包由SYNC,資料和EOP三個部分組成。不同的資料包資料格式不同,資料本分都已8位的PID開始,PID指定了資料包的類型,一共有16中類型。其中令牌包指的的是PID為SETUP/IN/OUT的包。

端點(Endpoint)是USB系統中可以進行資料收發的最小單元。端點支援單向或雙向的資料傳輸。裝置支援的端點的數量是有限制的,除預設的端點之外低速裝置支援兩組端點(2個輸入,2個輸出),高速和全速裝置最多支援15組端點。

管道(PIPE)是主機和裝置端點之間的資料傳輸模型,共有兩種類型的管道:無格式的流管道(Stream Pipe)和有格式的資訊管道(Message Pipe)。任何USB裝置一旦上電就存在一個資訊管道,即預設的控制管道。USB主機通過預設的控制管道來擷取裝置的描述、配置、狀态,并對裝置進行配置。

USB 裝置連接配接到 HOST 時, HOST 必須通過預設的控制管道對其進行枚舉,在完成獲得其裝置描述、進行位址配置設定、獲得其配置描述、進行配置等操作後,裝置方可正常使用。USB裝置的即插即用特性就是依賴枚舉操作的。枚舉是 USB 體系中一個很重要的活動,由一系列标準請求組成(若裝置屬于某個子類,還包含該子類定義的特殊請求)。通過枚舉 HOST 可以獲得裝置的基本描述資訊,如支援的 USB 版本、PID、VID、裝置分類(Class)、供電方式、最大消耗電流、配置數量 、各種類型端點的數量及傳輸能力 (最大包長度)。 HOST 根據 PID 和 VID 加載裝置驅動程式 ,并對裝置進行合适的配置。隻有經過枚舉的裝置才能正常使用 。

USB體系定義了四種傳輸類型,分别是:控制傳輸、中斷傳輸、批量傳輸和同步傳輸。不同的傳輸在實體傳輸上沒有太大差別,差別在協定上,不同類型的傳輸在傳輸的機制,主機安排傳輸任務可占用帶寬和以及最大資料包的長度有一定的差別。

面說過,USB裝置通過管道和HOST進行通信。USB裝置在預設的控制管道上可以接受并處理以下幾種類型的請求:

标準請求:共有11個标準請求,所有USB裝置都應該支援,HOST就是通過這些标準請求來識别和配置裝置。

類請求:USB定義了若幹個類,如HUB類等,不同的類定義了一些類請求,屬于該類的USB裝置應該支援該類請求。裝置所屬于的類可以在裝置描述符中找到。

廠商請求:非USB協定定義的,是不同的廠商為了實作一些功能而自定義的。

預設的控制管道是建立在0号端點上的,這種管道即為有格式的資訊管道(Message Pipe)。

USB體系中有一種特殊而且重要的裝置叫做HUB。USB HUB提供了一種低複雜度和低成本的USB接口擴充的解決方案。USB HUB的上行面向HOST,下行面向裝置。在下行接口上,USB HUB具有裝置連接配接檢測和裝置移除檢測的能力,并給下行裝置供電。HUB可以單獨使能各個端口。不同的端口可以工作在不同的速度等級。USB HUB由HUB重發器(HUB Repeater),轉發器(Transaction Translator)和HUB控制器(HUB Controller)構成。HUB重發器是上下行端口的一個協定控制開關,負責高速資料包的重生與分發。HUB控制器負責和HOST通信,HOST是通過HUB類請求和USB HUB通信,擷取HUB及下行端口上HUB的描述符,進行HUB和下行端口的監控和管理。轉發器提供了高速裝置和全速及低速裝置通信的轉換能力,通過HUB可以在高速HOST和全速及低速裝置之間進行比對。

USB HOST負責USB裝置的連接配接和移除的檢測,HOST和裝置之間控制流和資料流的管理,傳輸狀态的收集,總線電源的供給。

USB體系就簡單介紹這麼多,之後根據需要還會對每個子產品進行詳細的說明介紹。

繼續閱讀