LINUX摄像驱动二:虚拟驱动VIVI测试及彻底分析

本文介绍了如何在Linux环境下测试虚拟摄像头VIVI,并对其工作原理进行了深入分析。通过strace命令跟踪系统调用,揭示了VIVI驱动程序与xawtv之间的交互。在分析过程中,探讨了缓冲区分配、映射、队列管理以及数据获取的过程,强调了video_device在摄像头驱动中的关键作用。最后,提供了摄像头驱动程序的基本步骤,包括video_device的分配、设置和注册。
摘要由CSDN通过智能技术生成

LInux Kernel:3.4.2
gcc version: 4.3.2

测试虚拟驱动vivi
准备工作:安装xawtvsudo apt-get install xawtv
源码:xawtv-3.95.tar.gz: http://www.kraxel.org/releases/xawtv/
在这个网站创建新的sources.list:http://repogen.simplylinux.ch/

1. 选择国家
2.选择相邻的ubuntu版本
3. 选择"Ubuntu Branches"
4. 生成sources.list
5. 把得到内容替换到/etc/apt/sources.list
6. sudo apt-get update
   sudo apt-get install xawtv

测试USB摄像头:
1.让VMWAER处于前台,接上USB摄像头,可以看到生成了/dev/video0
2.执行 xawtv 即可看到图像

测试虚拟摄像头vivi:

  1. 确实ubuntu的内核版本
uname -a
Linux book-desktop 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009 i686 GNU/Linux
  1. 去www.kernel.org下载同版本的内核
    解压后把drivers/media/video目录取出
    修改它的Makefile为:
//指定内核目录
KERN_DIR = /usr/src/linux-headers-2.6.31-14-generic

all:
        make -C $(KERN_DIR) M=`pwd` modules

clean:
        make -C $(KERN_DIR) M=`pwd` modules clean
        rm -rf modules.order

obj-m   += vivi.o
obj-m   += videobuf-core.o
obj-m   += videobuf-vmalloc.o
obj-m   += v4l2-common.o

3、 make
4、

insmod videobuf-core.ko
   insmod videobuf-vmalloc.ko
   insmod v4l2-common.ko
   insmod vivi.ko

5、 ls /dev/video*
6、 xawtv -c /dev/videoX


vivi彻底分析

三、根据虚拟驱动vivi的使用过程彻底分析摄像头驱动
问1:怎样毕竟快捷获得程序所涉及的系统调用呢?
答1:用strace命令;
例如:strace -o xawtv.log xawtv 这样xawtv这个所涉及的open read等等函数的调用都会出现在log文件中;

下面是从”xawtv涉及的vivi驱动的系统调用.txt” 所列出

//下面这些可能是没有用,在源码里面没有对应的关系
3. ioctl(4, VIDIOC_G_FMT
4. for()
        ioctl(4, VIDIOC_ENUM_FMT
5. ioctl(4, VIDIOC_QUERYCAP    // 列举性能
6. ioctl(4
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值