硬體匯流排學習之路 USB匯流排體系協議簡介

2021-06-19 04:30:25 字數 3462 閱讀 5190

其實也想過很久,要不要去,猶豫了很久,本來想,其實不用這樣對技術痴迷,感覺,現在已經可以了,無所謂的非要這樣,去委屈自己,但是最後還是決定過去了,因為,真的就幾個月了,自己還沒有完全的想好,還有乙個原因,是自己想看看android是個什麼樣的,趁這個機會好好的了解一下整個系統,畢竟,目前,它是最最流行和成功的系統,自己以後肯定會遇到,在工作中肯定會有交集的,所以,早點接觸,比晚接觸要好。抱著這樣的一種

心態,去好好的學習,虛心的請教。所以,在這幾個月了,一定要嚴格的要求自己,我也會使用這一段時間,將自己的點點滴滴記錄下來。使自己在android整個成長上可以跟windows一樣。關於硬體協議這一塊,因為一直在搞驅動相關的,有必要好好的總結一下,當然大部分是借助一些規格書和一些技術文件。前面,一直疏忽了,其實,我應該在windows的理解的時候,好好的參考下android底層linux的**,畢竟它是開源的,後續一定要注意.

今天,我們來看下,目前應該是最最流行,使用最多的匯流排,關於它的裝置,已經大大的融入了我們的生活之中,它是什麼匯流排了,usb匯流排,

目前,它已經到了usb3.0的,最高速度為5gb/s.

usb是一種支援熱插拔的高速序列傳輸匯流排,它使用差分訊號來傳輸資料。usb支援匯流排供電和自供電兩種供電模式。在匯流排供電模式下,裝置最多可以得到500ma的電流。usb被設計成為向下相容的模式,當有低速裝置接在高速控制器上時,控制機可以通過分離傳輸來支援它們。

我們知道,乙個usb host最多可以同時支援128個位址,位址0作為預設位址,只在裝置列舉期間臨時使用,而不能被分配給任何乙個裝置,因此乙個usb host最多可以同時支援127個位址,如果乙個裝置占用乙個位址,那麼可最多支援127個usb裝置。在實際的usb體系中,如果要連線127個usb裝置,必須要使用usb hub,而usb hub也是需要占用位址的,所以實際可支援的usb功能裝置的數量是小於127的。

usb體系採用分層的星型拓撲來連線所有的usb裝置:

以host-root hub為起點,最多支援7層(tier),也就是說任何乙個usb系統中最多可以允許5個usb hub級聯。乙個復合裝置(compound device),將同時佔據兩層或更多的層。

root hub是乙個特殊的usb hub,它整合在主機控制器裡,不占用位址。root hub不但實現了普通usb hub的功能,還包括一些其他的功能。

復合裝置可以占用多個位址。所謂復合裝置其實就是把多個功能裝置通過內建的usb hub組合而成的裝置,比如帶錄音話筒的usb攝像頭等。

usb採用輪詢的廣播機制傳輸資料,所有的傳輸都由主機發起,任何時刻整個usb體系內允許乙個資料報的傳輸,即不同物理傳輸線上看到的資料報都是同一被廣播的資料報。

usb採用,「令牌包」-「資料報」-「握手包」的傳輸機制,在令牌包中指定資料報去向或者**的裝置位址和端點,從而保證了只有乙個裝置對被廣播的資料報/令牌包作出響應。握手包表示了傳輸的成功與否。

資料報:這裡的資料報跟上面的資料報不一樣,這裡指的是usb匯流排上資料傳輸的最小單位,包括sync,資料及eop三個部分。其中資料的格式針對不同的包有不同的格式。但都以8位的pid開始,pid指定了資料報的型別(供16種),令牌包即指pid為in/out/setup的包。

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

管道式主機和裝置端點之間資料傳輸的模型,共有兩種型別的管道:無格式的流管道(stream pipe)和有格式的資訊管道(message pipe)。任何usb裝置一旦上電就存在乙個資訊管道,即預設的控制管道,usb主機通過該管道來獲取裝置的描述,配置,狀態,並對裝置繼續配置。

usb裝置連線到host時,host必須通過預設的控制管道來對其進行列舉,完成獲得其裝置描述,進行位址分配,獲得其配置描述,進行配置等操作方可正常使用。usb裝置的即插即用即依賴於此。

