0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Gadget框架構(gòu)造描述符

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-13 11:34 ? 次閱讀

假設(shè)你要【模擬】一個(gè) USB 設(shè)備:

這個(gè) USB 設(shè)備含有廠家信息:它記錄在設(shè)備描述符里,所以設(shè)備描述符應(yīng)該由你提供

這個(gè)芯片可能有多種配置,這也是由你決定,所以配置描述符應(yīng)該由你提供

某個(gè)配置下多個(gè)接口,接口就是功能,Linux 內(nèi)核里事先提供了很多功能的驅(qū)動(dòng)程序,所以:接口描述符是內(nèi)核提供的

某個(gè)接口下需要什么端點(diǎn),也是內(nèi)核里各類功能的驅(qū)動(dòng)程序提供的

以 zero.c 為例:

配置 1:loopback,Host 寫數(shù)據(jù)給它,就可以讀出原樣的數(shù)據(jù)

配置 2:sourcesink,Host 寫數(shù)據(jù)給它(它只是記錄下數(shù)據(jù)),Host 還可以讀數(shù)據(jù)(讀到的都是0)

從下到上涉及這些文件:

圖片

閱讀源碼時(shí),入口函數(shù)是usb_composite_probe(&zero_driver):

圖片

函數(shù)調(diào)用過程中主要的函數(shù)如下,重點(diǎn)關(guān)注“xxx_bind”函數(shù),bind 就是初始化的意思:

usb_composite_probe

composite_bind

zero_bind

sourcesink_bind/loopback_bind

圖片

深入解讀描述符的構(gòu)造過程,可以得到下面的圖:

構(gòu)造出一個(gè) usb_composite_dev 結(jié)構(gòu)體

它把各層串聯(lián)起來,里面構(gòu)造有設(shè)備描述符、配置描述符、接口描述符、端點(diǎn)描述符

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5058

    文章

    18972

    瀏覽量

    301905
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11204

    瀏覽量

    208699
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    398

    瀏覽量

    17400
