终于实现了在Micro2440+Linux2.6.29环境下通过NFS文件系统实现USB摄像头图像采集。在此,做一个总结,以备后续参考。
实验条件:RedHat9.0(内核版本2.4.18),Micro2440开发板,Linux2.6.29(arm9),ANC (Vimicro Corp.) USB PC摄像头,GCC,SDL-1.2.14.tar,servfox-R1_1_3[1].tar,spcaview-20061208[1].tar。
一、升级Redhat9.0内核
由于Readhat9.0内核版本是2.4,很多内核驱动未包含其中,尤其是USB万能摄像头GSPCA和UVC。
二、配置编译Micro2440上运行内核
重新编译Micro2440上运行的内核,配置V4L和USB驱动。选择linux-2.6.29中的config-mini2440为参考,执行:cp config-mini2440 .config;然后make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-;出现相应的图形化配置窗口。
如果需要在Linux操作系统中使用USB摄像头进行视频数据采集,则必须在进行内核配置时,应检查Linux 内核中是否已经添加了对Video4Linux驱动和对USB摄像头驱动模块的支持。
利用Linux内核配置make menuconfig命令对Video4Linux支持驱动进行配置,选中多媒体设备选项“Multimedia device->”(如图15-1所示)按回车,进入多媒体设备配置界面。在多媒体配置界面中,选中“Video For Linux”,就可以使内核实现对Video4Linux驱动的支持,为视频采集设备提供编程接口。
配置好内核对Video4Linux驱动后,返回内核配置主界面,选中USB支持选项(如图15-3 所示)“USB support—>” 按回车,进入USB支持配置界面
配置完成后,执行make uImage ARCH=arm CROSS_COMPILE=arm-linux-。完成后,uImage就生成在arch/arm/boot/中。通过uboot下载uImage到内存中,启动内核,实现NFS起文件系统。
三、安装SDL-1.2.14
因为在redhat9.0中显示视频图像,调用spcaview(后面介绍)需要有SDL库的支持,否则会报错。所以,将SDL-1.2.14.tar下载传送到系统中,解压后执行.configure;make;make install。完成SDL库的安装。
四、servfox-R1_1_3工具
下载Servfox-R1_1_3解压进入其目录,将其中的Makefile.arm修改为Makefile,并修改Makefile里面的CC为arm -linux -gcc,因为默认的是加载的动态库,因此还需要修改Makefile中的SERVFLAGS为SERVFLAGS= -O2 –DLINUX $(WARNINGS) –static,其中-static是我们添加的内容,make之后生成servfox。
五、 spcaview,redhat9.0下的视频显示工具
下载spcaview源码包解压,进入解压后的目录,make后会报错,一般需要安装SDL库,去网上下载后安装SDL库,在PC 机上安装SDL库:
解压:tar xvf SDL-1.2.13.tar.tar
配置:./configure
编译:make
安装:make install
进入spcaview解压目录修改Makefile中的修改Makefile中的SDLLIBS =$(shell sdl-config --libs) 和 SDLFLAGS = $(shell sdl-config --cflags),这两句主要是指定了SDL库的库路径和编译选项。Make之后生成spcaview,在客户端运行spcaview –w 服务器ip:服务器端口号。就可以采集图像了,
[root@jxboylj spcaview-20061208]# ./spcaview -g -w 10.103.4.211:7070
Spcaview version: 1.1.7 date: 06:11:2006 (C) mxhaard@magic.fr
using Server 10.103.4.211 Port 7070
六、测试
将新编译的内核加载到ARM上,通过NFS文件系统运行servfox :
# ./servfox -d /dev/video0 -g -s 640x480 -w 7070
servfox version: 1.1.3 date: 11:12:2005 (C) mxhaard@magic.fr
wrong spca5xx device
Waiting .... for connection. CTrl_c to stop !!!!
Got connection from 10.103.4.216
在redhat9.0中执行spcaview:
[root@jxboylj spcaview-20061208]# ./spcaview -g -w 10.103.4.211:7070
Spcaview version: 1.1.7 date: 06:11:2006 (C) mxhaard@magic.fr
using Server 10.103.4.211 Port 7070
此时,视频能在redhat9.0窗口中显示,如图所示。