這個 USB 設備含有廠家信息:它記錄在設備描述符里,所以設備描述符應該由你提供
這個芯片可能有多種配置,這也是由你決定,所以配置描述符應該由你提供
某個配置下多個接口,接口就是功能,Linux 內核里事先提供了很多功能的驅動程序,所以:接口描述符是內核提供的
某個接口下需要什么端點,也是內核里各類功能的驅動程序提供的
以 zero.c 為例:
配置 1:loopback,Host 寫數據給它,就可以讀出原樣的數據
配置 2:sourcesink,Host 寫數據給它(它只是記錄下數據),Host 還可以讀數據(讀到的都是0)
從下到上涉及這些文件:
閱讀源碼時,入口函數是usb_composite_probe(&zero_driver):
函數調用過程中主要的函數如下,重點關注“xxx_bind”函數,bind 就是初始化的意思:
usb_composite_probe
composite_bind
zero_bind
sourcesink_bind/loopback_bind
深入解讀描述符的構造過程,可以得到下面的圖:
構造出一個 usb_composite_dev 結構體
它把各層串聯起來,里面構造有設備描述符、配置描述符、接口描述符、端點描述符
-
嵌入式
+關注
關注
5150文章
19665瀏覽量
317452 -
Linux
+關注
關注
87文章
11509瀏覽量
213745 -
框架
+關注
關注
0文章
404瀏覽量
17890
發布評論請先 登錄
USB描述符詳解
UBL UBOOT 描述符
usb標準描述符之技巧
USB HID報告及報告描述符簡介
Descriptor描述符解釋
Linux中文件及文件描述符概述
USB設備鍵值表描述符說明資料免費下載

USB各描述符之間的依賴是怎么樣的

Linux系統編程中的文件描述符調用

科普一下什么是USB的描述符
從獲取描述符的角度理解Gadget框架

基于DWC_ether_qos的以太網驅動開發-描述符格式介紹

Python的優雅之處:Descriptor(描述符)

評論