zc301摄像头驱动以及在S3C2410中使用serfox和spcaview

发布者:CW13236066525最新更新时间:2016-06-15 来源: eefocus关键字:zc301  摄像头驱动  S3C2410  serfox  spcaview 手机看文章 扫描二维码
随时随地手机看文章
一、zc301在linux下的驱动

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下,解压,打补丁.
                          tar -xvzf usb-2.6.12LE06.patch.tar.gz
                           patch -p1 < usb-2.6.12LE06.path

此时就会在此目录下看到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) 
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格式)。

这两个驱动都是针对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
CFLAGS += $(DEFINES) 
obj-m += spca5xx.o
spca5xx-objs := drivers/usb/spca5xx.o drivers/usb/spcadecoder.o

else   # We were called from command line

KERNEL_VERSION = `uname -r`
#KERNELDIR := /lib/modules/$(KERNEL_VERSION)/build
KERNELDIR := /weili/linux-2.6.14

PWD := $(shell pwd)
#MODULE_INSTALLDIR = /lib/modules/$(KERNEL_VERSION)/kernel/drivers/usb/media/
MODULE_INSTALLDIR = /weili/linux-2.6.14/drivers/usb/media/

# Targets, don't change!
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

install:
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

uninstall:
rm -f $(MODULE_INSTALLDIR)/spca5xx.ko
/sbin/depmod -aq

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系列摄像头的支持。

         把它到/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 选项下应该有 USB SPCA5XX Sunplus Vimicro Sonix Cameras,要把它配置成module。
        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表明摄像头成功安装。

(2)完整版驱动。spca5xx-20060402.tar.gz。修改makefile。

##########modified by ly44770################
#ifneq ($(shell uname -r | cut -d. -f1,2), 2.4)

#ifneq ($(KERNELRELEASE),)   # We were called by kbuild
#CFLAGS += $(DEFINES) 
#obj-m += spca5xx.o
#spca5xx-objs := drivers/usb/spca5xx.o drivers/usb/spcadecoder.o
#else   # We were called from command line
#KERNEL_VERSION = `uname -r`
#KERNELDIR := /lib/modules/$(KERNEL_VERSION)/build
#PWD := $(shell pwd)
#MODULE_INSTALLDIR = /lib/modules/$(KERNEL_VERSION)/kernel/drivers/usb/media/
# Targets, don't change!
#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
#install:
# 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
#uninstall:
# rm -f $(MODULE_INSTALLDIR)/spca5xx.ko
# /sbin/depmod -aq
#endif
#else   # kernel version test
###############modified end########################
上边这一大段通通注释掉。
#KERNEL_VERSION = `uname -r`这句改成:
KERNEL_VERSION = 2.4.27
这几个变量根据自己的需要修改如下:
KINCLUDE   = /weili/linux-2.4/include
KERNEL_ACFILE = $(KINCLUDE)/linux/autoconf.h
KERNEL_MODVERSIONSFILE = $(KINCLUDE)/linux/modversions.h
#MODULE_INSTALLDIR = /lib/modules/$(KERNEL_VERSION)/kernel/drivers/usb/
CC         = arm-linux-gcc
LD         = arm-linux-ld
#CFLAGS    += -mpreferred-stack-boundary=2 这个注释掉,否则编译通不过,:-)。
#CFLAGS    += -I$(KINCLUDE) -Idrivers/usb
CFLAGS    += -I/weili/linux-2.4/include -Idrivers/usb
别忘了这句注释掉:
#endif # End kernel version test

       make,生成spca5xx.o,insmod,查看/dev目录下出现了/v4l/video0,驱动成功。

二、在S3C2410中使用serfox和spcaview

1、移植视频采集程序servfox
移植此程序比较简单的,下载servfox-R1_1_3后 ,http://mxhaard.free.fr/spca50x/embedded/Servfox/servfox-R1_1_3.tar.gz解压后,会发现在其目录中会有一个Makefile.arm文件,将此文件修改成Makefile,再make就可生成我们要用到的serfox程序了,将 此程序上传到我们的板中,运行就行了。另外在运行servfox前,可能要运行"mknod /dev/video0 c 81 0"这步,不写"mknod /dev/video0 c 81 0"这步,有可能出现 ERROR opening V4L interface错误。但我就没出现这个问题。
# servfox -d /dev/video0 -s 320x240 -w 7070
在服务器端运行servfox,图像大小为320x240,端口号为 7070。

