1. 程式人生 > >S3C2410上webcam驅動方法(1)--補丁驅動,模組載入

S3C2410上webcam驅動方法(1)--補丁驅動,模組載入

3c2410-linux實現網路視訊監控功能之攝相頭驅動
-------------------------------------------------------------------------------------
如果從頭再把u-boot、核心等所有的東東再移植一遍就比較麻煩,
最後想一個比較簡單的辦法:板子上的核心版本號是2.4.18- rmk7-pxa1,
我就到網上下一個2.4.18的核心和一個for arm的補丁,
通過編譯核心生成自己需要的攝像頭驅動模組,然後把驅動模組拷到開發板上,最後載入模組就行了。

-----------------------
載入攝像頭驅動
下載核心補丁和攝像頭驅動補丁:
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的補丁)
如果上面的網址打不開,就可以在google搜尋一下。

修改核心補丁版本號開啟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的字元裝置檔案
確認 /dev/video 是否存在,如果沒有則
# mknod /dev/video c 81 0
# chmod 744 /dev/video

insod spca5xx.o

若出現類似於以下的資訊就代表成功了:

usb.c: registered new driver spca5xx

spca_core.c: spca5xx driver 00.57.06LE registered

原文地址:未知