我使用的是webcom 001
的攝像頭,它的控制芯片是zc301,以這款芯片做的攝像頭在市場上佔有率
很高,大概有70%左右。開發板的內核是Linux2.6.18,交叉編譯器是arm-linux-gcc 3.4.1。
配置一下內核,在內核目錄下make menuconfig,在Device
driver->Multimedia
devices->Video4Linux,將它編譯進內核,使系統提供V4L。然後就是USB攝像頭的驅動,儘管其內核中就集成了對0V511、zc301等系列攝像頭的支持,開源驅動spca5xx/gspca也提供了對大部分主流攝像頭的支持,但還是無法涵蓋所有品牌的各種型號的攝像頭,尤其是對於國內的中低端用戶,很難找到直接可用的Linux下的驅動。於是我在網上下載了gspca驅動(http://mxhaard.free.fr/spca50x/Download/gspcav1-20070508.tar.gz,如果無法鏈接
的話,可以到csdn上下載,我已經上傳了,免資源分),交叉編譯make,其中Makefile參考的是
VERSION = 01.00.18
DEFINES =
###
# The following flags enable experimental features.
# By default, these are enabled for development versions of the
driver, and
# disabled for release versions.
# Optional: Enable
driver debugging
DEFINES +=
-DGSPCA_ENABLE_DEBUG
# Optional: Enable
direct register read/write for PAC207 development
#DEFINES +=
-DGSPCA_ENABLE_REGISTERPLAY
###
# The following flags enable features that aren't yet implemented,
and
# therefore are disabled by default.
# Optional: Enable
compression
DEFINES +=
-DGSPCA_ENABLE_COMPRESSION
###
# Rest of Makefile follows here. You probably won't need to touch
this.
# Setup
defines
DEFINES +=
-DCONFIG_USB_GSPCA_MODULE=1 -DMODULE -D__KERNEL__
DEFINES +=
-DVID_HARDWARE_GSPCA=0xFF -DGSPCA_VERSION="$(VERSION)"
ifneq
($(KERNELRELEASE),) # We were
called by kbuild
CFLAGS += $(DEFINES)
obj-m += gspca.o
gspca-objs := gspca_core.o decoder/gspcadecoder.o
else # We were called from command line
KERNEL_VERSION =
`uname -r`
KERNELDIR := /usr/src/linux-2.6.20.3
PWD := $(shell pwd)
MODULE_INSTALLDIR =
/lib/modules/$(KERNEL_VERSION)/kernel/drivers/usb/media/
MODULE_INSTALLDIR2 =
/lib/modules/$(KERNEL_VERSION)/kernel/drivers/media/video/
CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
CROSS_COMPILE=/usr/local/arm/3.4.1/bin/arm-linux-
ARCH=arm
default:
$(MAKE) -C
$(KERNELDIR) SUBDIRS=$(PWD) CC=$(CC) ARCH=$(ARCH)
CROSS_COMPILE=$(CROSS_COMPILE) modules
install:
mkdir -p
$(MODULE_INSTALLDIR)
rm -f
$(MODULE_INSTALLDIR)spca5xx.ko
rm -f
$(MODULE_INSTALLDIR2)gspca.ko
install -c
-m 0644 gspca.ko $(MODULE_INSTALLDIR)
/sbin/depmod
-ae
uninstall:
rm -f
$(MODULE_INSTALLDIR)gspca.ko
/sbin/depmod
-aq
endif
##############################################################################
# OTHER TARGETS
##############################################################################
clean:
rm -r -f *.o
decoder/.gspcadecoder.o.cmd decoder/*.o
.gspca.o.cmd *.o *.ko *.mod.* .[a-z]* core *.i
*.symvers
*.err
##############################################################################
就會在解壓目錄下生成gspca.ko,然後cp gspca.ko
/home/NFS,在開發板上insmod gspca.ko。
這時ls /dev就會看到一些設備文件vedio0
usbdev1.2_ep82
usbdev1.2_ep81。將USB攝像頭插入開發板的USB接口。這時USB攝像頭的驅動已經搞定了。下面再移植servfox做服務器,用spacview播放即可。注意,
spacview需要SDL庫的支持,如果沒有的話會出錯。還有就是運行交叉編譯的servfox要帶參數的,如
./servfox -d /dev/video0 -s 640x480 -w 192.168.1.75:7070,當然運行客戶端播放程序也要帶參數的,
如在局域網內另一臺PC上運行./spcaview -d /dev/video0 -s 640x480 -w 192.168.1.75:7070。csdn上編譯好的servfox和spcaview下載。當然也可以下載到源碼自己編譯。
運行後的效果圖如下: