新四季網

usb描述符獲取方法(USB系列之第五章USB描述符)

2023-04-20 13:35:58 1

usb描述符獲取方法?,我來為大家科普一下關於usb描述符獲取方法?下面希望有你要的答案,我們一起來看看吧!

usb描述符獲取方法

USB描述符所有的USB設備都有一個描述主機信息的描述符層次結構,如設備是什麼、誰製造的、它支持什麼版本的USB、可以配置多少種方式、端點的數量及其類型等等更常見的USB描述符是設備描述符配置描述符接口描述符終結點描述符字符串描述符USB設備只能有一個設備描述符。設備描述符包括以下信息:設備符合的USB版本、用於加載適當驅動程序的產品和供應商ID以及設備可能具有的配置數量。配置的數量表示要遵循多少個配置描述符分支。如果描述器使用的是自供電的配置,那麼它指定了設備的數量,或者說它使用的是自供電配置的數量。當枚舉一個設備時,主機讀取設備描述符,並可以決定啟用哪個配置。它一次只能啟用一個配置。例如,可以有高功率總線供電配置和自供電配置。如果設備插入有主電源的主機,設備驅動程序可以選擇啟用大功率總線供電配置,使設備在不連接電源的情況下也能供電,但如果設備連接到筆記本電腦或個人事務管理器,則可以啟用第二種配置(自供電)將需要電源的用戶插入設備。配置設置不限於功率差。每個配置都可以以相同的方式供電,並消耗相同的電流,但有不同的接口或端點組合。但是應該注意的是,更改配置需要停止每個端點上的所有活動。雖然USB提供了這種靈活性,但很少有設備有一個以上的配置。接口描述符可以看作是一個頭,或者將端點分組到一個功能組中,執行設備的單個功能。例如,您可以擁有多功能傳真/掃描儀/印表機設備。印表機接口描述符功能可以描述印表機接口描述符的三個功能。與配置描述符不同,一次只啟用一個接口沒有限制。一個設備可以同時啟用一個或多個接口描述符。描述符有一個接口 B接口指定接口號和 平衡設置它允許界面動態更改設置。例如,我們可以有一個有兩個接口的設備,接口一和接口二。一號接口 B接口設置為零表示它是第一個接口描述符和 平衡設置零接口2將有一個 B接口設置為1表示它是第二個接口和 平衡設置為零(默認)。然後我們可以使用另一個描述符 B接口設置為1表示它是第二個接口,但這次設置 平衡設置對於一個,指示此接口描述符可以作為另一個接口描述符2的替代設置。啟用此配置時,前兩個接口描述符 B備用設置使用等於零。但是,在操作期間,主機可以發送一個指向接口1的SetInterface請求,另一個設置為1,以啟用另一個接口描述符。這比有兩種配置有一個優勢,因為我們可以通過接口0傳輸數據,同時更改與接口1相關的端點設置,而不會影響接口0。每個端點描述符用於指定每個端點的傳輸類型、方向、輪詢間隔和最大數據包大小。端點0,默認的控制端點總是被假定為控制端點,因此從來沒有描述符。USB描述符的組成所有的描述符都由一種通用格式組成。第一個字節指定描述符的長度,而第二個字節表示描述符的類型。如果描述符的長度小於規範定義的長度,則主機將忽略它。但是,如果大小大於預期,主機將忽略多餘的字節,並開始在實際返回長度的末尾查找下一個描述符。抵消場大小价值說明zero混合one數量描述符的大小(字節)oneb說明one常數描述符類型two...n描述符的參數開始設備描述符USB設備的設備描述符代表整個設備。因此,一個USB設備只能有一個設備描述符。它指定了一些有關設備的基本但重要的信息,例如支持的USB版本、最大數據包大小、供應商和產品id以及設備可以具有的可能配置的數量。設備描述符的格式如下所示。抵消場大小价值說明zero混合one數量描述符的大小(字節)(18位元組)oneb描述器one常數設備描述符(0x01)twobcdUSB公司twoBCD公司設備也符合的USB規格號。fourB設備one等級類代碼(由USB組織分配)如果等於零,則每個接口指定它自己的類代碼如果等於0xFF,則類代碼由供應商指定。否則欄位是有效的類代碼。fiveB設備子類one子類子類代碼(由USB組織分配)sixB設備協議one協議協議代碼(由USB組織分配)sevenB包裝尺寸one數量零終結點的最大數據包大小。有效尺寸為8、16、32、64eightID供應商two身份證件供應商ID(由USB組織分配)tenIDP產品two身份證件產品ID(由製造商指定)twelveBCD設備twoBCD公司設備發布號fourteen圖像製造商one索引製造商字符串描述符的索引fifteeni產品one索引產品字符串描述符索引sixteeniSerialNumber公司one索引序列號字符串描述符索引seventeenbNum配置one整數可能配置的數量這個 bcdUSB公司欄位報告設備支持的最高版本的USB。該值採用二進位編碼的十進位格式,格式為0xJJMN,其中JJ是主版本號,M是次要版本號,N是次次要版本號。e、 g.USB 2.0報告為0x0200,USB 1.1報告為0x0110,USB 1.0報告為0x0100。這個 b設備類,b設備子類 B設備協議由作業系統用於為您的設備查找類驅動程序。通常只有bDeviceClass在設備級別設置。大多數類規範選擇在接口級別標識自己,結果將bDeviceClass設置為0x00。這允許一個設備支持多個類。這個 B包裝尺寸欄位報告端點0的最大數據包大小。所有設備都必須支持終結點零。這個 ID供應商 IDP產品由作業系統用於為您的設備查找驅動程序。供應商ID由USB-IF .這個BCD設備具有與bcdUSB相同的格式,並用於提供設備版本號。此值由開發人員指定。存在三個字符串描述符來提供製造商、產品和序列號的詳細信息。不需要有字符串描述符。如果不存在字符串描述符,則應使用零索引。bNum配置定義設備在其當前速度下支持的配置數。配置描述符一個USB設備可以有幾種不同的配置,儘管大多數設備都很簡單而且只有一種。配置描述符指定設備的供電方式、最大功耗、接口數量。因此,可以有兩種配置,一種用於設備總線供電,另一種用於電源供電。由於這是接口描述符的「頭」,因此使用不同於另一個配置的傳輸模式的一個配置也是可行的。一旦主機檢查了所有配置,主機將發送一個SetConfiguration命令,該命令的值與其中一個配置的bConfigurationValue相匹配。這用於選擇所需的配置。抵消場大小价值說明zero混合one數量描述符的大小(字節)oneb描述器one常數配置描述符(0x02)two總長度two數量返回數據的總長度(字節)fourB接口one數量接口數量fiveB配置one數量值用作選擇此配置的參數sixI配置one索引描述此配置的字符串描述符的索引sevenBM屬性one位圖D7保留,設置為1。(USB 1.0總線供電)D6自供電D5遠程喚醒D4..0保留,設置為0。eightB最大功率one媽媽2mA單元的最大功耗讀取配置描述符時,它返回整個配置層次結構,其中包括所有相關接口和端點描述符。這個 總長度欄位反映層次結構中的字節數。B接口指定此配置的接口數B配置由SetConfiguration請求用於選擇此配置。I配置是以人類可讀形式描述配置的字符串描述符的索引。BM屬性指定配置的電源參數。如果設備是自供電的,則設置為D6。位D7在usb1.0中用於表示總線供電的設備,但現在由bMaxPower完成。如果設備使用來自總線的任何電源,無論它是作為總線供電設備還是作為自供電設備,它都必須以bMaxPower報告其功耗。設備還可以支持遠程喚醒,允許設備在主機處於掛起狀態時喚醒主機。B最大功率定義設備將從總線消耗的最大功率。這是以2mA為單位的,因此可以指定最大約500mA。該規範允許大功率總線供電設備從VBU中的電流不超過500mA。如果設備失去外部電源,則其消耗的電量不得超過bMaxPower中指示的值。如果沒有外部電源,它將無法執行任何操作。接口描述符接口描述符可以看作是一個頭,或者將端點分組到一個功能組中,執行設備的單個功能。接口描述符符合以下格式,抵消場大小价值說明zero混合one數量描述符大小(字節)(9位元組)oneb描述器one常數接口描述符(0x04)twoB接口one數量接口數量three平衡設置one數量用於選擇替代設置的值fourB點數one數量用於此接口的終結點數fiveBinterfaceclassone等級類代碼(由USB組織分配)six子類接口one子類子類代碼(由USB組織分配)sevenB接口協議one協議協議代碼(由USB組織分配)eight接口one索引字符串描述符索引B接口指示接口描述符的索引。它應該從零開始,並且每增加一個新的接口描述符。平衡設置可用於指定替代接口. 這些可選接口可以用設置接口請求B點數指示接口使用的終結點數。此值應排除端點0,並用於指示要遵循的端點描述符的數量。BinInterfaceClass,BinInterfaceSubclass B接口協議可用於指定支持的類(例如HID、通信、大容量存儲等),這允許許多設備使用類驅動程序,從而避免為設備編寫特定的驅動程序。接口允許接口的字符串描述。終結點描述符端點描述符用於描述端點0以外的端點。端點0始終被假定為控制端點,並且在請求任何描述符之前進行配置。主機將使用這些描述符返回的信息來確定總線的帶寬需求。抵消場大小价值說明zero混合one數量描述符大小(字節)(7位元組)oneb描述器one常數終結點描述符(0x05)two修改地址one終結點終點地址位0..3b端點編號。位4..6b保留。設為零Bits 7 Direction 0 = Out, 1 = In (Ignored for Control Endpoints)threeBM屬性one位圖位0..1傳輸類型00 = Control01 = Isochronous10 = Bulk11 = Interrupt位2..7被保留。如果是等時端點,Bits 3..2 = Synchronisation Type (Iso Mode)00 = No Synchonisation01 = Asynchronous10 = Adaptive11 = SynchronousBits 5..4 = Usage Type (Iso Mode)00 = Data Endpoint01 = Feedback Endpoint10 = Explicit Feedback Data Endpoint11 = Reservedfour包長度two數量此端點能夠發送或接收的最大數據包大小sixB間期one數量輪詢終結點數據傳輸的間隔。幀計數中的值。對批量控制終結點忽略(&C)。對於中斷端點,Isochronous必須等於1,並且欄位的範圍可以是1到255。修改地址指示此描述符描述的端點。BM屬性指定傳輸類型。這可以是控制 ,中斷 ,等時或批量傳輸. 如果指定了同步端點,則可以選擇其他屬性,例如同步和使用類型。包長度指示此終結點的最大負載大小。B間期用於指定某些傳輸的輪詢間隔。單位以幀表示,因此對於低速/全速設備,這等於1ms,對於高速設備等於125us。字符串描述符字符串描述符提供人類可讀的信息,並且是可選的。如果不使用它們,則描述符的任何字符串索引欄位都必須設置為零,表示沒有可用的字符串描述符。字符串被編碼在Unicode碼可以製作格式和產品來支持多種語言。字符串索引0應返回受支持語言的列表。可以在中找到USB語言ID的列表通用串行總線語言標識符(LANGIDs)版本1.0抵消場大小价值說明zero混合one數量描述符的大小(字節)oneb描述器one常數字符串描述符(0x03)twoWLANGID[0]two數支持的語言代碼0(例如0x0409英語-美國)four瓦朗吉德[1]two數支持的語言代碼1(例如0x0c09英語-澳大利亞)n瓦朗吉德[x]two數支持的語言代碼x(例如0x0407德語-標準)上面的字符串描述符顯示了字符串描述符0的格式。主機應讀取此描述符以確定可用的語言。如果wIndex的語言支持發送,則獲取描述符(字符串)請求所有後續字符串採用以下格式,抵消場大小价值說明zero混合one數量描述符的大小(字節)oneb描述器one常數字符串描述符(0x03)twoB串nUnicode碼Unicode編碼字符串,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了