一、 移植环境:
【移植环境】
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