爱板网论坛

查看: 109|回复: 0

[原创] 【盈鹏飞EVB-P6UL评估板试用】samba、mjpeg_streamer移植

[复制链接]

5

主题

2

好友

240

积分

秀才

Rank: 3Rank: 3

  • TA的每日心情
    奋斗
    2017-12-5 10:39
  • 签到天数: 35 天

    连续签到: 2 天

    [LV.5]常住居民I

    发表于 2017-12-4 20:54:54 |显示全部楼层
    本帖最后由 ゛向日葵的执着 于 2017-12-4 21:08 编辑

    本篇试用文章主要介绍在盈鹏飞EVB-P6UL开发板上移植samba文件服务器以及mjpeg_streamer视频监控服务。
    一、Samba服务移植
    主机Linxu操作系统:Ubuntu 14.04
    Samba源码版本:samba-3.0.23
    目标嵌入式平台:EVB-P6UL
    交叉编译工具链:arm-linux-gnueabi-gcc(Linaro GCC 7.2-2017.11)
    1、Samba服务基本简介
    Samba是在LinuxUNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMBServer Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
    2、源码下载解压
    1. $ sudo tar -xvf samba-3.0.23.tar.gz
    复制代码
    3、直接编译测试
    在虚拟机上进行直接编译
    1. $ cd /share/samba-3.0.23/source/
    2. $ sudo ./configure samba_cv_CC_NEGATIVE_ENUM_VALUES=yes
    3. $ sudo make
    复制代码
    4、修改configure配置文件
    直接编译是能直接通过的,为了能使交叉编译成功,需要修改配置文件以及源码c文件
    两种修改方式:
    第一种
    cross_compiling=no 的定义位置的下面添加下面一行test_cross_compiling=no再修改出现 cannot run test program while cross compiling 位置,然后修改if test "$cross_compiling" = yes; thenif test "$test_cross_compiling" = yes; then以关键字“error: cannot run test program while cross compiling”查找configure文件将其中相关代码都修改过来,即可以解决该问题。
    第二种:
    configure里面在到出现 cannot run test program while cross compiling,修改如下
      if test "$cross_compiling" = yes; then
      { { echo "$as_me: $LINENO: error: cannot run test program while cross compiling
    See \`config.log' for more details." >&5
    echo "$as_me: error: cannot run test program while cross compiling
    See \`config.log' for more details." >&2;}
             }
    samba_configure配置.png

    按照上述修改即可。
    5、修改源码c文件
    1source/lib/time.c      
    修改文件的第60
    gettimeofday(tval); 修改为 gettimeofday(tval,NULL);
    2sourece/client/mount.cifs.c
    添加宏定义
    #define PATH_MAX  50
    6、交叉编译
    修改完成配置文件以及源文件的错误后,接下来进行正确配置以及交叉编译,要指定正确的交叉编译工具链。
    1. $ sudo -i
    2. # ./configure CC=arm-linux-gnueabi-gcc LD=arm-linux-gnueabi-ld AR=arm-linux-gnueabi-ar
    3. --target=arm-linux --host=arm-linux-gnueabi samba_cv_CC_NEGATIVE_ENUM_VALUES=yes
    4. # make
    复制代码
    samba_make后.png

    7、目标板配置
    /usr/loca目录下,创建文件夹
    1. # mkdir samba
    2. # cd samba
    3. # mkdir bin lib private var
    复制代码
    source/bin/下交叉编译出来的smbdnmbd拷贝至嵌入式设备的usr/local/samba/bin文件夹下,可以使用TFTP功能进行下载或者U盘拷贝
    使用TFTP功能进行下载:
    1. # cd /usr/local/samba/bin
    2. # tftp -g 192.168.0.133 -r./smbd
    3. # tftp -g 192.168.0.133 -r./nmbd
    复制代码
    接下来,在lib文件路径下配置好smb.conf文件
    创建新文件夹vi smb.conf,添加下面的内容
    1. [global]  
    2. workgroup = workgroup  
    3. server string =  Samba  
    4. netbios name = samba  
    5. security = share  
    6. guest account = root  
    7. [homes]
    8. path = /  
    9. available = yes  
    10. browsable = yes
    11. public = yes  
    12. writable = yes  
    13. guest ok = yes
    复制代码
    8、目标板测试
    EVB-P6UL下执行下面命令运行samba服务
    1. ./usr/local/samba/bin/smbd -D
    2. ./usr/local/samba/bin/nmbd -D
    复制代码
    PC端网络打开\\EVB-P6UL开发板IP即可看到共享的文件目录
    EVB-P6UL共享根目录.png

    到此,samba文件服务共享移植完成。
    二、mjpeg_streamer移植
    主机Linxu操作系统:Ubuntu 14.04
    目标嵌入式平台:EVB-P6UL
    交叉编译工具链:arm-linux-gnueabi-gcc(Linaro GCC 7.2-2017.11)
    1mjpeg_streamer简单介绍
    Mjpgstreamer是一个开源软件,用于从webcam摄像头采集图像,把它们以流的形式通过基于ip的网络传输到浏览器如FirefoxCambozolaVLC播放器,Windows的移动设备或者其他拥有浏览器的移动设备。Mjpg-streamer可以通过文件或者是HTTP方式访问linux UVC兼容摄像头。
    2、移植jpeg
    1)下载jpeg库源码
    链接:http://www.ijg.org/files/jpegsrc.v8b.tar.gz
    2)共享到Linux主机并且进行解压
    1. # tar -xvf jpegsrc.v8b.tar.gz
    2. # cd jpeg-8b/
    复制代码
    3)配置configure文件
    配置configure文件,/usr/local/src/out_jpeg目录是输出的文件目录,可以自行更改
    CC=arm-linux-gnueabi-gcc是配置交叉编译工具链,根据主机Linux系统进行配置
    1. ./configure CC=arm-linux-gnueabi-gcc --prefix=/usr/local/src/out_jpeg -host=arm-linux-gnueabi
    复制代码
    4)编译、安装
    1. # make
    2. # make install
    复制代码
    out_jieg输出文件.png

    完成后会在/usr/local/src/out_jpeg路径生成mjpg_streamer需要的文件
    5)lib文件共享到EVB-P6UL
    /usr/local/src/out_jpeg/lib下的文件复制到EVB-P6UL开发板的/lib下,可以使用TFTPSamba或者U盘进行操作
    3、移植mjpeg_streamer
    1)下载mjpg-streamer源码
    链接:http://mjpg-streamer.svn.sourceforge.net/viewvc/mjpg-streamer/mjpg-streamer/
    1. # apt-get install subversion
    2. # svn co http://mjpg-streamer.svn.sourceforge.net/viewvc/mjpg-streamer/mjpg-streamer/
    复制代码
    3)修改plugins/input_uvc下的Makefile
    CFLAGS += -O1  -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
    修改为:
    CFLAGS += -O1  -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I /usr/local/src/out_jpeg/include
    $(CC) $(CFLAGS) -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo $(LFLAGS)
    修改为:
    $(CC) $(CFLAGS) -L /usr/local/src/out_jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo $(LFLAGS)
    /usr/local/src/out_jpeg为自己定义的路径。
    4)编译安装
    1. # cd /share/mjpg-streamer/mjpg-streamer-experimental
    2. # make CC=arm-linux-gnueabi-gcc
    3. # make install
    复制代码
    mjpg_streamer_make后.png

    5)复制库和mjpg_streamer执行文件到EVB-P6UL并配置
    1. # cp mjpg_streamer /share/
    2. # cp *.so /share/
    3. # cp -r start.sh www /share
    复制代码
    4、目标板配置
    目标板需要的文件.png

    修改start.sh脚本,插入USB摄像头,在脚本中指定摄像头的设备号,然后运行脚本,并打开网页输入http://IP+8080即可
    修改start.sh.png

    三、总结
    sambamjpeg_streamer服务移植到EVB-P6UL的文章先介绍到这里,在移植的过程中可能会遇到各种奇怪的问题,需尝试多个版本,最后,感谢爱板网和盈鹏飞科技公司给予了笔者测试试用EVB-P6UL开发板的机会。

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    手机版|爱板网 |网站地图  

    GMT+8, 2017-12-13 07:42 , Processed in 0.207211 second(s), 11 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部