摄像头移植

一、环境

主机环境 :ubuntu 10.10         目标板 :FS-S5PC100

主机工具链 :gcc-4.4.5         交叉工具链 :arm-unknown-linux-gnueabi-gcc

摄像头 :ZC301

注意事项:

自己制作文件系时,需要将交叉编译工具链中的库文件拷贝到文件系统中。

2  调试时使用nfs挂载,调试完成后,将zImage和yaffs文件系统(yaffs可读写)烧入开发板。

二、移植过程

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

3、mjpg-streamer的移植

关于mjpg-streamer的资料可以在下面这个网址查看:http://sourceforge.net/apps/mediawiki/mjpg-streamer/index.php?title=Main_Page

mjpg-streamer的移植需要jpeg的库,所以我们先移植jpeg的库

(1)jpeg库的移植

1)jpeg源码包通过下面这个网址下载          http://download.csdn.net/detail/colwer/4531343

2)解压源码包在/home/linux/ 目录下解压:            tar xvf jpegsrc.v8b.tar.gz

3)配置源码,在/home/linux/目录下创建jpeg目录mkdir jpeg

cd  jpeg-8b

执行    ./configure  --prefix=/home/linux/jpeg  --host=arm-unknwn-linux-gnueabi

4)编译               make

5)安装               make install

6)拷贝库到文件系统中        cp  /home/linux/jpeg/lib/libjpeg.so.8   /source/rootfs/lib

(2)mjpg-streamer的移植

1)mjpg-stream源码包通过下面这个网址下载  http://download.csdn.net/detail/colwer/4531434

2)解压源码                tar xvf mjpg-streamer-r63.tar.gz

3)修改源码                cd mjpg-streamer-r63

修改顶层makefile及plugins目录中的各级makefile,将所有

CC=gcc

修改为               CC=arm-unknown-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/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

4)编译                make

5)将mjpeg可执行文件拷贝到文件系统的/bin目录下   cp mjpg-streamer  /source/rootfs/bin

在文件系统中创建mjpg目录,将所有的动态库拷贝到该目录下

mkdir /source/rootfs/mjpg

cp *.so /source/rootfs/mjpg  {6个so文件}

将mjpeg_streamer-r63目录下的/www目录拷贝到文件系统中

cp  /www/ -a   /source/rootfs/  -rf

4 运行

在WINDOWS下 运行viewer.exe或运行解压文件中的www目录下的所有文件复制到你当前的BOA服务器指定的目录下。

同时要将www目录下的cambozla.jar bodybg.gif ,favicon.ico,  favicon.png,  sidebarbg.gif拷贝到你的BOA服务器下。

打开开开发板将boa服务器运行起来

./etc/boa/boa &

输入下面一行命令:

./bin/mjpg_streamer  -i  "/mjpg/input_uvc.so -d /dev/video0"  -o  "/mjpg/output_http.so -w  /www/  "

在linux系统的浏览器中,输入如下地址:

http://192.168.1.200:8080

显示界面如下图所示:

5 拍照功能的实现

由于mjpg_stream中output-file.so能实现连续拍照的功能,不能实现单拍或连拍几张的功能所以需要对output_file原码进行修改。

#  cd mjpg-streamer-rc63/plugins/output_file

#  vim output_file.c

在96行 函数 void *worker_thread(void *arg) 体中加入以下代码:

char buf[10];   //

int flags = 0;   //拍照标志,1:表示11张照片,2:表示1张照片

int fd_com = 0; //打开管道的文件描述符

stop_num = 0; //拍照计数

if ( access(“/tmp/webcom”,F_OK) < 0 )    //创建有名管道用于接收拍照命令

{

if ( mkfifo(“/tmp/webcom”,0666 ) < 0)

{

Printf(“ photo fifo create failed\n”);

}

}

fd_com = open (“/tmp/webcom”,O_RDONLY,0666);

if (fd < 0)

{

perror (“open the file webcom error”);

}