列舉:是usb體系中乙個很重要的活動,由一系列標準請求組成(若裝置屬於某個子類,還包含該子類定義的特殊請求)。通過列舉,host可以獲得裝置\的基本描述資訊,如支援的usb版本,pid,vid,裝置分類(class),供電方式,最大消耗電流,配置資料,各種型別端點的數量及傳輸能力(最大包長度)。host根據pid和vid載入裝置驅動程式,並對裝置進行核實的配置。只有經過列舉的裝置才能正常使用。對於匯流排供電裝置,在列舉完成前最多可從匯流排獲取100ma的電流。

usb體系定義了四種型別的傳輸,它們是:

控制傳輸:主要用於在裝置連線時對裝置進行列舉以及其他因裝置不同的特定操作。

中斷傳輸:用於對延遲要求嚴格,小量資料的可靠傳輸,如鍵盤,遊戲手柄等。

批量傳輸: 用於對延遲要求寬鬆,大量資料的可靠傳輸,如u盤等。

同步傳輸:用於對可靠性要求不高的實時資料傳輸,如攝像頭,usb音響等。

注意:中斷傳輸並不意味著傳輸過程中,裝置會先中斷host,繼而通知host啟動傳輸。中斷傳輸也是host發起的傳輸,採用輪詢的方式詢問裝置是否有資料傳送,若有則傳輸,否則nak主機。

不同的傳輸型別在物理上並沒有太大的區別,只是在傳輸機制,主機安排傳輸任務,可占用usb頻寬的限制以及最大包長度有一定的差異。

1,標準請求:一共有11個標準請求,如得到裝置描述,設定位址,得到配置描述等。所有usb裝置均應支援這些請求。host通過標準請求來識別和配置裝置。

2,類(class)請求:usb還定義了若干個子類,如hub類,大容量儲存器類等。不同的類又定義了若干類請求,該類裝置應該支援這些類請求。裝置所屬類在裝置描述符中可以得到。

3,廠商請求:這部分請求並不是usb規範定義的,而是裝置生產商為了實現一定的功能而自己定義的請求。

usb hub提供了一種低成本,低複雜度的usb介面擴充套件方法。hub的上行port面向host,下行port面對裝置(hub或功能裝置)。在下行port上,hub提供了裝置連線檢查和裝置移除檢測的能力,並給各下行port供電。hub可以單獨使能各下行port,不同port可以工作在不同的速度等級(高速/全速/低速)。

hub由hub重髮器(hub repeater),**器(transaction translator)以及hub控制器(hub controller)三部分組成。hub repeater是上行port和下行port之間的乙個協議控制的開關,它負責高速資料報的重生與分發。hub控制器負責和host的通訊,host通過hub類請求和hub控制器通訊,獲得關於hub本身和下行port的hub描述符,進行hub和下行port的監控和管理。**器提供了從高速和全速/低速通訊的轉換能力,通過hub可以在高速host和全速/低速裝置之間進行匹配。hub在硬體上支援reset,resume,suspend.

重生與分發:指的是hub repeater需要識別從上行(下行)port上接收到的資料,並分發到下行(上行)port.所謂分發主要是指從上行port接收到的資料報需要向所有使能的高速下行port傳送,即廣播。

usb host在usb體系中負責裝置連線/移除的檢測,host和裝置之間控制流和資料流的管理,傳輸狀態的收集,匯流排電源的攻擊。

USB匯流排介紹

1.usb發展史 usb universal serial bus 通用序列總 線,是一種外部匯流排標準,用於規範電腦與 外部裝置的連線和通訊。usb是在1994年底 由英特爾 康柏 ibm microsoft等多家公 司聯合提出的,自1996年推出後,已成功替 代串列埠和並口,成為當今個人電腦和大...

USB匯流排協議概述

要完成乙個usb裝置的開發,僅了解usb協議是不夠的,還需要知道usb裝置類協議,usb協議與usb裝置類協議是相互補充的。為了簡化usb匯流排的開發流程,usb if將常用的具有相同或相似功能的裝置歸為一類,並制定了相關的裝置類規範,使得只要依照統一規範標準,不同的廠商開發的usb裝置可以使用同樣...

USB匯流排簡介(一)

usb universal serial bus 是一種 通用序列外部匯流排 首先,usb是一種 匯流排 它與計算機內部的匯流排 如pci匯流排 不同,cpu不能通過訪問記憶體指令或者i o指令直接訪問連線在usb上的裝置,而要通過乙個 usb控制器 間接地與連線在usb上的裝置打交道,usb匯流排...