2、客户端spcaview
下载spcaview-20061208,http://mxhaard.free.fr/spca50x/Download/spcaview-20061208.tar.gz
make生成目标文件,在PC上,spcaview –w 10.60.38.55:7070就可以看到摄像头采集来的图片了。Servfox和spcaview还有很多选项,可以通过spcaview –h 和servfox –h查阅,

注意的是:spcaview中-w使用的IP为实验台的IP,所以在开发板执行serfox之前要配置一下IP,ifconfig eth0 10.60.38.55,并且运行spcaview的主机的IP要与开发板在同一网段。

另附:

(1)spcaview的命令参数

Spcaview version: 1.1.7 date: 06:11:2006 (C) mxhaard@magic.fr
usage: spcaview [-h -d -n -c -v -j -z -g -l -s -m -a -f -b -t -p] [-i inputfile
| -o outputfile]
-h      print this message
-d      /dev/videoX       use videoX device
-n      norme 0->pal 2->secam 1->ntsc
-c      input channels 0..9 exclude 4 and 5
-v      disable video output for raw recording
-j      disable video output and userspace decoding
-z      compress yuv420p video output with DPSH encoder
-g      use read method for grab instead mmap
-l      default 320x480   use input size 640x480
-s      widthxheight      use specified input size
-m      widthxheight      use specified ouput size
-a      default 0 -> nosound    1-> microphone 2-> mixer output
-f      video format default yuv others options are r16 r24 r32 yuv jpg
-b     enable automatic brightness adjustment
-t     print statistics
-p x getPicture every x seconds
-p x && -o getPicture every x seconds and record in outfile
-w      Address:Port read from Address xxx.xxx.xxx.xxx:Port
-N x    take a x pictures and exit if p is not set p = 1 second

(2)serfox的命令参数

-h      print this message
-d      /dev/videoX       use videoX device
-g      use read method for grab instead mmap
-s      widthxheight      use specified input size
-w      port      server port


关键字:zc301  摄像头驱动  S3C2410  serfox  spcaview 引用地址:zc301摄像头驱动以及在S3C2410中使用serfox和spcaview

上一篇:PWM在ARM Linux中的原理和蜂鸣器驱动实例开发
下一篇:ARM Linux系统调用的原理

推荐阅读最新更新时间:2024-03-16 14:57

