zc301摄像头驱动以及在S3C2410中使用serfox和spcaview
1. 针对使用的2.6内核驱动
(1)重新编译内核,使能zc301摄像头模块。。LINUX内核中系统中没有ZC301P摄像头驱动,要下载对应的内核补丁,其补丁和驱动在http:mxhaard.free.fr中有对应的驱动下载。此处用到的是usb-2.6.12LE06.patch.tar.gz,补丁下载地址http://mxhaard.free.fr/spca50x/embedded/KernelPatch/usb-2.6.12LE06.patch.tar.gz。此patch是为令重编内核时,有spcaxx系列摄像头的支持。把它到/kernel/driver/usb下,解压,打补丁. 此时就会在此目录下看到spca5xx文件夹了,这个目录下的文件就是usb摄像头的驱动源码。重新编译内核,使能zc301摄像头模块。在kernel目录下make menuconfig,内核配置选项 Device Drivers ---> Multimedia devices ---> Video for Linux USB support -----> USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Camerass,要把它配置成module。 (2)make zImage,make modules就会在/armlinux/kernel/arch/arm/boot下生成zImage,这就是我们生成最新的内核,将此内核通过终端下载到开发板中。/armlinux/kernel/driver/usb/spca5xx中生成spca5xx.ko.这就是我们要的针对2.6内核的驱动。启动新内核,insmod这个.ko文件即驱动上zc301摄像头。 (3)上述使用的是简版usb摄像头驱动,获取的图像数据是jpeg数据流,如果需要输出RGB24的话,可以使用完整版的驱动,下载地址:http://mxhaard.free.fr/spca50x/Download/oldrelease/spca5xx-20060402.tar.gz或http://mxhaard.free.fr/spca50x/Download/spca5xx-v4l1goodbye.tar.gz LE的驱动有许多问题,比如运行到设置图像格式(RGB565或RGB24)时 出错, 说不支持此参数。原因在于: ( 摘自驱动程序主页 http://mxhaard.free.fr/spca5le.html) 这两个驱动都是针对2.6内核设计的,可以单独编程成模块。gspca和spca5xx是一个系列的,它用于2.6.17以上的内核版本,以前的版本使用spca5xx驱动程序。spca5xx在Linux下常用的摄像头驱动,这是一个通用驱动,这个驱动程序也是基于video4linux的.Makefile中需要修改一下内容 CC = arm-linux-gcc LD = arm-linux-ld ifneq ($(KERNELRELEASE),) # We were called by kbuild else # We were called from command line KERNEL_VERSION = `uname -r` PWD := $(shell pwd) # Targets, dont change! install: uninstall: endif make后即可生成spca5xx.ko驱动,移植到开发板上insmod即可,这个驱动相对(2)中编译的驱动大了好几倍吧。注意的是,所使用的内核仍要选上USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Camerass模块。 2.针对使用的2.4内核驱动 (1)编译内核驱动zd301 重新编译内核,将对应的摄像头支持模块选上.但是LINUX内核中系统中没有ZC301P摄像头驱动,要下载对应的内核补丁,其补丁和驱动在http:mxhaard.free.fr中有对应的驱动下载,此处用到的是:usb-2.4.31LE06.patch.tar.gz,此patch是为令重编内核时,有spcaxx系列摄像头的支持。
tar -xvzf usb-2.6.12LE06.patch.tar.gz
patch -p1
The spca5xx-LE design is very different from the spca5xx full package(LE版的驱动和完全版的差很多)。
The memory in use are the most smaller as possible(LE版的驱动会尽量减少内存的 使用)
The spcadecoder is reduce and only raw jpeg webcam are used.(驱动模块只支持输 出原始jpeg格式)。
CFLAGS += $(DEFINES)
obj-m += spca5xx.o
spca5xx-objs := drivers/usb/spca5xx.o drivers/usb/spcadecoder.o
#KERNELDIR := /lib/modules/$(KERNEL_VERSION)/build
KERNELDIR := /weili/linux-2.6.14
#MODULE_INSTALLDIR = /lib/modules/$(KERNEL_VERSION)/kernel/drivers/usb/media/
MODULE_INSTALLDIR = /weili/linux-2.6.14/drivers/usb/media/
default:
@echo Building SPCA5XX driver for 2.5/2.6 kernel.
@echo Remember: you must have read/write access to your kernel source tree.
$(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) CC=$(CC) modules
mkdir -p $(MODULE_INSTALLDIR)
rm -f $(MODULE_INSTALLDIR)spca50x.ko
rm -f $(MODULE_INSTALLDIR)et61x.ko
install -c -m 0644 spca5xx.ko $(MODULE_INSTALLDIR)
/sbin/depmod -ae
rm -f $(MODULE_INSTALLDIR)/spca5xx.ko
/sbin/depmod -aq
把它到/armlinux/kernel/driver/usb下,解压,打补丁.
tar -xvzf usb-2.4.31LE06.patch.tar.gz patch -p1 < usb-2.4.31LE06.patch
此时就会在此目录下看到spca5xx文件夹了.不知是何原因,估计是KERNEL版本的原因,在/armlinux/kernel/driver/usb 的目录中的Makefile 和config.in中找不到对应的关键字,此时会有一些错误,并将错误放在Makefile.rej 和config.in.rej 两文件中,打开两个文件,分别将其中前面有+的文字加到 Makefile和config.in中对应的分类中即可。
编译内核,进入/armlinux/kernel,make menuconfig.在arm linux的kernel目录下make menuconfig,
首先<*>选择Multimedia device->下的Video for linux,然后 USB support ---> USB Multimedia devices 选项下应该有
make dep;make zImage;make modules.就会在/armlinux/kernel/arch/arm/boot下生成zImage,这就是我们生成最新的内核,将此内核通过终端下载到开发板中,/armlinux/kernel/driver/usb/spca5xx中生成spca5xx.o,spcadecoder.o, spca_core.o.这就是我们要的驱动。
用新内核启动,insmod这三个.o文件(可以不用加载spcadecoder.o),摄像头就加载成功,也可用modprobe spca5xx.o 命令,此命令会自动去加载其要支持的.o文件.如果一切顺利的话,此时将在看到类似下面的信息,Using /mydev/spca5xx.o usb.c: registered new driver spca5xx spca_core.c: USB SPCA5XX camera found. Type Vimicro Zc301P 0x301b spca_core.c: spca5xx driver 00.57.06LE registered
此时会在/dev/成生成 v4l/video0表明摄像头成功安装。
zc301摄像头驱动S3C2410serfoxspcavie 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)