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:
- 确实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
- 去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