usb系統結構
1.usb系統拓撲結構
這個是usb系統的拓撲圖,4個部分構成:usb主機控制器,根集線器,集線器,裝置。其中root hub與usb主機控制器是繫結在一起的。
node代表usb裝置,廣義上講hub也是一種usb裝置。一根usb匯流排最多可掛127個裝置。
常見的usb主控制器:
ohci(open host controller inte***ce):主要是非pc系統上的usb晶元,嵌入式系統常用的控制器。usb1.1
uhci(open host controller inte***ce):大多是intel和via主機板上的usb控制器晶元。usb1.1
ehci(enhanced host controller inte***ce):由intel等幾個廠商研發,相容ohci\uhci,遵循usb2.0規範。
2.usb實現框架:
3.usb裝置的構成包括了配置,介面和端點
1. 裝置通常具有乙個或者更多個配置
2. 配置經常具有乙個或者更多個介面
3. 介面通常具有乙個或者更多個設定
4. 介面沒有或者具有乙個以上的端點
配置由介面組成,每個裝置都有不同級別的配置資訊;
介面由多個端點組成,代表乙個基本的功能;
端點是usb裝置中的唯一可定址部分,可以理解為usb裝置或主機上的乙個資料緩衝區。
配置和設定的理解:乙個手機可以有多重配置,比如可以作為**,可以接在pc上當成乙個u盤,這兩種情況就屬於不同的配置。再來看設定,乙個手機作為**已經確定了,但是通話場景(室外模式,會議模式等等)可以改變,每種場景就可以算乙個設定。
配置1:音訊(介面) + 旋鈕(介面)
每乙個介面均需要乙個驅動程式。
每個usb裝置有乙個唯一的位址,這個位址是在裝置連上主機時,由主機分配的,而裝置中的每個端點在裝置內部有唯一的端點號,這個端點號是在設計裝置時給定的。每個端點都是乙個簡單的連線點,是單向的。
端點0是乙個特殊的端點,用於裝置列舉和對裝置進行一些基本的控制功能。除了端點0,其餘的端點在裝置配置之前不能與主機通訊,只有向主機報告這些端點的特性並被確認後才能被啟用。
例如:usb匯流排,類似於高速公路;
收發的資料,類似於汽車;
usb端點,類似於高速公路收費站的入口或出口。
4.usb描述符
當usb裝置插入到主機系統中,主機系統會自動檢測usb裝置的相關資訊,就是通過usb描述符來實現的。
標準的usb裝置有五種usb描述符:
裝置描述符
配置描述符
介面描述符
端點描述符
字串描述符
乙個裝置只有乙個裝置描述符,而乙個裝置描述符可以包含多個配置描述符,而乙個配置描述符可以包含多個介面描述符,乙個介面使用了幾個端點,就有幾個端點描述符。
管道是usb裝置的端點和主機端快取的連線通道,主機和usb裝置通過管道來進行通訊。
5.四種傳輸型別
端點有4中不同的型別:控制,批量,等時,中斷。
對應usb的4種不同的傳輸型別:
1. 控制傳輸:適用於小量的,對傳輸時間和速率沒有要求的裝置。如usb裝置配置資訊。
2. 批量傳輸:適用於類似印表機,掃瞄器等傳輸量大,但對傳輸時間和速度無要求的裝置。
4. 中斷傳輸:適用於非大量,但具有週期性的資料,比如滑鼠鍵盤。當usb宿主要求裝置傳輸資料時,中斷端點會以乙個固定的數率傳輸資料。滑鼠,鍵盤以及遊戲手柄等。此種中斷和經常說的硬體中斷是不同的,此種中斷會以固定的時間間隔來查詢usb裝置。
三種事務(transaction)型別
一次傳輸由乙個或多個事務構成。
1. in transaction
in事務為host輸入服務,當host需要從裝置獲得資料的時候,就需要in事務。
2. out transaction
out事務為host輸出服務,當host需要輸出資料到裝置的時候,就需要out事務。
3. setup transaction
setup事務為host控**務,當host希望傳輸一些usb規範的預設操作的時候就需要使用setup事務。
四種包(package)型別
乙個事務由乙個或多個包構成,包可分為令牌包(setup),資料報(data),握手包(ack)和特殊包。
域乙個包由多個域構成,域可分為同步域(sync),標識域(pid),位址域(addr),端點域(endp),幀號域(fram),資料域(data),校驗域(crc)。
抓包截圖:
參考**:
原文見:
usb系統拓撲結構和usb裝置邏輯結構
對於每個usb系統來說,都有乙個稱為host控制器的裝置,該host控制器和乙個根hub作為乙個整體。這個根hub下可以接多級hub,每個hub又可以接子hub。每個usb裝置作為乙個節點接在不同級別的hub上。每條usb匯流排上最多可以接127個裝置。usb主控制器 負責處理主機與裝置之間的電氣和...
USB 梳理USB子系統
看了很久的usb子系統了,還是霧濛濛的,現在梳理一下。首先從bus入手,在core下面定義了struct bus type usb bus type,這就是usb的bus上的裝置與驅動通用的乙個結構體。首先看driver,api主要在core driver.c裡,註冊usb bus type的,主要...
一 usb子系統相關結構體
1.usb匯流排 struct usb bus struct usb bus 2.usb hub struct usb hub status struct mutex status mutex int error 出錯標誌 int nerrors struct list head event lis...