新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Arm-linux下USB攝像頭的視頻服務(wù)器的實(shí)現(xiàn)

Arm-linux下USB攝像頭的視頻服務(wù)器的實(shí)現(xiàn)

作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
我使用的是webcom 001 的攝像頭,它的控制芯片是zc301,以這款芯片做的攝像頭在市場(chǎng)上占有率

很高,大概有70%左右。開(kāi)發(fā)板的內(nèi)核是Linux2.6.18,交叉編譯器是arm-linux-gcc 3.4.1。
配置一下內(nèi)核,在內(nèi)核目錄下make menuconfig,在Device driver->Multimedia devices->Video4Linux,將它編譯進(jìn)內(nèi)核,使系統(tǒng)提供V4L。然后就是USB攝像頭的驅(qū)動(dòng),盡管其內(nèi)核中就集成了對(duì)0V511、zc301等系列攝像頭的支持,開(kāi)源驅(qū)動(dòng)spca5xx/gspca也提供了對(duì)大部分主流攝像頭的支持,但還是無(wú)法涵蓋所有品牌的各種型號(hào)的攝像頭,尤其是對(duì)于國(guó)內(nèi)的中低端用戶(hù),很難找到直接可用的Linux下的驅(qū)動(dòng)。于是我在網(wǎng)上下載了gspca驅(qū)動(dòng)(http://mxhaard.free.fr/spca50x/Download/gspcav1-20070508.tar.gz,如果無(wú)法鏈接
的話,可以到csdn上下載,我已經(jīng)上傳了,免資源分),交叉編譯make,其中Makefile參考的是

本文引用地址:http://www.butianyuan.cn/article/201611/319079.htm

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 arent yet implemented, and
# therefore are disabled by default.

# Optional: Enable compression
DEFINES += -DGSPCA_ENABLE_COMPRESSION

###
# Rest of Makefile follows here. You probably wont 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

##############################################################################

就會(huì)在解壓目錄下生成gspca.ko,然后cp gspca.ko /home/NFS,在開(kāi)發(fā)板上insmod gspca.ko。
這時(shí)ls /dev就會(huì)看到一些設(shè)備文件vedio0 usbdev1.2_ep82 usbdev1.2_ep81。將USB攝像頭插入開(kāi)發(fā)板的USB接口。這時(shí)USB攝像頭的驅(qū)動(dòng)已經(jīng)搞定了。下面再移植servfox做服務(wù)器,用spacview播放即可。注意,
spacview需要SDL庫(kù)的支持,如果沒(méi)有的話會(huì)出錯(cuò)。還有就是運(yùn)行交叉編譯的servfox要帶參數(shù)的,如

./servfox -d /dev/video0 -s 640x480 -w 192.168.1.75:7070,當(dāng)然運(yùn)行客戶(hù)端播放程序也要帶參數(shù)的,

如在局域網(wǎng)內(nèi)另一臺(tái)PC上運(yùn)行./spcaview -d /dev/video0 -s 640x480 -w 192.168.1.75:7070。csdn上編譯好的servfox和spcaview下載。當(dāng)然也可以下載到源碼自己編譯。

運(yùn)行后的效果圖如下:



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