linux驱动s3c2410_ts/s3c2440_ts模块加载流程
前言 通过分析s3c2410_ts/s3c2440_ts模块加载流程,分析linux驱动中的 总线-设备-驱动模型 以及 输入子系统框架 。 主要流程分析图示 s3c2440_ts 主要流程分析 系统初始化 MACHINE_START(SMDK2410, SMDK2410 ) MACHINE_START(SMDK2410, SMDK2410 ) /* @TODO: request a new identifier and switch * to SMDK2410 */ /* Maintainer: Jonas Dietsche */ .phys_io = S3C2410_PA_UART, .io_
[单片机]
存储、NAND FLASH控制器实验(S3C2410)
本实验介绍如何使用SDRAM,这需要设置13个寄存器。呵呵,别担心,这些寄存器很多是类似的,并且由于我们只使用了BANK6,大部分的寄存器我们不必理会: 1.BWSCON:对应BANK0-BANK7,每BANK使用4位。这4位分别表示: a.STx:启动/禁止SDRAM的数据掩码引脚,对于SDRAM,此位为0;对于SRAM,此位为1。 b.WSx:是否使用存储器的WAIT信号,通常设为0 c.DWx:使用两位来设置存储器的位宽:00-8位,01-16位,10-32位,11-保留。 d.比较特殊的是BANK0对应的4位,它们由硬件跳线决定,只读。 对于本开发板,使用两片容量为32Mbyt
[单片机]
内核(2.6.14) + 根文件系统 +Qtopia Core 4移植 for S3C2410
TARGET CPU: S3C2410X SDRAM: HY57V561620(32MB) × 2 FLASH: K9F1208(64MB) NET: CS8900 HOST Linux Realse Version: Fecora Core 6 CrossCompiler: gcc-4.1.1/arm-linux-gcc-3.4.1 一、内核移植(2.6.14) 1 修改linux2.6.14下面的makefile文件 找到ARCH和CROSS_COMPILE,修改 ARCH ?= arm CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux- (此处为你
[单片机]
基于s3c2410开发板的2.6.26.5内核移植
这是本人的一个课程总结,其中涉及几个驱动文件在最小内核编译时是不需要的。 kernel:2.6.26.5 gcc:arm-linux-gcc (gcc 3.4.1) cpu:s3c2410 编译设置 使用arm-linux-交叉编译工具链 修改根目录下Makefile ARCH ?= arm CROSS_COMPILE ?=arm-linux- 内核移植 nand分区 修改arch/arm/plat-s3c24xx/common-smdk.c,找到相关代码做如下修改 static struct mtd_partition smdk_default_nand_part = { /* = { .name = Boot
[单片机]
s3c2410 4X4矩阵键盘驱动
//驱动代码如下.主设备号设为232 ,适用GEC2410 十六键矩阵键盘 #include linux/config.h #include linux/module.h #include linux/kernel.h #include linux/fs.h #include linux/init.h #include linux/ioport.h #include asm/io.h #include linux/errno.h #include linux/types.h #include asm/system.h #include linux/cdev.h #include asm/uaccess.h #include asm
[单片机]
Linux 2.6 内核的嵌入式系统应用
随着多媒体技术与通讯技术相结合的信息技术的快速发展和互联网的广泛应用,PC 时代也过渡到了后PC时代。在数字信息技术和网络技术高速发展的后PC时代,嵌入式技术越来越与人们的生活紧密结合。 操作系统为用户使用计算机及其外部设备提供最基本的接口程序,管理计算机上的资源。随着应用领域的扩大,为了适应不同的应用场合,考虑到系统的灵活性、可伸缩性以及可裁剪性,一种以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统——嵌入式操作系统随之延生。 Linux 操作系统是一种性能优良、源码公开且被广泛应用的免费操作系统,由于其体积小、可裁减、运行速度高、良好的网络性能等优点,可以
[单片机]
移植u-boot到s3c2410开发板
说 明:这是u-boot移植文档,移植到实验室的远峰s3c2410开发板(YF2410, 无NOR flash)。当时本来计划细化后分几部分贴在博客上,后来也没做这项工作。正好前几天转了一篇在skyeye上运行u-boot的文章,顺便贴出自己这 篇:) 1, 基本思路 ========== (1)思路 看参考资料(1),(2)对u-boot有了基本了解, 但没有把握。尝试进行修改后,感觉不理解。于是尝试u-boot在ram中运行,当时觉得使用ICE很没有把握,毕竟没怎么用过,上网查资料,在 ADS 调试经验 文章中看到了方法,尝试几次后才成功。后来阅读读u-boot和vivi相关代码,结合s3c2410文档和 ARM SOC体
[单片机]
基于Linux和S3C2410的嵌入式图象传输系统设计
1 引言 如何更好的获得监控现场的图象数据一直是棘手的一个问题,传统的方法是采用CCD摄象机获取现场的视频信息,这种方法易于实现,但成本较高。随着ARM系列处理器应用的越来越广和基于linux的嵌入式技术的迅速发展,利用linux自身带有的TCP/IP协议来实现远程监控、图象传输已成为可能。本文提出的正是一种这样的方法,利用市场上很常见的中星微系列的USB摄象头来得到现场的图象数据,利用linux内核中的Video4Linux编程接口函数采集图象,并把得到的图象通过Internet传输到上位机PC上,在PC上实现图象的保存和显示。 2 硬件系统设计原理 系统的硬件功能框图如图1所示,CPU采用的是三星公司的S3C2410。该
[嵌入式]
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved