吴忠躺衫网络科技有限公司

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

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

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

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

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

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

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

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

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

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

以 zero.c 為例:

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

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

從下到上涉及這些文件:

圖片

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

圖片

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

usb_composite_probe

composite_bind

zero_bind

sourcesink_bind/loopback_bind

圖片

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

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

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

圖片

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

    關(guān)注

    5094

    文章

    19178

    瀏覽量

    307732
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11345

    瀏覽量

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

    關(guān)注

    0

    文章

    403

    瀏覽量

    17543
收藏 人收藏

    評論

    相關(guān)推薦

    USB描述符詳解

    對于實現(xiàn)USB功能的項目,不管是實現(xiàn)CDC,大容量存儲、HID等都必須使用實現(xiàn)USB標(biāo)準(zhǔn)描述符,從而實現(xiàn)USB枚舉過程。這里共享一個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)描述符、端點(Endpoint)
    發(fā)表于 11-12 09:23

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

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

    USB HID報告及報告描述符簡介

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

    Descriptor描述符解釋

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

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

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

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

    本文檔的主要內(nèi)容詳細介紹的是USB設(shè)備鍵值表描述符說明資料免費下載包括了: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>說明資料免費下載

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

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

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

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

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

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

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

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

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

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

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

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

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

    學(xué)習(xí) Python 這么久了,說起 Python 的優(yōu)雅之處,能讓我脫口而出的, Descriptor(描述符)特性可以排得上號。 描述符 是Python 語言獨有的特性,它不僅在應(yīng)用層使用,在語言
    的頭像 發(fā)表于 11-02 10:52 ?1066次閱讀
    Python的優(yōu)雅之處:Descriptor(<b class='flag-5'>描述符</b>)
    百家乐官网龙虎台布价格| 女神百家乐官网娱乐城| 百家乐庄闲出现几| 罗浮宫百家乐官网的玩法技巧和规则 | 香港百家乐官网玩| 西盟| 大发8888游戏平台| 百家乐怎样捉住长开| 百家乐官网币| 钦州市| 535娱乐城下载| 威尼斯人娱乐网上百家乐| 澳门百家乐国际| 百家乐官网破解秘籍| 沙河市| 凯斯娱乐城| 大发888官方pt老虎机| 永利博百家乐现金网| 金龍百家乐官网的玩法技巧和规则 | 百家乐佛泰阁| 百家乐游戏群号| 重庆百家乐官网的玩法技巧和规则| 百家乐官网如何睇路| 优博在线| 申城棋牌2.0| 大发888赌场娱乐网规则| 百家乐翻天| 香港百家乐玩| 可以玩百家乐的博彩公司| 九州百家乐娱乐城| 百家乐官网网站| 做生意什么花招财| 做生意风水| 百家乐官网平预测软件| 免费百家乐官网预测工具| 免水百家乐官网的玩法技巧和规则| 现场百家乐官网玩法| 百家乐官网最新心得| 百家乐官网庄闲的概率| 金城百家乐官网玩法平台| 最好的百家乐官网娱乐场|