收藏 人收藏

    評論

    相關(guān)推薦

    USB描述符詳解

    對于實(shí)現(xiàn)USB功能的項(xiàng)目,不管是實(shí)現(xiàn)CDC,大容量存儲、HID等都必須使用實(shí)現(xiàn)USB標(biāo)準(zhǔn)描述符,從而實(shí)現(xiàn)USB枚舉過程。這里共享一個(gè)USB描述符的詳解。
    發(fā)表于 06-12 14:46

    UBL UBOOT 描述符

    ?? 在DM368的開發(fā)包目錄下/psp/flash-utils/DM36x/GNU:執(zhí)行make 可以省成UBL:ubl_DM36x_nand.bin ;我想問的是如何添加UBL 的描述符?燒寫到
    發(fā)表于 06-21 08:48

    USB設(shè)備檢測過程的USB設(shè)備的描述符

    `標(biāo)準(zhǔn)的 USB 描述符包括設(shè)備(Device)描述符、配置(Configuration)描述符、接口(Interface)描述符、端點(diǎn)(Endpoint)
    發(fā)表于 11-12 09:23

    usb標(biāo)準(zhǔn)描述符之技巧

    usb標(biāo)準(zhǔn)描述符之技巧 USB是個(gè)通用的總線,端口都是統(tǒng)一的。但是USB設(shè)備卻各種各樣,例如USB鼠標(biāo),USB鍵盤,U盤等等,那么USB主機(jī)是如何識別出不同的設(shè)備的呢?這就要依賴
    發(fā)表于 04-12 11:09 ?1514次閱讀

    USB HID報(bào)告及報(bào)告描述符簡介

    在USB中,USB HOST是通過各種描述符來識別設(shè)備的,有設(shè)備描述符,配置描述符,接口描述符,端點(diǎn)描述符,字符串
    發(fā)表于 04-12 11:13 ?3999次閱讀

    Descriptor描述符解釋

    Descriptor即描述符,是一個(gè)完整的數(shù)據(jù)結(jié)構(gòu),可以通過C語言等編程實(shí)現(xiàn),并存儲在USB設(shè)備中,用于描述一個(gè)USB設(shè)備的所有屬性,USB主機(jī)是通過一系列命令來要求設(shè)備發(fā)送這些信息的。
    發(fā)表于 07-16 09:39 ?2612次閱讀

    Linux中文件及文件描述符概述

    6.2 Linux中文件及文件描述符概述 在Linux中對目錄和設(shè)備的操作都等同于文件的操作,因此,大大簡化了系統(tǒng)對不同設(shè)備的處理,提高了效率。Linux中的文件主要分為4種:普通文件、目錄文件
    發(fā)表于 10-18 14:35 ?0次下載

    USB設(shè)備鍵值表描述符說明資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是USB設(shè)備鍵值表描述符說明資料免費(fèi)下載包括了:1.設(shè)備描述符的結(jié)構(gòu),2. 配置描述符的結(jié)構(gòu),3. 接口描述符的結(jié)構(gòu),4. HID
    發(fā)表于 07-16 16:56 ?35次下載
    USB設(shè)備鍵值表<b class='flag-5'>描述符</b>說明資料免費(fèi)下載

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

    USB 是個(gè)通用的總線,端口都是統(tǒng)一的。但是USB 設(shè)備卻各種各樣,例如USB 鼠標(biāo), USB鍵盤, U盤等等,那么USB 主機(jī)是如何識別出不同的設(shè)備的呢?這就要依賴于描述符了。USB 的描述符主要有設(shè)備描述符,配置
    發(fā)表于 07-23 16:53 ?8次下載
    USB各<b class='flag-5'>描述符</b>之間的依賴是怎么樣的

    隱藏描述符工具應(yīng)用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是HID Descriptor Tool隱藏描述符工具應(yīng)用程序免費(fèi)下載。
    發(fā)表于 01-08 08:00 ?11次下載
    隱藏<b class='flag-5'>描述符</b>工具應(yīng)用程序免費(fèi)下載

    Linux系統(tǒng)編程中的文件描述符調(diào)用

    文件描述符 進(jìn)程每打開一個(gè)文件的時(shí)候,會(huì)獲得該文件的文件描述符,而后續(xù)的讀寫操作都把文件描述符作為參數(shù)。在用戶空間或者內(nèi)核空間,都是通過文件描述符來唯一地索引一個(gè)打開的文件。文件
    的頭像 發(fā)表于 09-02 09:50 ?1635次閱讀
    Linux系統(tǒng)編程中的文件<b class='flag-5'>描述符</b>調(diào)用

    科普一下什么是USB的描述符

    以及行為呢?這就要通過描述符來實(shí)現(xiàn)了。那么什么是USB的描述符呢?其實(shí)就是一些傳遞的協(xié)議信息,比如設(shè)備的類型、廠商ID、產(chǎn)品ID、端點(diǎn)情況、版本號等信息。 既然描述符是協(xié)議信息,那么不同的版本也會(huì)有所不同,比如USB1.1協(xié)議定
    的頭像 發(fā)表于 12-02 14:41 ?3891次閱讀

    從獲取描述符的角度理解Gadget框架

    安裝好 gadget 驅(qū)動(dòng)程序后(比如 modprobe g_zero), 它只是構(gòu)造好了各類描述符。在設(shè)備的枚舉過程會(huì)讀取描述符。 使用 OTG 線連接電腦和開發(fā)板時(shí),電腦軟件會(huì)執(zhí)行
    的頭像 發(fā)表于 07-13 11:38 ?834次閱讀
    從獲取<b class='flag-5'>描述符</b>的角度理解<b class='flag-5'>Gadget</b><b class='flag-5'>框架</b>

    基于DWC_ether_qos的以太網(wǎng)驅(qū)動(dòng)開發(fā)-描述符格式介紹

    前面我們介紹了描述符鏈表的工作模式,重點(diǎn)是了解環(huán)形鏈表是如何環(huán)形的,以及相關(guān)的寄存器。驅(qū)動(dòng)編寫就需要更進(jìn)一步,了解描述符的具體內(nèi)容,即4個(gè)描述符的每個(gè)字段的含義。
    的頭像 發(fā)表于 09-04 14:14 ?2311次閱讀
    基于DWC_ether_qos的以太網(wǎng)驅(qū)動(dòng)開發(fā)-<b class='flag-5'>描述符</b>格式介紹

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

    學(xué)習(xí) Python 這么久了,說起 Python 的優(yōu)雅之處,能讓我脫口而出的, Descriptor(描述符)特性可以排得上號。 描述符 是Python 語言獨(dú)有的特性,它不僅在應(yīng)用層使用,在語言
    的頭像 發(fā)表于 11-02 10:52 ?951次閱讀
    Python的優(yōu)雅之處:Descriptor(<b class='flag-5'>描述符</b>)