usb規範定義function 為主機提供單個功能的裝置。
hub是乙個包含有乙個或多個到usb裝置的介面或內部連線的裝置。同時這個裝置還帶有使該裝置能與每個外設通訊的硬體設施。集線器重複接收通訊,同時也有處理以下狀況的能力;管理電源、傳送和響應狀態和控制訊息以及防止全速資料輸出到低速裝置。
device是乙個function(功能)或乙個hub(集線器),除了復合裝置(復合裝置有乙個集線器和乙個或多個功能)。每個裝置有乙個唯一的匯流排位址,同樣要除了復合裝置,每個裝置的集線器和功能有不同的位址。乙個具有多個功能的外設是乙個復合裝置。在大部分情況下,外設和裝置這兩個詞可以替換使用。
每乙個usb 裝置會有乙個或者多個的邏輯連線點在裡面。 每個連線點叫端點。在usb 的規範中用4位位址標識端點位址,每個裝置最多有16個端點。端點0 都被用來傳送配置和控制資訊。
管道實現了在主機的乙個記憶體緩衝區和裝置的端點之間的資料傳輸, 連線端點0叫做預設管道。管道是具有多個特徵的通道,如頻寬分配,包大小,管道類別以及資料流向。管道有兩種型別分別是流管道,(stream pipe)和訊息管道(message pipe)。流管道傳輸的資料報的內容不具有usb 要求的結構,它是單向傳輸的;流管道支援批量、等時和中斷傳輸方式。而訊息
管道與流管道具有不同的行為。首先,由主機發請求給usb裝置,然後在適當的方向上傳輸資料,最後是到達乙個狀態階段。為了保證三個階段的資料傳輸,訊息管道定義了乙個資料結構使命令可靠地被識別和傳輸。訊息管道是雙向的,它只支援控制傳輸方式。
四種傳輸方式
usb提供了四種傳輸方式, 以適應各種裝置的需要。這四種傳輸方式分別是:控制傳輸方式:控制傳輸是雙向傳輸,資料量通常較小,主要用來進行查詢、配置和給usb 裝置傳送通用的命令。
控制傳輸:主要用在主計算機和usb外設中端點0之間。
等時傳輸方式:等時傳輸提供了確定的頻寬和間隔時間。它被用於時間嚴格並具有較強容錯性的流資料傳輸,或者用於要求恆定的資料傳送率的即時應用中。例如進行語音業務傳輸時,使用等時傳輸方式是很好的選擇。
中斷傳輸方式:中斷方式傳送是單向的並且對於主機來說只有輸入的方式。中斷傳輸方式主要用於定時查詢裝置是否有中斷資料要傳送,該傳輸方式應用在少量的、分散的、不可**的資料傳輸。鍵盤、遊戲杆和滑鼠就屬於這一型別。
大量傳輸方式:主要應用在沒有頻寬和間隔時間要求的大量資料的傳送和接收,它要求保證傳輸。印表機和掃瞄器屬於這種型別。
在開發usb裝置時通過設定介面晶元中相應的暫存器使端點處於不同的工作方式。
usb通訊協議
usb的物理協議規定了在匯流排上傳輸的資料格式,乙個全速的資料幀有1500位元組,而對於低速的幀有187位元組。幀的作用是分配頻寬給不同的資料傳送方式。
乙個最小的usb資料塊叫做包,包通常有同步訊號,包標識,位址、傳送的資料和crc。包的id由八
位組成,其中後四位是糾錯位。根據包功能的不同,在usb1.1中定義了以下四類十種:
token : out in sof setup
data : data0 data1
handshake : ack nak stall
special : pre
在usb 2.0中又增加了幾種型別的包以滿足高速傳輸的需要。其中data型別增加了data2和mdata,handeshake 型別增加了nyet,special型別則增加了err , split , ping , reserved 。
事務是在主機和裝置之間不連續地資料交換。乙個事務通常由主機開始,一般分三個階段,第一階段傳送token包,第二階段傳送是data包( 可以向上也可以向下) ,在資料報傳送完之後,就會由裝置返回乙個handshake 包。
最大頻寬計算:
全速 : 資料有效負載長度為64、128 或256 時其最大頻寬值最大,為1.28mbyte/s。
高速 : 當資料有效負載長度為1024 時其最大頻寬值最大,為5.7344mbyte/s。
一點入門知識
這是一位同學發到郵箱裡面的問題,感覺有點難,試著回答一下。呵呵,一家之言,歡迎拍磚。原問題 肖老師您好,有一些問題想請教您.我對組成計算機最底層的元器件的工作原理一無所知,為人類製作出如此複雜的計算機而折服,同時也很疑惑,總結了以下一些問題 1.組成計算機的元器件除了電晶體,繼電器等還有哪些?他們都...
Oracle入門基本知識一點通
oracle入門基本知識一點通 2003 8 26 14 15 00 oracle 基本知識輕鬆學 1.乙個表空間只能屬於乙個資料庫。2.每個資料庫最少有乙個控制檔案 建議3個,分別放在不同的磁碟上 3.每個資料庫最少有乙個表空間 system表空間 4.建立system表空間的目的是盡量將目的相同...
Docker入門的一點補充
入門的大部分知識看 dockerfile的格式命令在這篇部落格大部分都可以查到 還有部署專案看就已經足夠了,裡面有一些漏的我就在這裡補充一下 1.映象的刪除,先刪除映象對應的容器,容器刪完了再刪除映象 對應的指令是 docker rm 容器id docker ps a 可以查詢容器列表 docker...