控制傳輸
控制傳輸是usb傳輸中最重要的傳輸,只有正確地執行完控制傳輸,才能進一步地執行其他的傳輸型別。這種傳輸是用來提供介於主機與設各之間的配置、命令或狀態的通訊協議。控制傳輸能夠使能主機去讀取相關設各的資訊,去設定設各位址,以及選擇配置與其他的設定等。此外,控制傳輸也能夠送出自定義的要求,以針對任何的目的送出與接收資料。因此,須以雙向傳輸來達到這個要求。當然,所有的
usb裝置必須支援控制傳輸。
控制傳輸又包含了3種控制傳輸形態:控制讀取、控制寫人以及無資料控制。其中,又可再分為2~
3個層:設定層、資料層(無資料控制沒有此層)以及狀態層。當然,根據通訊協議的簡易口訣,這最後的
3則為實現乙個控制傳輸所需的
3個資料交易層。通過這樣介紹,使用者或許會有點模糊。如圖1
所示。
圖1 usb
控制傳輸的關聯圖
每當裝置第一次連線到主機時,控制傳輸就可用來交換資訊,設定設各的位址或讀取裝置的描述符與要求。由於控制傳輸非常重要,所以必須確保傳輸的過程沒有發生任何錯誤。這個幀錯的過程可以使用
crc(
cyclic redundancy check
,迴圈校驗)錯誤檢查方式來加以檢測。如果這個錯誤無法恢復,只好再重新傳輸一次。
每乙個usb
裝置第一次執行控制傳輸時,占用了端點
0以及位址
0。其中,端點
0是作為控制傳輸的特定端點,別的
usb傳輸型別不能拿來使用;而位址
0,則是一開始外圍裝置所占用的預留位址。
控制傳輸都是採用對設各發出要求的方式,讓裝置可以遵循
usb主機所起始的要求格式。而這種傳輸方式,主要就是將資料從裝置傳回至主機上。例如,當主機發出了乙個
「裝置要求
」去讀取乙個裝置描述符時,就會執行控制傳輸。該要求的結構中包了
setp
封包以及隨後緊接著描述
「設各要求」的
8位元組資料的
data0
封包。以下,列出主機對外圍設各產生起始作用的
3種基本控制傳輸:
·控制讀取;
·控制寫人;
·無資料控制。
這些控制傳輸能夠再區分為
3種不同的資料交易的型態:設定層、資料層以及咿層,如表所列。每乙個階段即是乙個資料交易。乙個控制傳輸共需
3個資料交易,這即是
54233的第5
個數字「3」
。使用者也可同時參考表3,
1的傳輸型別、資料交易與包的關係。
表控制傳輸
另外,在執行控制傳輸的時候,還須使用資料緊密連線機制來確保整個的傳輸赳中,主機與裝置能維持同步,並確保資料的正確性。而執行控制傳輸時的資料緊密連程式,如圖2所示
圖2執行控制傳輸時,資料緊急密連線程式
其中,每乙個層即是乙個資料交易的過程。以下,依序介紹控制傳輸的各種層。
1.設定層
設定層的資料交易包含了:
setup
令牌封包與隨後跟著的
datao
資料封包以及
ack握手封包共
3個階段。在
data0
封包內包含了用來描述從主機所要送給裝置的要求,其所占用的
8個資料宇節即可描述這個設各要求。若這個設各送出
ack令牌封包給主機,代表確認收到了資料。
設定層是控制傳輸中的第一層,其作用是執行乙個設定的資料交易,並定義此控制傳輸的內容是什麼。此時,資料就會傳至設各中,並指明是何種設各要求。如圖
3所示,顯示了控制傳輸的設定層。其中,包含了起始封包(
sof)、令牌封包(
setup
)、資料封包(
data0
)以及握手封包(
ack)。其中,說明了起始封包、令牌封包以及資料封包是由
pc主機所發出的,而緊接著設各再發出握手封包。除了起始封包外,根據前一章所提及的
usb通訊協議簡易口訣,即是
54233的第4
個數字「3」
圖3控制傳輸的第一層:設定層
**連線:
USB控制傳輸
1 usb 端點解釋 2 usb驅動之 端點 endpoint 3 usb驅動 描述符 urb 管道 控制傳輸 控制傳輸是 usb傳輸中最重要的傳輸,只有正確地執行完控制傳輸,才能進一步地執行其他的傳輸型別。這種傳輸是用來提供介於主機與設各之間的配置 命令或狀態的通訊協議。控制傳輸能夠使能主機去讀取...
USB控制傳輸
乙個usb的控制傳輸如圖所示 乙個usb的控制傳輸分為2個或3個階段,setup stage,data stage 視情況而定 status stage。一 首先是setup stage,usb host總是先發起第乙個packet 1.host先傳送乙個setup包 2.然後host傳送乙個dat...
USB控制傳輸過程 詳細解析
首先,要明白兩個觀點。第一,usb匯流排上所有的事務 資料流傳輸 都是由usb host主動發起,而usb裝置永遠永遠都是只是被動地接收然後處理usb host發來的各種各樣的命令 要求 第二,中斷是usb host和usb裝置之間的信令員,usb host所有的要求都是通過這個信令員即中斷來通知u...