USB UVC学习笔记第2篇—提取描述符信息

       此情此景,我脑海里突然联想到当年宋丹丹老师提出的一个深奥的问题“把大象装冰箱分几步?”,你可以按照宋丹丹老师的

方法“开冰箱-把大象装进去-关冰箱”,但小品归小品,只是为博人一笑,把大象装冰箱之前还是要进行肢解的。

       通过上一篇对USB枚举过程的数据抓包分析,你已经见过“大象”了,见下面那庞大的一坨……,本篇要做的就是把下面那一

坨数据给肢解开,分析各个描述符之间的关联及含义,从而深入了解UVC协议。

 

       下图是从CSDN博客上找的对“大象”的解剖图,本篇将按照下图架构对UVC描述符进行剖析,其中“设备描述符”和“配置描述

符”由于上一篇已经提过,故本篇不再讲解。

 

      由于笔者最近正在开发UVC相关的USB固件,本篇会结合Cypress的Cy68013芯片的demo进行对照。

 

2.1 准备工作

      上一篇我们已经做了一些准备工作,但若要分析那么一大坨数据,单靠肉眼去提取人是会崩溃的,幸好我们还有一个分析

UVC描述符的小软件,有了它我们基本就不用肉眼去解析描述符了,下载地址:https://download.csdn.net/download

/weixin_42314225/10775935

      打开我们刚刚下载好的小软件,将UVC摄像头插入PC,可以看到下图所示画面,所有描述符信息已经帮我们解析好了,接下

来我们需要对照UVC官方文档与68013提供的UVC demo程序中“dscr.a51”汇编文件进行数据分析。

2.2 IAD描述符

      

      IAD是“Interface Association Descriptor”的简写,译为“接口联合描述符”,在第1篇中,我们了解了一个配置描述符是接口描述

符的集合,在UVC中,IAD描述符就是描述描述一个视频接口集合的,对于每一个设备功能需要一个视频控制接口

(VideoControl Interface)和一个或者多个视频流接口(VideoStreaming Interface)。

 

      参照对IAD描述符的解析,bInterfaceCount=2,可知该配置下有两个视频接口—“VC和VS”,68013 demo对此描述符的赋值

也没毛病,我们无需修改此描述符,除非我们想使用1个以上的视频流接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章