Vivado+Zedboard之Linux开发环境搭建

很久没有更新vivado+zedboard系列的博客了。前面的十篇博客主要介绍了Xilinx vivado工具的使用流程,vivado+zedboard裸机开发的方法以及部分Xilinx官网的实例。后面准备开始写一些关于vivado+zedboard+Linux嵌入式系统开发的,还是“入门篇”的形式以帮助初学者迅速上手。

分享一些个人在学习的时候关于这部分的参考资料,后续可能会提到。

参考资料

  • zedboard官网的ctt教程:快速入门
  • digilent官网的oob教程:快速入门
  • 懒兔子、超群天晴的博客:后续会重实现懒兔子的博客;感谢作者
  • AD公司关于HDMI显示的部分
  • d9的博客
  • 本篇的主要目的在于搭建vivado+zedboard+Linux的开发环境,为后续的各种编译做准备。
    由于在学习过程中各种版本的问题,加上后期PR需要2014.2以上版本,所以先对windows下的vivado进行了升级。

    Windows 7-64环境搭建

  • 安装vivado2014.4;
  • 安装zedboard驱动(需更新两次)
  • Qt Windows:
    IDE:Qt Creator 3.1.2;
    Compiler:mingw-gcc4.8.1;mingw-gcc4.4.0
    Lib:Qt5.3.1 ;Qt5.3.1-static;Qt4.7.3;

  • 安装SecureCRT 5.0
  • 安装虚拟机VMware 9;
  • 安装Ubuntu 14.04-64
  • Ubuntu 14.04-64(虚拟机)

    1. 更新;apt-get update

    2. 安装VMware tools、设置共享、剪贴板共享(确保勾选guest isolation);

    (1) 在右键菜单加入“打开终端”
    sudo apt-get install nautilus-open-terminal
    安装完以后重新启动,就可以了。

    (2) 安装VMware tools:
    VMware选择install VMwaretools
    解压光盘, sudo su 获取root权限
    在 ./vmware-install.pl 安装VMwareTools打开终端
    ./vmware-install.pl 安装VMwareTools
    一路enter,出现enjoy即可

    如果提示路径失败等问题,可以:

  • 更新或安装linux headers
  • sudo apt-get update && sudo apt-get install build-essential linux-headers-$(uname -r)

  • 关联文件,就是因为找不到这个几个文件,vmware tools才认为路径无效的。
  • cd /lib/modules/$(uname -r)/build/include/linux
    sudo ln -s ../generated/utsrelease.h
    sudo ln -s ../generated/autoconf.h
    sudo ln -s ../generated/uapi/linux/version.h

  • 再次执行安装就ok啦,运行vmware-config-tools.pl 也没问题了
  • sudo ./vmware-install.pl

    (3) 设置共享
    安装完VMware tools之后,通过setting->share folder添加主机的共享文件夹,然后再/mnt/hgfs/ 中可以找到

    3. 网络
    (1) 自动Wired Connection 1,选择NAT形式时选用,也是默认模式,可通过宿主机连外网;
    (2) 内网Inner:ip是172.20.68.95,用于局域网通信、调试等,选择bridge模式
    (3) 查看/修改 网络
    ifconfig
    sudo ifconfig eth1 192.168.100.95 //修改ip
    sudo ifconfig eth up/down //开关网卡

    4. 安装ssh服务,见ubuntu下如何安装使用SSH?
    bridge模式下选择inner,可通过SecureCRT等进行远程访问。

    5. 安装git (可选)
    (1) 首先去www.github.com上注册帐号
    (2) 本机安装git. sudo apt-get install git
    (3) 给本机注册SSH,请移步https://help.github.com/articles/generating-ssh-keys,注册SSH后就默认可以在本机上传代码之类,不用在输入用户名密码…
    (4) 配置Git的配置文件,username和email
    git config --global user.name "your name" //配置用户名
    git config --global user.email "your email" //配置email

    6. 安装arm-xilinx-liunx交叉编译环境
    arm-xilinx-linux-gnueabi
    注意64位的要添加32位的包。
    gcc version 4.7.2 (Sourcery CodeBench Lite 2012.09-104)

    (1) 32-bit兼容库(可选)
    sudo apt-get update
    sudo apt-get install ia32-libs ia32-libs-gtk

    对于Ubuntu14.04,几经尝试,使用如下方法:
    在用的架构: 输出当前的使用的架构,比如amd64
    dpkg –print-architecture

    添加架构,添加i386架构,然后刷新下源列表,当然,删除就是remove
    dpkg –add-architecture i386
    apt-get update
    这时就已经包含i386的软件列表

    安装i386软件
    apt-get install iceweasel:i386

    (2) 交叉编译环境
    cd ~
    git clone https://github.com/xupsh/CodeSourcery.git //下载后可打包,以后解压即可用;由于软件比较大,不上传了;
    echo "export PATH=~/CodeSourcery/bin:$PATH" >> ~/.bashrc
    echo "export CROSS_COMPILE=arm-xilinx-linux-gnueabi-" >> ~/.bashrc
    验证;由于是写入用户变量,需重新登录或者重启生效。
    arm-xilinx-linux-gnueabi-gcc -v
    至此已经搭建完毕。
    vi ./.bashrc

    7. 安装Qt Linux
    安装Qt creator,可在软件中心中找,会自动下载Qt的新版本(包括Qt-lib);也可去官网下载\

    自行编译任意版本的方法:
    下载Qt-lib源码包,此处以qt-everywhere-opensource-src-4.7.3.tar.gz为例
    注意前面两步是可选的。因为后续我们建立的Qt-ZYNQ库也是这个源码包。

    添加中文支持:
    缺少fontconfig造成的,于是重新configure:
    问题又来了,configure未通过,提示Fontconfig未通过,于是进入/config.tests/x11/fontconfig目录,执行make,发现缺少freetype相关的头文件,首先保证freetype开发库已经安装:
    sudo apt-get install libfreetype6-dev
    安装后发现freetype头文件没在标准路径,于是
    ln -s /usr/include/freetype2/freetype/ /usr/include/freetype
    再次在这里make,还是出错,发现缺少fontconfig开发库,于是
    sudo apt-get install libfontconfig1-dev

    添加相关库:
    如果出现:You might need to modify the include and library search paths by editing
    QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /opt/qtx11/qt-everywhere-opensource-src-4.7.1/qt-everywhere-opensource-src-4.7.1/mkspecs/linux-g++.
    需要安装libX11的库文件,依次安装
    sudo apt-get install libX11-dev
    sudo apt-get install libXext-dev
    sudo apt-get install libXtst-dev
    若编译时(webkit)出现:”cannot find -lXrender”
    出现:“cannot find -lXrender” 需要安装
    sudo apt-get install libxrender-dev

    编译Qt源码包
    tar -xvzf qt-everywhere-opensource-src-4.7.3.tar.gz
    cd qt-everywhere-opensource-src-4.7.3
    ./configure -fontconfig -prefix $INSTALL //自己先export INSTALL=安装路径
    make //要等很久
    make install
    测试。做了一个例子,ok

    8. 制作Qt-ZYNQ交叉编译库
    (1) IDE:apt-get installqtcreator (Linux下Qt安装参考Linux 下安装Qt,最好先看,有些支持库需要先行安装,比如fontconfig)
    (2) Qt库:源码包;配置替换qmake.conf;configure;C++库;中文字库
    (3) 打包:创建img

    1. 在linux安装qt集成开发环境
    apt-get installqtcreator
    或者从软件中心中进行安装
    可能需要:
    按照懒兔子的博客的步骤,新建项目没有成功,提示的不能创建文件夹,意识到可能是权限的问题,于是在/usr/bin下 在终端里./qtcreator ,可以新建项目,说明真的是权限的问题,于是
    chmod 777 -R /usr/bin //qt的安装目录
    chmod 777 -R /opt/qtproject //qt项目的保存目录

    2. 在wiki中安装相应的zynq-qt库(参考wiki.xilinx.com/QtandQwtBaseLibraries-BuildInstructions)
    新建环境变量
    bash> export ZYNQ_QT_BUILD=/home/zq/Program/Qt473-ZYNQ/build
    bash> export ZYNQ_QT_INSTALL=/home/zq/Program/Qt473-ZYNQ/install
    bash> export PATH=$ZYNQ_QT_INSTALL/bin:$PATH //临时的,关闭terminal就无效了
    下载Qt/Qwt sources archive; 解压到ZYNQ_QT_BUILD目录
    bash> cp qt_build_src.tar $ZYNQ_QT_BUILD
    bash> cd $ZYNQ_QT_BUILD
    bash> tar xfv qt_build_src.tar
    包括以下文件:
    qt-everywhere-opensource-src-4.7.3.tar.gz – Qt source archive //这个可以使用上一步的源码包,可以不用下载
    qmake.conf – Qt qmake configuration file //这个最重要
    qwt-6.0.1.tar.bz2 – Qwt source archive //暂时没发现用处
    qwtconfig.pri – Qwt qmake project include file
    编译qt:
    bash> cd $ZYNQ_QT_BUILD
    bash> tar xzfv qt-everywhere-opensource-src-4.7.3.tar.gz //重新编译的话,可以make distclean;最好重新解压,
    bash> cd qt-everywhere-opensource-src-4.7.3`
    bash> cp $ZYNQ_QT_BUILD/qmake.conf mkspecs/qws/linux-arm-gnueabi-g++
    bash> ./configure \
    -embedded arm \
    -xplatform qws/linux-arm-gnueabi-g++ \
    -little-endian \
    -opensource \
    -host-little-endian \
    -confirm-license \
    -nomake demos \
    -nomake examples \
    -prefix $ZYNQ_QT_INSTALL
    bash> make //很久
    bash> su - #if you need root access to be able to install
    bash> make install
    安装Qwt。需要切回su zq并且重新注册变量
    bash> cd $ZYNQ_QT_BUILD
    bash> tar xjfv qwt-6.0.1.tar.bz2
    bash> cd qwt-6.0.1
    bash> cp $ZYNQ_QT_BUILD/qwtconfig.pri .
    bash> qmake qwt.pro
    bash> make
    bash> su - #if you need root access to be able to install
    bash> make install
    添加C++库
    bash> export ZYNQ_QT_INSTALL=/home/zq/Program/Qt473-ZYNQ/install
    bash> sudo cp -P /home/zq/Program/CodeSourcery/arm-xilinx-linux-gnueabi/libc/usr/lib/libstdc++.so* \
    $ZYNQ_QT_INSTALL/lib
    添加中文字库(可先制作eng版的镜像再添加)
    下载wenquanyi字库文件(12-36号),copy到/install/lib/fonts/下(估计40M),然后再将install下的文件打包成镜像就可以了。
    因为这些字库大概40M,所以在制作镜像的时候80M肯定是不够用了,要根据需要扩大镜像的容量,否则在拷贝内容的时候会报错。
    为ZYNQ创建文件镜像
    bash> export ZYNQ_QT_BUILD=/home/zq/Program/Qt473-ZYNQ/build
    bash> export ZYNQ_QT_INSTALL=/home/zq/Program/Qt473-ZYNQ/install
    bash> cd $ZYNQ_QT_BUILD
    bash> dd if=/dev/zero of=qt_lib.img bs=1M count=80
    bash> mkfs.ext2 -F qt_lib.img
    然后把qt_install目录中的内容拷贝过来
    bash> su - #if you need root access to be able to install
    bash> chmod go+w qt_lib.img
    bash> mount qt_lib.img -o loop /mnt
    bash> cp -rf $ZYNQ_QT_INSTALL/* /mnt
    bash> chmod go-w qt_lib.img
    bash> umount /mnt

    9. 当前Qt
    IDE: Qt Creator 3.0.1
    Compiler:gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
    Lib: Qt 5.2.1;Qt4.7.3;
    Lib-Qt-ZYNQ交叉编译:4.7.3
    默认的qmake
    root:QMake version 3.0;Using Qt version 5.2.1 in /usr/lib/x86_64-linux-gnu
    zq:QMake version 2.01a;Using Qt version 4.7.3 in /home/zq/Program/Qt473-ZYNQ/install/lib

    小结
    至此呢,vivado+zedboard+Linux的环境是全部搭建起来了。在这个过程中有些是不必要的,核心的就是arm-xilinx-linux交叉编译环境、Qt-ZYNQ库,后者如果不做图形界面的话也用不着。我这里为了方便初学者,尽可能的把自己认为可以简化后续操作的工具列出来了。