電路(38)
在usb通訊裡,從主控器發出來的第乙個配置包就是裝置描述符配置包,目的只有乙個,就是獲取插入的usb屬性,以便載入合適的驅動程式。現在就來詳細地分析一下裝置描述符包的定義。
在usb2.0的協議裡找到9.3 usb device requests裡就找到這個結構的定義,這裡我使用c的定義結構如下:
typedef struct _usb_setup_packet
usb_setup_packet;
bmrequesttype是包含有下面幾方面的內容:
d7 d6 d5 d4 d3 d2 d1 d0
在這乙個位元組裡,又按位分為:
d7位是表示後面傳送資料的方向位。
當d7等於0時,表示後面的資料是從主控器傳送到usb裝置。在pc裡,就是從pc機傳送到usb的裝置。
當d7等於1時,表示後面的資料是從usb裝置傳送到主控器。在pc裡,就是從usb裝置傳送到usb裝置。在上次裡,我收到並顯示出來的資料是80,就表示從usb裝置裡傳送資料給pc。在這裡再次給出上一次的包資料:
80 06 00 01 00 00 40 00
這裡的80,就是d7位為1。
d6-d5位是請求主分型別
0 是表示標準的請求。
1 是表示類別的請求。
2 是表示廠商的請求。
3 是保留。
d4-d0位是表求接收這個包的介面。
0 是表示usb裝置接收。
1 是表示介面接收。
2 是表示端點接收。
3 是表示其它接收,不知道的。
4-31是保留。
brequest是本描述符的請求型別,也就是後面傳送的資料是什麼樣的東西。由於usb裡有很多配置資訊,比如獲取裝置描述符,又有設定usb位址等等,就是通過這個位元組來區分的。
從usb協議裡查詢表9-4,就可看到如下的編碼:
get_status 0
clear_feature 1
reserved for future use 2
set_feature 3
reserved for future use 4
set_address 5
get_descriptor 6
set_descriptor 7
get_configuration 8
set_configuration 9
get_inte***ce 10
set_inte***ce 11
synch_frame 12
在上面的資料報裡,看到它的內容是06,那麼它就是get_descriptor型別。也就是主控器想讀取usb裝置的描述符,到這裡就已經分析出來的意思,就是主控器想讀取usb描述符,但還不知道是什麼描述符的內容。
wvalue是根據不同的請求而設定不同的值。一般就是傳送引數給裝置標明這是什麼請求。在上面get_descriptor獲取裝置描述符裡,它的值是00 01。在get_descriptor裡這個欄位的低位元組表示描述符的索引,高位元組表示描述符的型別。高位元組的型別如下:
device 1
configuration 2
string 3
inte***ce 4
endpoint 5
device_qualifier 6
other_speed_configuration 7
inte***ce_power1 8
wvalue值在這裡的高位元組是01,那麼它就是裝置描述符了。低位元組是00,那麼它就是表示從偏移位址0開始讀取裝置描述符。由於在配置描述符裡有很多配置,所以低位元組在那裡就可以用來識別獲取同樣型別的描述符不同的配置。
windex是根據不同的請求而設定不同的值。一般用來說明端點號或者說明介面標識。在獲取描述符裡,設定為0,或者是語言id。在這個傳送的描述符裡,它是設定為00 00。
wlength是根據請求來決定下一階段傳送資料的長度。前面請求第乙個位元組裡,已經說明下一階段資料傳送的方向,這裡說明了傳送資料的長度。不管是傳送資料,還是接收資料,都不要超過這個資料長度,否則主機會出問題,或者裝置有問題。在這個獲取裝置描述裡,它的長度是40 00,按小端格式去解釋,就是64個位元組。
資料結構 非遞迴
include stdafx.h include using namespace std 二叉樹鏈式儲存的標頭檔案 typedef char datatype 結點屬性值型別 typedef struct node 二叉樹結點的型別 bintnode typedef bintnode bintree...
資料結構 魔王語言解釋
一 需求分析 1 有乙個魔王總是使用自己的一種非常精煉而抽象的語言講話,沒有人能聽得懂,但他的語言是可以逐步解釋 能聽懂的語言,因為他的語言是由以下兩種形式的規則由人的語言逐步抽象上去的 1 1 2 m 2 1 2 n n n 1 1 在這兩種形式中,從左到右均表示解釋。試寫乙個魔王語言的解釋系統,...
資料結構 名詞解釋
1 資料集合中各個資料元素之間的邏輯關係,即資料的邏輯結構 2 在對資料進行處理時,各資料元素在計算機中的儲存關係,即資料的儲存結構 3 對各種資料結構進行的運算。資料結構 是指相互有關聯的資料元素的集合。在具有相同特徵的資料元素集合中,各個資料元素之間存在有某種關係,這種關係反映了該集合中的資料元...