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

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

这两天一直在作一个网络视频监控的项目,前两天在X86平台上实现了,从昨天开始就一直想怎么把它移植到s3c2410开发板上。由于这个板子的所 有资料全部丢失,如果从头再把u-boot、内核等所有的东东再移植一遍就比较麻烦,最后想一个比较简单的办法:板子上的内核版本号是2.4.18- rmk7-pxa1,我就到网上下一个2.4.18的内核和一个for arm的补丁,通过编译内核生成自己需要的摄像头驱动模块,然后把驱动模块拷到开发板上,最后加载模块就行了。

加载摄像头驱动

下载内核补丁和摄像头驱动补丁http://ftp.linux.org.uk/pub/linu ... tch-2.4.18-rmk7.bz2 (内核补丁) http://mxhaard.free.fr/spca50x/e ... 31LE06.patch.tar.gz (摄像头驱动spca5xx的补丁)

修改内核补丁版本号打开patch-2.4.18-rmk7文件,把

+EXTRAVERSION = -rmk7

改为

+EXTRAVERSION = -rmk7-pxa1

前面已经说过板子上的内核版本号是-rmk7-pxa1,所以此处要将它改过来,否则在加载模块时会出现“内核版本号不一致”的错误

打内核补丁cd linux-2.4.18

patch -p1 < ../patch-2.4.18-rmk7


打摄像头驱动补丁cd linux-2.4.18/drivers/usb

patch -p1 < ../../../usb-2.4.31.patch

此处会出现两个错误,解决方法如下: 把Makefile.rej文件中的

subdir-$(CONFIG_USB_SPCA5XX)  += spca5xx

ifeq ($(CONFIG_USB_SPCA5XX),y)

    obj-y += spca5xx/spca5xx.o

endif

加到Makefile文件中

把Config.in.rej文件中的

dep_tristate '  USB SPCA5XX Sunplus Vimicro Sonix Cameras'  CONFIG_USB_SPCA5XX     $CONFIG_USB $CONFIG_VIDEO_DEV

加到Config.in文件中


编译内核打开Makefile文件,把

ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)

CROSS_COMPILE =

改为

ARCH := arm

CROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux-

此处只能用2.95.3版的,如果用比它高的版本就会出现

“arm-linux-ld:arch/arm/kernel/vmlinux.lds:799: parse error

make: *** [.tmp_vmlinux1]”

的错误

内核配置

make menuconfig

此处只需选择两处就行了:

Multimedia device --->

<M>Video for linux

USB support  --->

<M> Support for USB

--- USB Multimedia devices

<M>   USB SPCA5XX Sunplus Vimicro Sonix Cameras

这些选项一定要是M

然后make dep && make modules就行了,因为我们不需要内核映像文件所以就把make zIamge省去了


需要的点o文件可能需要四个点o文件:spca5xx.o、spca_core.o、spcadecoder.o、videodev.o

linux-2.4.18/driver/usb/spca5xx文件下有:spca5xx.o、spca_core.o、spcadecoder.o

linux-2.4.18/driver/media/video文件下有:videodev.o

有以下四种方法文件拷贝到开发板上:

1)用U盘等移动设备

2)用NFS服务

3)用FTP服务

4)用Apache+wget


加载模块insod videodev.o

会在/dev目录下生成一个video0的字符设备文件

insod spca5xx.o

若出现类似于以下的信息就代表成功了:

usb.c: registered new driver spca5xx

spca_core.c: spca5xx driver 00.57.06LE registered
根据楼上的做法,我在加载模块spca5xx.o的时候,出现这样的错误:nfs: server 202.193.9.13 not responding, still trying !然后就一直停在那里了。我原本以为是网络负载太大了,造成较大的模块加载不上,我就利用交叉线把主机与板子连起来,但是还是出现这样的错误,说明不是负载的问题了。而且主机与ARM板可以PING通,还可以挂载目录,所以网络是通的。这样就不知道问题出在哪里了!