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 设
备。
我们看下最后一项代表什么意思:
。。。。。。。。。。。。。。