0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Gadget框架构造描述符

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-13 11:34 次阅读

假设你要【模拟】一个 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 结构体

它把各层串联起来,里面构造有设备描述符、配置描述符、接口描述符、端点描述符

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5082

    文章

    19108

    浏览量

    304836
  • Linux
    +关注

    关注

    87

    文章

    11295

    浏览量

    209346
  • 框架
    +关注

    关注

    0

    文章

    403

    浏览量

    17476
收藏 人收藏

    评论

    相关推荐

    USB描述符详解

    对于实现USB功能的项目,不管是实现CDC,大容量存储、HID等都必须使用实现USB标准描述符,从而实现USB枚举过程。这里共享一个USB描述符的详解。
    发表于 06-12 14:46

    UBL UBOOT 描述符

       在DM368的开发包目录下/psp/flash-utils/DM36x/GNU:执行make 可以省成UBL:ubl_DM36x_nand.bin ;我想问的是如何添加UBL 的描述符?烧写到
    发表于 06-21 08:48

    USB设备检测过程的USB设备的描述符

    `标准的 USB 描述符包括设备(Device)描述符、配置(Configuration)描述符、接口(Interface)描述符、端点(Endpoint)
    发表于 11-12 09:23

    usb标准描述符之技巧

    usb标准描述符之技巧 USB是个通用的总线,端口都是统一的。但是USB设备却各种各样,例如USB鼠标,USB键盘,U盘等等,那么USB主机是如何识别出不同的设备的呢?这就要依赖
    发表于 04-12 11:09 1528次阅读

    USB HID报告及报告描述符简介

    在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串
    发表于 04-12 11:13 4034次阅读

    Descriptor描述符解释

    Descriptor即描述符,是一个完整的数据结构,可以通过C语言等编程实现,并存储在USB设备中,用于描述一个USB设备的所有属性,USB主机是通过一系列命令来要求设备发送这些信息的。
    发表于 07-16 09:39 2644次阅读

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

    6.2 Linux中文件及文件描述符概述 在Linux中对目录和设备的操作都等同于文件的操作,因此,大大简化了系统对不同设备的处理,提高了效率。Linux中的文件主要分为4种:普通文件、目录文件
    发表于 10-18 14:35 0次下载

    USB设备键值表描述符说明资料免费下载

    本文档的主要内容详细介绍的是USB设备键值表描述符说明资料免费下载包括了:1.设备描述符的结构,2. 配置描述符的结构,3. 接口描述符的结构,4. HID
    发表于 07-16 16:56 35次下载
    USB设备键值表<b class='flag-5'>描述符</b>说明资料免费下载

    USB各描述符之间的依赖是怎么样的

    USB 是个通用的总线,端口都是统一的。但是USB 设备却各种各样,例如USB 鼠标, USB键盘, U盘等等,那么USB 主机是如何识别出不同的设备的呢?这就要依赖于描述符了。USB 的描述符主要有设备描述符,配置
    发表于 07-23 16:53 8次下载
    USB各<b class='flag-5'>描述符</b>之间的依赖是怎么样的

    隐藏描述符工具应用程序免费下载

    本文档的主要内容详细介绍的是HID Descriptor Tool隐藏描述符工具应用程序免费下载。
    发表于 01-08 08:00 11次下载
    隐藏<b class='flag-5'>描述符</b>工具应用程序免费下载

    Linux系统编程中的文件描述符调用

    文件描述符 进程每打开一个文件的时候,会获得该文件的文件描述符,而后续的读写操作都把文件描述符作为参数。在用户空间或者内核空间,都是通过文件描述符来唯一地索引一个打开的文件。文件
    的头像 发表于 09-02 09:50 1675次阅读
    Linux系统编程中的文件<b class='flag-5'>描述符</b>调用

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

    以及行为呢?这就要通过描述符来实现了。那么什么是USB的描述符呢?其实就是一些传递的协议信息,比如设备的类型、厂商ID、产品ID、端点情况、版本号等信息。 既然描述符是协议信息,那么不同的版本也会有所不同,比如USB1.1协议定
    的头像 发表于 12-02 14:41 3956次阅读

    从获取描述符的角度理解Gadget框架

    安装好 gadget 驱动程序后(比如 modprobe g_zero), 它只是构造好了各类描述符。在设备的枚举过程会读取描述符。 使用 OTG 线连接电脑和开发板时,电脑软件会执行
    的头像 发表于 07-13 11:38 924次阅读
    从获取<b class='flag-5'>描述符</b>的角度理解<b class='flag-5'>Gadget</b><b class='flag-5'>框架</b>

    基于DWC_ether_qos的以太网驱动开发-描述符格式介绍

    前面我们介绍了描述符链表的工作模式,重点是了解环形链表是如何环形的,以及相关的寄存器。驱动编写就需要更进一步,了解描述符的具体内容,即4个描述符的每个字段的含义。
    的头像 发表于 09-04 14:14 2624次阅读
    基于DWC_ether_qos的以太网驱动开发-<b class='flag-5'>描述符</b>格式介绍

    Python的优雅之处:Descriptor(描述符

    学习 Python 这么久了,说起 Python 的优雅之处,能让我脱口而出的, Descriptor(描述符)特性可以排得上号。 描述符 是Python 语言独有的特性,它不仅在应用层使用,在语言
    的头像 发表于 11-02 10:52 998次阅读
    Python的优雅之处:Descriptor(<b class='flag-5'>描述符</b>)