在while( ok >= 0 && !pglobal->stop){ 后加入

if (flags == 0)

{

while(1)

{

reade(fd_com,buf,sizeof(buf));

if (strncmp(buf,”danger”,6) == 0)    //拍11张照片

{

flags = 1;

bzero(buf,sizeof(buf));

break;

}

if (strncmp(buf,”one”,3) == 0)   //拍1张照片

{

flags = 2;

bzero(buf,sizeof(buf));

break;

}

}

}

在if (delay > 0){

usleep(1000*delay);

}后加入

stop_num++

if (flags == 1)        //判断拍照的数量

{

if  ( stop_num > 9)

{

stop_num = 0;

flsgs = 0;

}

}

else if (flags == 2)

{

stop_num = 0;

flags = 0;

}

所以只要向有名管道/tmp/webcom写入danger就能连拍11张照片,写入one就拍一张照片。

注:拍照功能实现:

./bin/mjpg_streamer  –i  “/mjpeg/input_uvc.so  –d  /dev/video0” -o “/mjpeg/output_file.so   –f  /pice  -d  15000 ”  &  echo  danger  >  /dev/video0

arm开发板6410/2440上mjpg-streamer网络视频服务器移植的更多相关文章

  1. iTOP-4412开发板-实战教程-ssh服务器移植到arm开发板

    本文转自迅为开发板:http://www.topeetboard.com 在前面实战教程中,移植了“串口文件传输工具”,整个移植过程是比较简单的,而且我 们没有做任何协议方面的了解,只是“配置”+“编 ...

  2. 使用arm开发板搭建无线mesh网络(二)

    上篇博文介绍了无线mesh网络和adhoc网络的区别,这篇文章将介绍无线mesh网络的骨干网节点的组建过程.首先需要介绍下骨干网节点的设计方案:每个骨干网节点都是由一块友善之臂的tiny6410 ar ...

  3. 使用arm开发板搭建无线mesh网络(一)

    由于项目的需要,老板让我使用arm开发板(友善之臂的tiny6410)搭建无线mesh网络.一般而言,无线自组织网络的网络设备都是由用户的终端设备来充当,这些终端设备既要处理用户的应用数据,比如娱乐, ...

  4. 关于ARM开发板与PC主机的网络设置问题

    直观来讲,ARM开发板多数情况下会有条网线与主机相连,所以最重要的一步是保证PC主机与ARM开发板能互通. 互通的意思进一步来讲就是互相能ping通.也就是说在瘟都死的dos下(假设主机是瘟都死系统) ...

  5. ARM开发板挂载虚拟机 nfs目录

    ARM开发板做相关开发,为了调试方便,常把开发板mnt目录挂载到虚拟机nfs共享目录上,这样调试程序时候就不用把程序转到开发板上再运行,方便很多.要挂载nfs共享目录,需要安装必要的组件支持. 1.虚 ...

  6. 【记录】尝试用QEMU模拟ARM开发板去加载并运行Uboot,kernel,rootfs【转】

    转自:https://www.crifan.com/try_use_qemu_emulate_arm_board_to_load_and_run_uboot_kernel_rootfs/ [背景] 手 ...

  7. Windows10、ARM开发板、VMware虚拟机同时连接Internet

    前段时间有人遇到一些网络连接问题,让我帮忙处理,他想让ARM开发板连接外网,可以连接网络数据库,同时保证自己的电脑可以上网. 本来说直接可以连接一个路由器,分配一个内网IP给ARM就可以了,但是当时那 ...

  8. ubuntu 交叉编译qt 5.7 程序到 arm 开发板

    ubuntu 交叉编译qt 5.7 程序到 arm 开发板平台1 ubuntu 12.042 arm-linux-gcc 4.5.13 QT 5.74 开发板210 armcortex-A8 一 概述 ...

  9. Arm开发板+Qt学习之路

    从2015.11.13日开始接触arm开发板,开始学习Qt,到现在已经四个月零17天了,从一个拿到开发板一无所知的小白,到现在能够在开发板上进行开发,有付出有收获. 之前一直没有时间将这个过程中的一些 ...

随机推荐

  1. centos 验证mysql的安装

    一.验证mysql是否安装 1.whereis mysql:如果安装了mysql就会显示mysql安装的地址 2.which mysql:查看文件的运行地址 3.chkconfig --list my ...

  2. BZOJ4199/UOJ131 [Noi2015]品酒大会

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  3. UOJ66 新年的巧克力棒

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  4. 初始化dataframe

    由字典生成dataframe: >>> d = {'col1': [1, 2], 'col2': [3, 4]} >>> df = pd.DataFrame(dat ...

  5. Python快速学习-函数

    函数定义总结: 1.定义函数时,需要确定函数名和参数个数:2.如果有必要,先对参数的数据类型进行检查:3.函数体内部可以用return随时返回函数结果:4.函数执行完毕没有return语句时,自动re ...

  6. R树的相关知识

    转自:http://blog.csdn.net/houzuoxin/article/details/16113895 R树在数据库等领域做出的功绩是非常显著的.它很好的解决了在高维空间搜索等问题.举个 ...

  7. http post上传文件

    php.ini中关于文件上传的配置指令: file_uploads = On          //是否接受上传的文件 upload_tmp_dir                //临时文件保持目录 ...

  8. C# WPF DataGrid 隔行变色及内容居中对齐

    C# WPF DataGrid 隔行变色及内容居中对齐. dqzww NET学习0     先看效果: 前台XAML代码: <!--引入样式文件--> <Window.Resourc ...

  9. IIS7配置PHP简要说明

    1. IIS7 安装的时候 要注意三个地方打得勾 万维网服务->应用程序开发功能->CGI ->ISAPI扩展 ->ISAPI筛选器 注:   CGI  会在IIS7+PHP_ ...

  10. String随笔

    1.古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:,请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想.程序流程图.源代码.结果截图. 设计思想:1)定义一个String类型 ...