ARM9+Linux下USB摄像头图像采集

终于实现了在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窗口中显示,如图所示。 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyfgsy.html