usb gadget uvc driver的code分析

usb gadget uvc driver的code分析

2015年11月16日 21:38:26 xiaolin155 阅读数:5684

uvc的linux driver分为host侧和gadget侧两个driver。host侧的driver在v4l2框架下,而设备侧的driver在usb/gadget文件夹下。gadget侧的uvc driver,利用v4l2框架去注册video_device,向应用层提供调用接口。同时,它完成v4l2 video buffer拷贝到usb request下的buffer下,然后利用uvc实现的协议进行video的传输,可以传输不压缩的yuv数据,也可以传输经过H.264压缩过的视频数据。

下面讲解一下usb gadget uvc driver,即webcam的实现code。

一,uvc涉及的文件

usb gadget uvc driver的code分析

二,uvc device 的定义

usb gadget uvc driver的code分析

三,右侧是一般的gadget设备驱动架构。左侧是usb_gadget设备作为video_device的上层接口。

usb gadget uvc driver的code分析

四,webcam的初始化。

usb gadget uvc driver的code分析

五,

usb gadget uvc driver的code分析

六,

usb gadget uvc driver的code分析

七,

usb gadget uvc driver的code分析

八,uvc下v4l2 buffer和usb request下的buffer的copy关系。

usb gadget uvc driver的code分析

九,改造方案的架构。

usb gadget uvc driver的code分析

 

  十,改造方案的实现。

usb gadget uvc driver的code分析

最后的两个图片,会修改。基本方案改成,采用网上的free software的test app,源码放在我的github上,网址如下:https://github.com/lintwins/uvc-gadget.git

可以通过以下命令在linux系统上下载:git clone https://github.com/lintwins/uvc-gadget.git

调试成功的板子,接上win7 pc,然后使用AMCap软件,开启预览,如下图所示:

usb gadget uvc driver的code分析