假设你要【模拟】一个 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 结构体
它把各层串联起来,里面构造有设备描述符、配置描述符、接口描述符、端点描述符
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
要求如下:
定义两个个描述符类型的数组,如
SpiTxDesptr[3]= {{ SpiTxDesptr[1], X, X,X,X},{ SpiTxDesptr[2], X, X,X,X
发表于 01-12 08:07
复杂、涉及内容最多的报表描述符,好好跟大伙揉开了,捏碎了,细细的聊上一聊。由于HID协议就有70来页,再加上HID用途表又有170多页。如果逐个介绍的话,那工作量大了去啊,再说也没必要完全掌握,咱们
发表于 06-06 12:02
对于实现USB功能的项目,不管是实现CDC,大容量存储、HID等都必须使用实现USB标准描述符,从而实现USB枚举过程。这里共享一个USB描述符的详解。
发表于 06-12 14:46
引用句柄的类型描述符的每个数值元素都表示什么信息,找了好多资料都没有介绍这个问题的,请高手们帮忙分析一下,谢谢!
发表于 04-30 13:04
在DM368的开发包目录下/psp/flash-utils/DM36x/GNU:执行make 可以省成UBL:ubl_DM36x_nand.bin ;我想问的是如何添加UBL 的描述符?烧写到
发表于 06-21 08:48
host buff 和 host pkt 描述符设置的return qmgr 和return qnum 是一样的,pkt dma 搬移后 host pkt描述符能够回到return qnum,host buff 描述符却不能呢?
发表于 08-06 06:22
请问一下,协调器可以通过什么得到其组网的终端的终端描述符?从一个终端查找终端描述符afFindEndPointDesc(byte endpoint),这个方法是指终端本身查找,还是说协调器可以通过这个函数,根据终端号得到其组网的终端的终端
发表于 08-09 07:35
要求如下:定义两个个描述符类型的数组,如SpiTxDesptr[3]= {{&SpiTxDesptr[1], X, X,X,X},{&SpiTxDesptr[2], X, X,X,X
发表于 10-12 09:16
`标准的 USB 描述符包括设备(Device)描述符、配置(Configuration)描述符、接口(Interface)描述符、端点(Endpoint)
发表于 11-12 09:23
我想使用多个配置描述符。其中一个会有DirectSound接口(和界面不会从柏树驱动器接收数据),其他的就没有接口,而Cypress司机会提供DirectSound会使用定义的接口供应商数据。我已经
发表于 04-19 09:19
HID报告描述符生成工具
发表于 07-25 15:58
我买了一本书《Linux网络编程》。 看到第11章高级套接字。有个例子,传递文件描述符。 其中,进程A根据用户输入的文件名打开一个文件,将文件描述符打包到消息结构中,然后发送给进程B. 进程A的代码
发表于 05-07 02:18
一个 Linux 进程启动后,会在内核空间中创建一个 PCB 控制块,PCB 内部有一个文件描述符表(File descriptor table),记录着当前进程所有可用的文件描述符,也即当前
发表于 10-23 16:11
这个描述符是什么呀,类似linux系统的文件描述符吗
发表于 05-26 06:15
安装好 gadget 驱动程序后(比如 modprobe g_zero), 它只是构造好了各类描述符。在设备的枚举过程会读取描述符。 使用 OTG 线连接电脑和开发板时,电脑软件会执行
发表于 07-13 11:38
•539次阅读
评论