歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> ARM基於Linux系統下的視頻監控(初步)

ARM基於Linux系統下的視頻監控(初步)

日期:2017/2/28 16:21:08   编辑:Linux教程

在內核匯中添加攝像頭驅動

一、移植gspcav1-20071224

gspcav1-20071224 下載地址

FS2410開發板上移植的是Linux-2.6.22.6內核,USB及CS8900A均能工作,由於linux-2.6.22.6/drivers/usb 目錄下沒有 media 目錄,故移植步驟如下:

步驟一、在 linux-2.6.22.6/drivers/usb 目錄下新建 media 目錄,將gspcav1-20071224.tar.gz copy

到 media 下並解壓。

步驟二、為了使media 編譯進內核,需修改linux-2.6.22.6/drivers/usb 目錄下的Kconfig、Makefile 文件。
[[email protected] usb]$ pwd
/work/kernel/linux-2.6.22.6/drivers/usb

[[email protected] usb]$ vi Kconfig
添加
source "drivers/usb/media/Kconfig"

[[email protected] usb]$ vi Makefile
添加
obj-$(CONFIG_USB_SPCA5XX) += media/

步驟三、為加載gspcav1-20071224驅動編譯選項,在 media 下新建 Kconfig、Makefile 文件。

[[email protected] media]$ pwd
/work/kernel/linux-2.6.22.6/drivers/usb/media
[[email protected] media]$ vim Kconfig

#
# USB Multimedia device configuration
#
comment "USB Multimedia devices"
depends on USB

config USB_SPCA5XX
tristate "USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Cameras"
depends on USB && VIDEO_DEV
---help---
Say Y or M here if you want to use one of these webcams:

The built-in microphone is enabled by selecting USB Audio support.

This driver uses the Video For Linux API. You must say Y or M to
"Video For Linux" (under Character Devices) to use this driver.
Information on this API and pointers to "v4l" programs may be found
at <file:Documentation/video4linux/API.html>.

To compile this driver as a module, choose M here: the
module will be called spca5xx.

[[email protected] media]$ vim Makefile
#
# Makefile for USB Media drivers
#

obj-$(CONFIG_USB_SPCA5XX) += gspcav1-20071224/

步驟四、修改 gspcav1-20071224 的 Makefile

[[email protected] gspcav1-20071224]$ pwd
/work/kernel/linux-2.6.22.6/drivers/usb/media/gspcav1-20071224
[[email protected] gspcav1-20071224]$ vi Makefile

gspca-objs := gspca_core.o decoder/gspcadecoder.o
obj-$(CONFIG_USB_SPCA5XX) += gspca.o

clean:
rm -f *.[oas] .*.flags *.ko .*.cmd .*.d .*.tmp *.mod.c
rm -rf .tmp_versions

步驟五、編譯內核
(1)Device Drivers --->
Multimedia devices --->
[*]Enable Video For Linux API 1 (DEPRECATED)
<*>Video For Linux
[*]video capture adapters --->
[*]V4L USB devices --->
(2)Device Drivers --->
USB support --->
<*>Support for Host-side USB
--- USB Host Controller Drivers
<*>OHCI HCD support
--- USB Multimedia devices
<M>USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Cameras

此時,可能會提示 drivers/usb/media/gspcav1-20071224/gspca_core.c 的一些輕微錯誤,稍作修改即

可:
//static const char gspca_version[] = GSPCA_VERSION;
static const char gspca_version[] = "00.60.00";
編譯內核及內核模塊 make uImage modules
把uImage拷到交叉編譯的內核下載文件架中
生成的內核模塊/drivers/usb/media/gspcav1-20071224/gspca.ko文件拷到交叉編譯的文件系統的任意文件夾如/tmp
然後在板上安裝模塊 insmod gspca.ko

插上usb攝像頭出現如下信息:
# usb 1-1: new full speed USB device using s3c2410-ohci and address 3
usb 1-1: configuration #1 chosen from 1 choice
drivers/usb/media/gspcav1-20071224/gspca_core.c: USB GSPCA camera found.(ZC3XX)
drivers/usb/media/gspcav1-20071224/gspca_core.c: [spca5xx_probe:4276] Camera type JPEG
drivers/usb/media/gspcav1-20071224/Vimicro/zc3xx.h: [zc3xx_config:638] Find Sensor PB0330.

Chip revision 0
drivers/usb/media/gspcav1-20071224/gspca_core.c: [spca5xx_getcapability:1250] maxw 640 maxh

480 minw 160 minh 120
說明移植的驅動已經能識別設備,如果udev安裝好的話,設備名所在路徑 /dev/video0。

到此內核加載驅動完成,但這樣需要每次啟動都手動安裝模塊。(把驅動編譯進內核會有問題,問題未解決)

安裝好驅動後就可以使用測試程序mouse_capture進行抓圖了
把mouse_capture-daily3文件夾的mouse_capture拷到網絡文件系統下 /opt/filesystem/tmp
然後在板上運行./mouse_capture就可以自動抓拍到一張圖片1.jpg存放在/tmp目錄下
這時可以通過從虛擬機的Ubuntu界面進入網絡文件系統的tmp目錄下查看該圖片。

移植servfox

修改Makefile文件為:

CC=arm-linux-gnu-gcc

SERVFLAGS= -O2 -DLINUX $(WARNINGS) -I/home/yuaf/linux-2.6.22.6/include(I地址填你的內核的

include文件夾位置)

然後make一下,在當前文件夾下就可以看到生成的可執行文件 servfox,把此可執行文件拷貝到網絡文件

系統下 /opt/filesystem/bin

在開發板中運行 servfox -d /dev/video0 -s 640x480 -w 7070(7070為服務器端口號),就可以看到如下

的提示信息:

# ./servfox -d /dev/video0 -s 640x480 -w 7070
servfox version: 1.1.2 date: 07:10:2005 (C) [email protected]
drivers/usb/media/gspcav1-20071224/gspca_core.c: [gspca_set_isoc_ep:946] ISO EndPoint found

0x81 AlternateSet 7
drivers/usb/media/gspcav1-20071224/gspca_core.c: [spca5xx_do_ioctl:2125] Bridge ZC301-2
drivers/usb/media/gspcav1-20071224/gspca_core.c: [gspca_set_isoc_ep:946] ISO EndPoint found

0x81 AlternateSet 7
Waiting .... for connection. CTrl_c to stop !!!!
說明servfox視頻服務器已成功運行起來了。

Copyright © Linux教程網 All Rights Reserved