您的位置:首页 > 理论基础 > 计算机网络

S3c2410-linux实现网络视频监控功能

2008-03-12 21:26 507 查看
也不知道以下的这篇文章最初来自哪里,正在照着做,出现一些意想不到的困难,解决中......
[align=left]这两天一直在作一个网络视频监控的项目,前两天在X86平台上实现了,从昨天开始就一直想怎么把它移植到s3c2410开发板上。想一个比较简单的办法:板子上的内核版本号是2.4.18- rmk7-pxa1,我就到网上下一个2.4.18的内核和一个for arm的补丁,通过编译内核生成自己需要的摄像头驱动模块,然后把驱动模块拷到开发板上,最后加载模块就行了。[/align]
[align=left]加载摄像头驱动[/align]
[align=left]下载内核补丁和摄像头驱动补丁http://ftp.linux.org.uk/pub/linux/arm/kernel/v2.4/patch-2.4.18-rmk7.bz2 (内核补丁) http://mxhaard.free.fr/spca50x/embedded/KernelPatch/usb-2.4.31LE06.patch.tar.gz (摄像头驱动spca5xx的补丁) [/align]
[align=left]但是, 有时候需要对"官方内核"添加补丁, 以支持特定的系统. 比如ARMLinux, 它往往不是发布完整的内核, 而是发布针对特定版本的补丁包. 这种情况下就要知道如何打补丁了. 方法很简单: 把补丁下载, 解压. 得到patch-<version>. 将它放到解压后的内核目录树的父目录中(也就是补丁和内核目录在同一目录). 然后cd到内核目录树中运行:

$ patch -p1 <../patch-<version>[/align]
[align=left]修改内核补丁版本号打开patch-2.4.18-rmk7文件,把[/align]
[align=left]+EXTRAVERSION = -rmk7[/align]
[align=left]改为[/align]
[align=left]+EXTRAVERSION = -rmk7-pxa1[/align]
[align=left]前面已经说过板子上的内核版本号是-rmk7-pxa1,所以此处要将它改过来,否则在加载模块时会出现“内核版本号不一致”的错误[/align]
[align=left]打内核补丁cd linux-2.4.18[/align]
[align=left]patch -p1 < ../patch-2.4.18-rmk7[/align]
[align=left]打摄像头驱动补丁cd linux-2.4.18/drivers/usb[/align]
[align=left]patch -p1 < ../../../usb-2.4.31.patch[/align]
[align=left]此处会出现两个错误,解决方法如下:把Makefile.rej文件中的[/align]
[align=left]subdir-$(CONFIG_USB_SPCA5XX) += spca5xx[/align]
[align=left]ifeq ($(CONFIG_USB_SPCA5XX),y)[/align]
[align=left] obj-y += spca5xx/spca5xx.o[/align]
[align=left]endif[/align]
[align=left]加到Makefile文件中[/align]
[align=left]把Config.in.rej文件中的[/align]
[align=left]dep_tristate ' USB SPCA5XX Sunplus Vimicro Sonix Cameras' CONFIG_USB_SPCA5XX $CONFIG_USB $CONFIG_VIDEO_DEV[/align]
[align=left]加到Config.in文件中[/align]
[align=left]编译内核打开Makefile文件,把[/align]
[align=left]ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)[/align]
[align=left]CROSS_COMPILE =[/align]
[align=left]改为[/align]
[align=left]ARCH := arm[/align]
[align=left]CROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux-[/align]
[align=left]此处只能用2.95.3版的,如果用比它高的版本就会出现[/align]
[align=left]“arm-linux-ld:arch/arm/kernel/vmlinux.lds:799: parse error[/align]
[align=left]make: *** [.tmp_vmlinux1]”[/align]
[align=left]的错误[/align]
[align=left]内核配置[/align]
[align=left]make menuconfig[/align]
[align=left]此处只需选择两处就行了:[/align]
[align=left]Multimedia device --->[/align]
[align=left]<M>Video for linux[/align]
[align=left]USB support ---> [/align]
[align=left]<M> Support for USB[/align]
[align=left]--- USB Multimedia devices[/align]
[align=left]<M> USB SPCA5XX Sunplus Vimicro Sonix Cameras[/align]
[align=left]这些选项一定要是M[/align]
[align=left]然后make dep && make modules就行了,因为我们不需要内核映像文件所以就把make zIamge省去了[/align]
[align=left]需要的点o文件可能需要四个点o文件:spca5xx.o、spca_core.o、spcadecoder.o、videodev.o[/align]
[align=left]linux-2.4.18/driver/usb/spca5xx文件下有:spca5xx.o、spca_core.o、spcadecoder.o[/align]
[align=left]linux-2.4.18/driver/media/video文件下有:videodev.o[/align]
[align=left]有以下四种方法文件拷贝到开发板上:[/align]
[align=left]1)用U盘等移动设备[/align]
[align=left]2)用NFS服务[/align]
[align=left]3)用FTP服务[/align]
[align=left]4)用Apache+wget[/align]
[align=left]加载模块insod videodev.o[/align]
[align=left]会在/dev目录下生成一个video0的字符设备文件[/align]
[align=left]insod spca5xx.o[/align]
[align=left]若出现类似于以下的信息就代表成功了:[/align]
[align=left]usb.c: registered new driver spca5xx[/align]
spca_core.c: spca5xx driver 00.57.06LE registered
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: