2.1.1.2 节_虚拟驱动 vivi 的测试

目录

1、结合应用程序分析涉及到的调用

2、测试


1、结合应用程序分析涉及到的调用

(1)如怎么得到里面的数据、怎么控制摄像头的亮度等信息。
(2)现在 PC 机上做实验
在 ubuntu 上安装一个应用程序的测试程序 xawtv
安装 xawtv: sudo apt-get install xawtv
apt-get 主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
如果无法上网

3)下面不能 ping 通,需要加上路由(设置默认网关命令)

4)重新安装 sudo apt-get install xawtv
出现下面文件无法找到,到这个网站上确实找不到这个文件。我们用的 ubuntu9.10

在这个网站创建新的 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(更新完后就能安装 xawtv)
sudo apt-get install xawtv (安装 xawtv)

2、测试

(1)让虚拟机位于前台,接上 USB 摄像头。

2)用 dmesg 命令查看内核打印信息,执行 xawtv

出现以下内容

(3)点击右键出现以下菜单,下面左右移动可以设置亮度,

3、测试虚拟摄像头 vivi(需要编译驱动程序)
(1)确定 ubuntu 的内核版本
执行 uname -a 命令(uname -a :显示系统名、节点名称、操作系统的发行版号、操作系统版本、运行系统的机器 ID 号)
Linux book-desktop 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009 i686 GNU/Linux
(2) 去 www.kernel.org 下载同版本(相近版本)的内核

解压后把 drivers/media/video 目录取出
修改它的 Makefile 为:

KERN_DIR = /usr/src/linux-headers-2.6.31-14-generic //指定内核目录(在 PC 上的 linux 内核)
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

编译出 vivi.ko
安装驱动但出现某些问题(有一些函数不知道)

用 dmesg 命令查看发现一大堆 函数未定义,看看这些函数在哪个文件定义

修改 Makefile 添加我们需要编译进去的驱动,这些是 vivi.c 的依赖文件

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

安装驱动,查看设备节点, /dev/video 是所接的 usb 摄像头, /dev/vodeo1 是 vivi.c 虚拟出来的设备节点

(4)查看 xawtv 的使用,默认打开的是/dev/video0,现在要打开/dev/video1,可以用-c 参数,后面指定相应的设备。

使用如下 -c 指定

(5)安装驱动
sudo modprobe vivi
sudo rmmod vivi
sudo insmod ./vivi.ko
(5)查看设备节点
ls /dev/video*
(6)执行命令
xawtv -c /dev/videoX
 

在装载vivi,ko时,实际上其所需要的依赖不仅仅是以上几个。若在装载vivi.ko之前没有将USB摄像头连接到Ubuntu,

则会继续出现Unknown symbol in module 的问题。当右下角出现摄像头时,则说明已经系统已经提前安装好相关驱动。则可以insmod成功。

发布了241 篇原创文章 · 获赞 28 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_34738528/article/details/105070412