2009年11月19日 星期四

ip camera

這是屬於Justin的個人Blog, 用來紀錄一些事物或是技術文件 ...
Justin

Links
About Justin
Album
Bookmarks
Guestbook
Tags
3C產品 (13)
Computer (3)
Others (15)
USB Webcam
􀁺 Vimicro Zc301P

實驗步驟:

ARM-based IPCam實驗步驟共可分為以下幾個部分:
A.Host環境設置
B.Webcam驅動程式移植
C.Webcam擷取軟體移植
D.Web Server編譯
E.Target端軟體配置與實測

A.Host環境設置

(1)在 Linux Host 上安裝 Toolchain (Cross Compiler) for NAV-270
(Host)# cd /
(Host)# tar –jxvf cross-3.4.1.tar.bz2
(Host)# export PATH=/usr/local/arm/3.4.1/bin/:$PATH
(Host)# arm-linux-gcc –v
看是否有gcc 3.4.1版本訊息出現,來得知是否已正確引入路徑。

(2)在 Linux Host 上解開2.6.9 Kernel Source Code (/usr/local/arm)
(Host)# tar –zxvf linux-2.6.9-nav-0809.tar.gz

B.Webcam驅動程式移植

(1)使用mxhaard.free.fr提供的驅動程式Linux kernel webcams Driver GSPCA / SPCA5xx來驅動Vimicro晶片之Webcam:
官方網頁: http://mxhaard.free.fr/

(2)下載usb-2.6.12LE06.patch.tar.gz
Driver 下載: http://mxhaard.free.fr/spca50x/embedded/KernelPatch/

(3)進行Kernel Patch
(Host)# cd /usr/local/arm/linux-2.6.9-nav/drivers/usb
(Host)# tar zxvf usb-2.6.12LE06.patch.tar.gz
(Host)# patch –p1 <>下的Video for linux選擇為<*>,並已內含於Kernel。接著將 USB support
---> USB Multimedia devices選項下的USB SPCA5XX Sunplus Vimicro Sonix Cameras標記成,以編譯成Modules。

(5)編譯SPCA5XX Kernel Module
(Host)# make module

(6)取得SPCA5XX Kernel Module (spca5xx.ko)

C.Webcam擷取軟體移植
使用同為mxhaard.free.fr所提供的servfox來進行Webcam影像之擷取。
官方網站: http://mxhaard.free.fr/spca50x/embedded/Servfox/

(1)下載servfox-R1_1_3.tar.gz

(2)解開servfox
(Host)# tar zxvf servfox-R1_1_3.tar.gz

(3)編譯servfox
(Host)# cd servfox-R1_1_3
(Host)# mv Makefile.arm Makefile
(Host)# vi Makefile (確認Cross-Compiler)
(Host)# make

(4)取得servfox執行檔

D.Web Server編譯
使用www.acme.com提供的thttpd進行Web Server 安裝。

(1)下載 thttpd Source Code並解壓縮:
(Host)# cd /usr/local/arm
(Host)# wget http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz
(Host)# tar zxf thttpd-2.25b.tar.gz

(2)編譯 thttpd Web-Server
(Host)# cd thttpd-2.25b
(Host)# CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc ./configure host=arm-linux
(Host)# make

(3)取得thttpd執行檔

E.Target端軟體配置與實測

(1)備妥之程式與設定檔:
a.servfox (影像擷取與串流輸出程式)
b.spca5xx.ko (Webcam驅動程式)
c.thttpd (Web Server)
d.thttpd.conf (Web Server配置檔)
e.www目錄 (放置遠端監控Webcam之網頁程式)

thttpd.conf配置檔內容:
dir=/ramdisk/www
port=8080
user=nobody
nochroot
nosymlink
novhost

(2)遠端監控Webcam之網頁程式:
使用同為mxhaard.free.fr所提供的spcaview內含之http-java-applet來進行Webcam影像遠端觀看功能實
作,spcaview亦可於linux上編譯並直接與servfox進行影像串流擷取。
下載網址: http://mxhaard.free.fr/spca50x/Download/
下載spcaview-20071223.tar.gz
解開後於http-java-applet目錄中取得index.htm (原index-sample.html), control.jpg, JWebcamPlayer.jar三個檔案。

(3)將NAV270開機,並透過超級終端機由Com 1連上。

(4)使用udhcpc取得網路位址
(Target)# udhcpc
例如取得eth0之IP位址為192.168.1.105

(5)將程式檔案上傳到ARM開發版上:
(Target)# cd ramdisk
將程式與配置檔透過Zmodem協定上傳
(Target)# mkdir www
(Target)# cd www
將Web監控程式透過Zmodem協定上傳

(6)將Web監控程式設成可讀狀態
(Target)# chmod +r *

(7)將Webcam接上ARM開發版, 並載入驅動程式
(Target)# cd ..
(Target)# insmod spca5xx.ko
若成功載入驅動程式則會出現:
Using spca5xx.ko
Drivers/usb/media/spca5xx/spca_core.c: USB SPCA5XX camera found. Type Vimicro Zc301P 0x301b
Usbcore: registered new driver spca5xx
Drivers/usb/media/spca5xx/spca_core.c: spca5xx driver 00.57.06LE registered

(Target)# mknod /dev/video0 c 81 1
建立video設備節點,/dev/video0為設備名稱,c代表字元設備,81為主設備編號,1為從設備號

(8)執行servfox程式
(Target)# chmod 755 servfox
(Target)# ./servfox –h (查看可使用的參數)
(Target)# ./servfox –d /dev/video0 –s 640x480 –w 7070 &
目標裝置設為/dev/video0,擷取模式為640x480,以port 7070輸出影像串流。

(9)啟動thttp程式
(Target)# chmod 755 thttpd
(Target)# ./thttpd –C thttpd.conf

(10)於可連線的範圍內以一台具備java plugin的瀏覽器電腦開啟目標網頁:
於網址列輸入 http://192.168.1.105:8080/index.htm 即可觀看到Webcam畫面。

實驗問題記錄

第一次嘗試使用與編譯Linux Kernel 2.6.9 一樣的 Corss-compiler 3.4.1 gcc來編譯servfox可以無錯誤完成編譯,但於ARM平台上直行會出現ioctl錯誤與無法辨識Webcam的錯誤訊息- “Not a JPEG webcam sorry Abort! “,而後改用Corss-compiler 3.2.2 gcc即無此問題。

一般建立/dev/video設備節點時由於只有一個設備,通常輸入mknod /dev/video0 c 81 0,從設備號0代表僅有一個,但在此NAV270開發版上需要指定為1,判斷時可以透過/dev/v4l目錄下的節點來觀察,NAV270上推測具有預設之/dev/v4l/video0設備,而插入USB Webcab時可以觀察到會多出一個/dev/v4l/video1設備,因此從設備號需設為1。

沒有留言:

張貼留言