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涉及的文件
二,uvc device 的定义
三,右侧是一般的gadget设备驱动架构。左侧是usb_gadget设备作为video_device的上层接口。
四,webcam的初始化。
五,
六,
七,
八,uvc下v4l2 buffer和usb request下的buffer的copy关系。
九,改造方案的架构。
十,改造方案的实现。
最后的两个图片,会修改。基本方案改成,采用网上的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软件,开启预览,如下图所示: