下面对UVC gadget的初始化流程大致梳理下:
测试代码:http://git.ideasonboard.org/uvc-gadget.git 上新的代码比较繁琐,这里以旧版本为基础,测试简单的dummy data 和 mjpeg模式,测试代码链接:https://github.com/zizimumu/uvc_gadget_img.git
- USB设备枚举,device需要上报支持的格式信息,这里只关注class 相关的描述符信息:
input header descriptor: 注意nNemFormat为2,内核默认驱动中只支持yuv422和mjpeg两种格式:
yuv format type descriptor: 支持的格式: 360p, 720p两种,
2. 初始化完成后,打开设备,host与device协商具体的格式,一个完整的协商流程如下:
具体代码中的过程: