假設你要【模擬】一個 USB 設備:
這個 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 結構體
它把各層串聯起來,里面構造有設備描述符、配置描述符、接口描述符、端點描述符
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
相關推薦
對于實現USB功能的項目,不管是實現CDC,大容量存儲、HID等都必須使用實現USB標準描述符,從而實現USB枚舉過程。這里共享一個USB描述符的詳解。
發表于 06-12 14:46
??
在DM368的開發包目錄下/psp/flash-utils/DM36x/GNU:執行make 可以省成UBL:ubl_DM36x_nand.bin ;我想問的是如何添加UBL 的描述符?燒寫到
發表于 06-21 08:48
`標準的 USB 描述符包括設備(Device)描述符、配置(Configuration)描述符、接口(Interface)描述符、端點(Endpoint)
發表于 11-12 09:23
usb標準描述符之技巧
USB是個通用的總線,端口都是統一的。但是USB設備卻各種各樣,例如USB鼠標,USB鍵盤,U盤等等,那么USB主機是如何識別出不同的設備的呢?這就要依賴
發表于 04-12 11:09
?1528次閱讀
在USB中,USB HOST是通過各種描述符來識別設備的,有設備描述符,配置描述符,接口描述符,端點描述符,字符串
發表于 04-12 11:13
?4034次閱讀
Descriptor即描述符,是一個完整的數據結構,可以通過C語言等編程實現,并存儲在USB設備中,用于描述一個USB設備的所有屬性,USB主機是通過一系列命令來要求設備發送這些信息的。
發表于 07-16 09:39
?2644次閱讀
6.2 Linux中文件及文件描述符概述 在Linux中對目錄和設備的操作都等同于文件的操作,因此,大大簡化了系統對不同設備的處理,提高了效率。Linux中的文件主要分為4種:普通文件、目錄文件
發表于 10-18 14:35
?0次下載
本文檔的主要內容詳細介紹的是USB設備鍵值表描述符說明資料免費下載包括了:1.設備描述符的結構,2. 配置描述符的結構,3. 接口描述符的結構,4. HID
發表于 07-16 16:56
?35次下載
USB 是個通用的總線,端口都是統一的。但是USB 設備卻各種各樣,例如USB 鼠標, USB鍵盤, U盤等等,那么USB 主機是如何識別出不同的設備的呢?這就要依賴于描述符了。USB 的描述符主要有設備描述符,配置
發表于 07-23 16:53
?8次下載
本文檔的主要內容詳細介紹的是HID Descriptor Tool隱藏描述符工具應用程序免費下載。
發表于 01-08 08:00
?11次下載
文件描述符 進程每打開一個文件的時候,會獲得該文件的文件描述符,而后續的讀寫操作都把文件描述符作為參數。在用戶空間或者內核空間,都是通過文件描述符來唯一地索引一個打開的文件。文件
發表于 09-02 09:50
?1675次閱讀
以及行為呢?這就要通過描述符來實現了。那么什么是USB的描述符呢?其實就是一些傳遞的協議信息,比如設備的類型、廠商ID、產品ID、端點情況、版本號等信息。 既然描述符是協議信息,那么不同的版本也會有所不同,比如USB1.1協議定
發表于 12-02 14:41
?3954次閱讀
安裝好 gadget 驅動程序后(比如 modprobe g_zero), 它只是構造好了各類描述符。在設備的枚舉過程會讀取描述符。 使用 OTG 線連接電腦和開發板時,電腦軟件會執行
發表于 07-13 11:38
?924次閱讀
前面我們介紹了描述符鏈表的工作模式,重點是了解環形鏈表是如何環形的,以及相關的寄存器。驅動編寫就需要更進一步,了解描述符的具體內容,即4個描述符的每個字段的含義。
發表于 09-04 14:14
?2622次閱讀
學習 Python 這么久了,說起 Python 的優雅之處,能讓我脫口而出的, Descriptor(描述符)特性可以排得上號。 描述符 是Python 語言獨有的特性,它不僅在應用層使用,在語言
發表于 11-02 10:52
?997次閱讀
評論