假设你要【模拟】一个 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
•3956次阅读
安装好 gadget 驱动程序后(比如 modprobe g_zero), 它只是构造好了各类描述符。在设备的枚举过程会读取描述符。 使用 OTG 线连接电脑和开发板时,电脑软件会执行
发表于 07-13 11:38
•924次阅读
前面我们介绍了描述符链表的工作模式,重点是了解环形链表是如何环形的,以及相关的寄存器。驱动编写就需要更进一步,了解描述符的具体内容,即4个描述符的每个字段的含义。
发表于 09-04 14:14
•2624次阅读
学习 Python 这么久了,说起 Python 的优雅之处,能让我脱口而出的, Descriptor(描述符)特性可以排得上号。 描述符 是Python 语言独有的特性,它不仅在应用层使用,在语言
发表于 11-02 10:52
•998次阅读
评论