2.1.1.6 节_从零写 USB 摄像头驱动之分析描述符

本文深入解析USB标准描述符及USB视频设备描述符,包括设备、配置、接口和端点描述符的作用与关系。并通过自写USB驱动模拟lsusb命令获取描述符的过程,展示USB设备与驱动之间的交互原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1: USB 标准描述符和 USB video 设备描述符

1.一般的 USB 设备有设备描述符、配置描述符、接口描述符、端点描述符四种描述符。特定的 USB 设备还有它自己独特的描
述符。

上图中就是我们的标准描述符,也就是所有的 USB 设备都会有这些描述符

usb描述符可分为:

USB设备描述符(usb_device_descriptor);

USB配置描述符(usb_config_descriptor);

USB接口描述符(usb_interface_descriptor);

USB端点描述符(usb_endpoint_descriptor);

其中,一个USB设备描述符可以有多个配置描述符;配置描述符可以有多个接口描述符(比如声卡驱动,就有两个接口:录音接口和播放接口);一个接口描述符可以有多个端点描述符。

上图中白色的部分就是我们的标准的描述符,灰色的部分就是 USB Device Class Definition for Video(USB 摄像头设备) 这一
类设备所专有的描述符

USB 设备、配置、接口、端点与驱动之间的关系。
一个设备可能有多个配置,一个配置可以拥有多种接口(功能),每个接口(功能)对应一个 USB 驱动。
例如:
我们要为一个电视机增加一个 USB 接口,可以通过接入笔记本来播放笔记本中各种视频或者音乐。那么电视机就是一个 USB 设备。
若电视剧具备视频、音频两种功能,那么就可以使用两个接口来对应视频、音频功能。这两个接口使用两个 USB 驱动来编
写,一个对应视频子系统、一个对应音频子系统。

对于端点,视频需要传输图像数据、分配率控制等可以通过两个端点来负责传输。音频需要传输音频、音量、音效等数
据,可以通过三个端点来负责传输。

2:自己写 USB 驱动模拟 lsusb 命令获取描述符

我们自己写驱动把上面图中的 USB 摄像头设备的描述符都列举出来,看看里面的信息是什么

2.1:验证 probe 函数的调用次数( 1th)

我们之前二期的时候知道要在写驱动的时候要写 id_table,我们看看我么的 uvc_driver.c 中的 id_table 是怎么写的

struct usb_device_id 解析

中间省略

可以看到它定义的 id_table 中前面定义了很多特殊设备,可以指定哪家厂家的哪个型号,但在最后面有个通用的 USB video 设
备。
我们看下最后一项代表什么意思:

 

。。。。。。。。。。。。。。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值