Kernel version :2.6.22.6
Crosstool:arm-softfloat-linux-gnu-gcc-3.4.5
Board:FS2410
System:ubuntu 8.10
Source:spcaview-20061208.tar.gzSDL-1.2.13.rarservfox-R1_1_3.rargspcav1-20071224.tar.gz
整理:LXP
一、移植gspcav1-20071224
FS2410开发板上移植的是Linux-2.6.22.6内核,USB及CS8900A均能工作,由于linux-2.6.22.6/drivers/usb目录下没有media目录,故移植步骤如下:a)在linux-2.6.22.6/drivers/usb目录下新建media目录,将gspcav1-20071224.tar.gz copy到media下并解压。为了使media编译进内核,需修改linux-2.6.22.6/drivers/usb目录下的Kconfig、Makefile文件。[linux@farsight usb]$ pwd
/work/kernel/linux-2.6.22.6/drivers/usb
[linux@farsight usb]$ vi Kconfig添加source "drivers/usb/media/Kconfig"
[linux@weijing usb]$ vi Makefile添加obj-$(CONFIG_USB_SPCA5XX) += media/b)为添加gspcav1-20071224编译选项,在media下新建Kconfig、Makefile文件。[linux@weijing media]$ pwd
/work/kernel/linux-2.6.22.6/drivers/usb/media
[linux@weijing media]$ vi Kconfig
#
# USB Multimedia device configuration
#
comment "USB Multimedia devices"
depends on USB
config USB_SPCA5XX
tristate "USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Cameras"
depends on USB && VIDEO_DEV
[linux@weijing media]$ vi Makefile
#
# Makefile for USB Media drivers
#
obj-$(CONFIG_USB_SPCA5XX) += gspcav1-20071224/
c)修改gspcav1-20071224的Makefile[linux@weijing gspcav1-20071224]$ pwd
/work/kernel/linux-2.6.22.6/drivers/usb/media/gspcav1-20071224
[linux@weijing gspcav1-20071224]$ vi Makefile
gspca-objs := gspca_core.o decoder/gspcadecoder.o
obj-$(CONFIG_USB_SPCA5XX) += gspca.o
clean:
rm -f *.[oas] .*.flags *.ko .*.cmd .*.d .*.tmp *.mod.c
rm -rf .tmp_versions
d)编译内核
(1)Multimedia devices --->
(*)Video For Linux(2)USB support --->
(*)Support for Host-side USB
--- USB Host Controller Drivers(*)OHCI HCD support(3)--- USB Multimedia devices
[M]USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Cameras
注意:这里这一项只能动态加载,不能静态编译进内核,否则会出现如下错误:
….undefined referance to ‘__this_modules’;
另外:编译内核出现这种错误….undefined referance to ‘__this_modules’;
则原因可能是:有些模块只能以[M]方式加载,不能以(*)形式加载。
内核编译完成之后,把~/linux-2.6.22.6/drivers/usb/media/gspcav1-20071224/下的gspca.ko文件cp到/source/rootfs中去。(注:/source/rootfs是板子的根文件系统,这里采用动态下载的调试方式)
二、servfox下载Servfox-R1_1_3解压进入其目录,将其中的Makefile.arm修改为Makefile,并修改Makefile里面的CC为arm-softfloat-linux-gnu-gcc,因为默认的是加载的动态库,因此还需要修改Makefile中的SERVFLAGS为SERVFLAGS= -O2 –DLINUX $(WARNINGS) –static,其中-static是我们添加的内容,make之后生成servfox。加载驱动后可以运行servfox –g –d /dev/video0 –s 320x240 –w 7070运行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 192.168.1.222三、spcaview1、下载spcaview源码包解压,进入解压后的目录,make后会报错,一般需要安装
SDL库,去网上下载后安装SDL库,在PC机上安装SDL库:
解压:tar xvf SDL-1.2.13.tar.tar
配置:./configure
编译:make
安装:sudo make install
2、进入spcaview解压目录修改Makefile中的修改Makefile中的SDLLIBS =$(shell sdl-config --libs)和SDLFLAGS = $(shell sdl-config --cflags),这两句主要是指定了SDL库的库路径和编译选项。Make之后生成spcaview,在客户端运行spcaview –w服务器ip:服务器端口号。就可以采集图像了,
[root@farsight spcaview-20061208]# ./spcaview -g -w 192.168.1.17
Spcaview version: 1.1.7 date: 06:11:2006 (C)mxhaard@magic.frERROR Set default port to 7070
using Server 192.168.1.17 Port 7070
bright 32768 contrast 32768
四、测试过程详解:
开发板:
1安装驱动(spca5xx已经被编译进内核)
insmod gspca.ko(这是摄像头驱动)
2创建设备节点
mknod /dev/video0 c 81 0
这一步一般不用做,在insmod gspca.ko时,会自动创建该节点
3采集图像
#./servfox -d /dev/video0 -s 320x240 -w 7070
PC端:
#./spcaview -g–w 192.168.1.186:7070
-g参数一定要加,否则会出现段错误
PC端:在PC机上用Windows下的网页测试(如果开发板里装了BOA服务器):
解压spcaview后,还会产生,此是WEB客户端,将此客户端上传到开发板上的WEB文件夹中,则在浏览器输入则可看到摄像头采集来的图片了。web SERVER是移植boa,移植方法略