**:
說到usb裝置,不得不提到各種描述符(descriptors), 一般來說,描述符有如下幾種:
1:裝置描述符(device descriptors)
2:配置描述符(configuration descriptors)
2:介面描述符(inte***ce descriptors)
3:端點描述符(endpoint descriptors)
乙個usb裝置只有乙個裝置描述符,裝置描述符裡面定義了該裝置有多少種配置,每種配置描述符對應著配置描述符;而在配置描述符中又定義了該配置裡面有多少個介面,每個介面有對應的介面描述符;在介面描述符裡面又定義了該介面有多少個端點,每個端點對應乙個端點描述符;端點描述符定義了端點的大小,型別等等。由此我們可以看出,usb的描述符之間的關係是一層一層的,最上一層是裝置描述符,下面是配置描述符,再下面是介面描述符,再下面是端點描述符。在獲取描述符時,先獲取裝置描述符,然後再獲取配置描述符,根據配置描述符中的配置集合長度,一次將配置描述符、介面描述符、端點描述符一起一次讀回。其中可能還會有獲取裝置序列號,廠商字串,產品字串等。
詳細關係如下圖所示:
下面我們從軟體的角度來看看這些描述符的詳細定義(以下定義取自window系統, linux下命名稍有區別,成員內容一致)
裝置描述符結構體如下:
[cpp]
view plain
copy
typedef
struct
_usb_device_descriptor usb_device_descriptor, *pusb_device_descriptor;
配置描述符結構體如下:
[cpp]
view plain
copy
typedef
struct
_usb_configuration_descriptor usb_configuration_descriptor, *pusb_configuration_descriptor;
介面描述符結構體如下:
[cpp]
view plain
copy
typedef
struct
_usb_inte***ce_descriptor usb_inte***ce_descriptor, *pusb_inte***ce_descriptor;
端點描述符結構體如下:
[cpp]
view plain
copy
typedef
struct
_usb_endpoint_descriptor usb_endpoint_descriptor, *pusb_endpoint_descriptor;
除以上四種描述符之外,還有一種字串描述符,對於乙個usb裝置來說, 該描述符不是必須實現的(當不實現時,應將該描述符設定成0,以表明該功能未實現)。
[cpp]
view plain
copy
typedef
struct
_usb_string_descriptor usb_string_descriptor, *pusb_string_descriptor;
USB裝置開發 usb描述符概述
說到usb裝置,不得不提到各種描述符 descriptors 一般來說,描述符有如下幾種 1 裝置描述符 device descriptors 2 配置描述符 configuration descriptors 2 介面描述符 inte ce descriptors 3 端點描述符 endpoint...
關於usb描述符
usb 的描述符主要有裝置描述符,裝置限定描述符,介面描述符,端點描述符,字串描述符等等,usb的描述符之間的關係是一層一層的,首先最上層的是裝置描述符,然後是配置描述符,在下面的是介面描述符,最後是端點描述符.描述符在乙個usb的裝置中所起的作用是十分重要的,在裝置連線到usb主機以後,主機首先是...
USB 描述符詳解
usb描述符的分類與介紹 usb的符述符分為幾類?有人可能會答 裝置描述符 配置描述符 介面描述符 端點描述符 字串描述符等。但這裡說的不是這樣的。上面的幾類描述符屬於usb標準描述符。另外還有hid描述符和hub描述符。所以分類是這樣的 1.標準描述符 1 裝置描述符 2 配置描述符 3 字串描述...