一、 移植環境:
【移植環境】
1、 主機:Ubuntu 10.10發行版
2、 目標機:FS4412平臺
3、 交叉編譯工具:arm-none-linux-gnueabi-4.5.1
4、 攝像頭模塊:ZC301
5、Linux文件系統:rootfs. cramfs.
6、內核:linux-3.0.15-fs4412_V3
二、 內核配置
4. 添加驅動(video)
Make menuconfig
Device Drivers --->
<*> Multimedia support --->
<*> Video For Linux
[*] Enable Video For Linux API 1 (DEPRECATED) (NEW)
[*] Video capture adapters (NEW) --->
[*] V4L USB devices (NEW) --->
<*> USB Video Class (UVC)
[*] UVC input events device support (NEW)
<*> USB ZC0301[P] webcam support (DEPRECATED)
make zImage
三、 網絡視頻服務器移植
由于項目需要,現在需要移植網絡視頻服務器,對于內核linux-3.0.15-fs4412_V3,不能再使用servfox,如果要使用的需要修改大量的代碼,在此選用新的方法來移植。需要兩個文件jpeg,mjpg-stream.移植如下:
mkdir /source/rootfs/mjpg
1. jpeg庫的移植
mkdir /home/linux/jpeg
jpeg源碼包通過下面這個網址下載
//www.ijg.org/files/jpegsrc.v8b.tar.gz
解壓源碼包
tar xvf jpegsrc.v8b.tar.gz
配置源碼
cd jpeg-8b
./configure --prefix=/home/linux/jpeg --host=arm-none-linux-gnueabi
(./configure 配置源代碼樹
安裝目錄:
--prefix=PREFIX體系無關文件的頂級安裝目錄。
--host=HOST指定交叉工具鏈
)
編譯
make
安裝
make install
拷貝庫到文件系統中
cp –d /home/linux/jpeg/lib/* /source/rootfs/lib
2. mjpg-stream的移植
mjpg-stream源碼包通過下面這個網址下載
//sourceforge.net/projects/mjpg-streamer/
解壓源碼
tar xvf mjpg-streamer-r63.tar.gz
修改源碼
cd mjpg-streamer-r63
修改頂層makefile及plugins目錄中的各級makefile將所有 (注意這里需要修改的內容)
CC=gcc
修改為
修改plugins/input_uvc/Makfile
修改
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
為
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared –fPIC –I/homw/linux/jpeg/include
修改
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
為
$(CC) $(CFLAGS) –ljpeg -L/home/linux/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
編譯
Make
拷貝文件到目標板:
cp *.so /source/rootfs/mjpg
cp mjpg_streamer /source/rootfs/bin
cp /opt/arm-2009q3/arm-none-linux-gnueabi/libc/lib/* /source/rootfs/lib/
在開發板上執行
mjpg_streamer -i "/mjpg/input_uvc.so -d /dev/video0" -o "/mjpg/output_http.so -w /www"
實驗現象:
在瀏覽器上輸入:開發板IP:8080/?action=stream