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

作者:workhorse

折腾一周多,终于实现了在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。升级方法参考:《redhat9.0如何升级内核?》——红联Linux门户。

 

二、配置编译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起文件系统。

 

三、安装S L-1.2.14

因为在redhat9.0中显示视频图像,调用spcaview(后面介绍)需要有SDL库的支持,否则会报错。所以,将SDL-1.2.14.tar下载传送到系统中,解压后执行.configure;make;make install。完成 的安装。

 

四、 

 

      

 

五、              

解压: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窗口中显示,如图所示。


 

七、总结

在实现图像采集的过程中,碰到很多问题,尝试过很多方法,走了很多弯路,虽然很多碰壁,但也有不少收获。

编译内核:尝试编译高版本的内核,或者编译新内核的时候,最好选择和现有的配置文件相近的系统的配置文件作为参考。在原有基础上增加一些模块,编译,然后试验。如果一次性增加模块过多,容易造成编译错误等问题。

编译工具:在编译某些插件的时候,如:servfox、spcaview等,经常会报一些文件未定义、库不存在等错误,一般是由于系统缺少相应的库文件,需要下载安装,如SDL,或者由于系统本身版本不匹配,库文件安装位置不符造成。熟练运用goole、百度进行搜索,找到问题解决方法。同时,很多工具、库、插件等在开源社区网站都有稳定版本下载,使用这些网站提供的版本可靠性更好。

重点难点:makefile、kconfig等文件的书写,kit工具使用等。



}

 

Logo

更多推荐