當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 基于linux3.0.15內(nèi)核的中星微zc301攝像頭驅(qū)動(dòng)及網(wǎng)絡(luò)視頻服務(wù)器移
一、 移植環(huán)境:
【移植環(huán)境】
1、 主機(jī):Ubuntu 10.10發(fā)行版
2、 目標(biāo)機(jī):FS4412平臺(tái)
3、 交叉編譯工具:arm-none-linux-gnueabi-4.5.1
4、 攝像頭模塊:ZC301
5、Linux文件系統(tǒng):rootfs. cramfs.
6、內(nèi)核:linux-3.0.15-fs4412_V3
二、 內(nèi)核配置
4. 添加驅(qū)動(dòng)(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
三、 網(wǎng)絡(luò)視頻服務(wù)器移植
由于項(xiàng)目需要,現(xiàn)在需要移植網(wǎng)絡(luò)視頻服務(wù)器,對(duì)于內(nèi)核linux-3.0.15-fs4412_V3,不能再使用servfox,如果要使用的需要修改大量的代碼,在此選用新的方法來(lái)移植。需要兩個(gè)文件jpeg,mjpg-stream.移植如下:
mkdir /source/rootfs/mjpg
1. jpeg庫(kù)的移植
mkdir /home/linux/jpeg
jpeg源碼包通過(guò)下面這個(gè)網(wǎng)址下載
//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 配置源代碼樹(shù)
安裝目錄:
--prefix=PREFIX體系無(wú)關(guān)文件的頂級(jí)安裝目錄。
--host=HOST指定交叉工具鏈
)
編譯
make
安裝
make install
拷貝庫(kù)到文件系統(tǒng)中
cp –d /home/linux/jpeg/lib/* /source/rootfs/lib
2. mjpg-stream的移植
mjpg-stream源碼包通過(guò)下面這個(gè)網(wǎng)址下載
//sourceforge.net/projects/mjpg-streamer/
解壓源碼
tar xvf mjpg-streamer-r63.tar.gz
修改源碼
cd mjpg-streamer-r63
修改頂層makefile及plugins目錄中的各級(jí)makefile將所有 (注意這里需要修改的內(nèi)容)
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
拷貝文件到目標(biāo)板:
cp *.so /source/rootfs/mjpg
cp mjpg_streamer /source/rootfs/bin
cp /opt/arm-2009q3/arm-none-linux-gnueabi/libc/lib/* /source/rootfs/lib/
在開(kāi)發(fā)板上執(zhí)行
mjpg_streamer -i "/mjpg/input_uvc.so -d /dev/video0" -o "/mjpg/output_http.so -w /www"
實(shí)驗(yàn)現(xiàn)象:
在瀏覽器上輸入:開(kāi)發(fā)板IP:8080/?action=stream