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個以上的視頻流接口。

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