linux 2.6.35内核移植- USB camera功能添加
2012-02-20 21:05
435 查看
一、环境 主机环境 :ubuntu 10.10 目标机:FS2410(S3C2410) 主机工具链 :gcc-4.4.5 交叉工具链:arm-none-linux-gnueabi-gcc-4.3.2 摄像头 :ZC301 二、移植过程 1、配置内核是内核支持芯片为ZC301的摄像头 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) 2、重新编译内核 make zImage 通过上面两个步骤就可以驱动我们的摄像头了。但是这个驱动是基于V4l2的。以前基于V4L的一些上层应用就不能用了,或需要做大量的修改!这里我们要实现网络视频的功能,以前都是用servfox这个网络视频服务器,但是这个服务器就是基于V4L的,我们如果想用的话就得对servfox的源码进行修改。这里我们选用另外一种方案mjpg-stream。 3、mjpg-stream的移植 关于mjpg-stream的资料大家可以在下面这个网址查看:http://www.eefocus.com/blog/link2url.php?link=http%3A%2F%2Fsourceforge.net%2Fapps%2Fmediawiki%2Fmjpg-streamer%2Findex.php%3Ftitle%3DMain_Page mjpg-stream的移植需要jpeg的库,所以我们先移植jpeg的库 (1)jpeg库的移植 1)jpeg源码包通过下面这个网址下载 http://www.ijg.org/files/jpegsrc.v8b.tar.gz 2)解压源码包 tar xvf jpegsrc.v8b.tar.gz 3)配置源码 cd jpeg-8b ./configure --prefix=/home/linux/s3c2410-2.6.35/video/jpeg --host=arm-none-linux-gnueabi 4)编译 make 5)安装 make install 6)拷贝库到文件系统中 cp //home/linux/s3c2410-2.6.35/video/jpeg /lib/libjpeg.so.8 /source/rootfs/lib (2)mjpg-stream的移植 1)mjpg-stream源码包通过下面这个网址下载 http://sourceforge.net/projects/mjpg-streamer/ 2)解压源码 tar xvf mjpg-streamer-r63.tar.gz 3)修改源码 cd mjpg-streamer-r63 修改顶层makefile及plugins目录中的各级makefile将所有 CC=gcc 修改为 CC=arm-none-linux-gnueabi-gcc 修改plugins/input_uvc/Makfile 修改 CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC 为 CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/linux/s3c2410-2.6.35/video/jpeg/include 修改 $(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo 为 $(CC) $(CFLAGS) -ljpeg -L/home/linux/s3c2410-2.6.35/video/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo jpeg_utils.c:27: fatal error: jpeglib.h: No such file or directory 4)编译 make 补充:linux 内核在29以上版本的要在此步之前修改drivers/media/video/gspca/gspca.c文件,在第220行的goto error_buff; }后面添加一行,最终的效果为如下: 220 goto error_buffer; 221 } 222 urb->transfer_flags=URB_NO_TRANSFER_DMA_MAP; 223 usb_fill_int_urb(urb,dev, ...........此处省略 5)测试 mkdir /source/rootfs/mjpg cp *.so /source/rootfs/mjpg cp mjpg-stream /source/rootfs/bin 打开开开发板运行 mjpg_streamer -i "/mjpg/input_uvc.so" -o "/mjpg/output_http.so -w /www" 在源码目录下有start.sh,这个脚本里有一些mjpg-stream的使用方法及说明 打开一个网页输入下面地址就能够看到一个视频(开发板的IP为192.168.1.202): http://192.168.1.202:8080/?action=stream 打开一个网页输入下面地址就能够看到一个静态图片: http://192.168.1.202:8080/?action=snapshot 6)在mjpg源码下有一个www的目录,这个一个网络使用mjpg的实例,结合web服务器(boa)可以实现一些其他相关功能。 补充:该实验很注重交叉工具链的统一使用,根文件系统的功能是否完善. |
相关文章推荐
- linux-2.6.35内核移植—USB驱动的添加
- ARM9开发板FL2440移植Linux-3.0内核————添加USB驱动
- linux-2.6.35内核移植—网卡驱动的添加
- linux-2.6.35内核移植—Nand flash驱动的添加(分区)
- linux-2.6.35内核移植—LCD驱动的添加
- linux-2.6.35内核移植—SD卡驱动的添加
- Linux-2.6.22.6 内核移植--添加USB设备驱动
- [RK3288][Android6.0] USB UVC Camera 功能支持的添加
- S3c6410 linux内核移植(10)---添加充电控制脚驱动(LED驱动)
- 【引用】Linux-2.6.32.2内核在mini2440上的移植(六)---添加LCD背光驱动
- Linux2.6内核usb gadget驱动移植
- Linux-2.6.32.2内核在mini2440上的移植(十)---配置USB外设
- Linux-2.6.32.2内核在mini2440上的移植(十)---配置USB外设
- linux3.6.6移植usb-camera(ZC0301PLH)
- 基于linux-2.6.38.8内核的SDIO/wifi驱动分析&&android 平台USB wifi驱动移植及使用 SDIOwifi
- linux-2.6.35内核配置和网卡驱动添加
- 移植Linux3.4.2版本内核到mini2440(二)--添加网卡、UVC摄像头、LCD驱动
- Linux4.9.9内核USB移植(适配fs4412平台)
- Linux-2.6.32.2内核在mini2440上的移植(八)---添加ADC驱动
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作--Bootloader的功能