zedboard arm下支持nfs以及webcamera启动缺少jpeg库的问题

      调试程序的时候,总是插拔sd卡很不方便,想到用tftp或者nfs,两者相比较而言,nfs比tftp更加有优势,将宿主机的一个目录挂载到板子上,直接在宿主机上修改程序,板子上即可生效。故采用nfs的形式,zedboard加电,启动进入内核,打开串口,这里对于串口怎么配置可以查看前面的博客点击打开链接,输入如下的命令查看zedboard上运行的linux内核是否支持nfs:

cat /proc/filesystems
如果里面没有发现nfs支持项,则我们需要对内核重新进行编译。使用下面的命令下载Xlinx维护的基于zedboard的Linux内核:

git clone https://github.com/Digilent/linux-digilent
下载完成后,进入Linux源码目录,执行下面的命令:

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-  digilent_zed_defconfig
先执行官方的默认配置选项。执行如下的命令:

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- menuconfig
出现配置界面后,按照如下的步骤进行配置,这个地方不可多选,否则内核启动时候,会出现文件系统无法正确挂载等等的问题:

File systems  --->
    [*] Network File Systems  --->
              <*>   NFS client support                                    
                             <*>     NFS client support for NFS version 2                 
                                <*>     NFS client support for NFS version 3                                                                      
                                   [*]   Root file system on NFS       
                                 <*>   NFS server support               
                                  [*]     NFS server support for NFS version 3     
选好后,保存退出。然后进行内核的编译工作,执行如下命令:

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
经过一段时间后,编译完成,拔出sd卡,更新下内核镜像文件,然后再将sd卡插入,启动后可以发现,内核已经支持了nfs。


将mjpeg-streamer移植到zedboard上时候,它依赖一个叫libjpeg的库文件,所以编译mjpg-streamer之前需要对此库文件进行编译。具体操作如下:

1、libtools工具

  下载地址:http://mirrors.ustc.edu.cn/gnu/libtool/,下载libtools-2.2.10.tar.gz

    解压缩后,执行./configure       make       make install
2、jpeg库的移植

首先下载jpeg库源代码,下载地址: http://www.ijg.org/files/,下载jpegsrc.v6b.tar.gz。

解压缩文件,将/libtool-2.4.2/libltdl/config目录下的config.guess  config.sub这两个文件拷贝到jpeg源代码的解压缩目录下。然后配置

./configure CC=arm-xilinx-linux-gnueabi-gcc  --host=arm-unknown-linux 
 –prefix=../mjpg-streamer/jpeg-6b  --enable-shared   --enable-static
然后执行make,编译完成后,在此目录下创建以下几个目录:

mkdir -p bin  include  lib  man
然后执行make install,就将编译好的文件安装到这几个目录中。然后在mjpg-streamer的目录下新建jpeg-lib文件夹,将这几个文件夹拷贝到jpeg-lib下。

进入mjpg-streamer目录下,修改几个Makefile文件,这里需要注意的是修改plugins/input_uvc目录下的Makefile文件,需要修改以下几处。

首先在此makefile文件中添加头文件与库文件的定义,在文件开始处,如下所示:

###############################################################
#
# Purpose: Makefile for "M-JPEG Streamer"
# Author.: Tom Stoeveken (TST)
# Version: 0.3
# License: GPL
#
###############################################################
CC = arm-xilinx-linux-gnueabi-gcc
INCLUDE=../../jpeg-lib/include
LIB=../../jpeg-lib/lib
然后需要修改的两处为:

CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I$(INCLUDE)
nput_uvc.so: $(OTHER_HEADERS) input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
        $(CC) $(CFLAGS) -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo $(LFLAGS) -L$(LIB)
至此,此目录下的修改完成,然后退到上一级目录,修改各个目录下的Makefile文件,主要是修改编译器,如下所示:

CC = arm-xilinx-linux-gnueabi-gcc
所有的修改完成后,回到mjpg-streamer源代码目录下,执行make,就可生成可以在zedboard上运行的程序。

为了避免出现启动摄像头传输数据出现缺少jpeg库的问题,参照前面的博客更新zedboard文件系统,我们拷贝jpeg-lib目录下lib库中所有文件到根文件系统中的lib目录下。然后在板子上测试webcamera即可不会出现错误。








                   




你可能感兴趣的:(zedboard arm下支持nfs以及webcamera启动缺少jpeg库的问题)