在Zynq平台上运行QT其实与PC无异,都需要相应的执行环境,只不过PC上的QT Lib可以使用QT SDK自动安装配置,而Zynq平台上的QT Lib则需要手动安装。另外,我们自己编写的代码只需要使用Xilinx交叉编译器进行一次编译就能在ZedBoard上执行,而QT代码则需要先由QMake进行配置,之后再用交叉编译器编译。因此,想让QT开发的应用程序在ZedBoard上运行,首先就要编译一个适合Zynq平台的QT库。其实操作方法已经在Xilinx Wiki中介绍了,但跟着Xilinx的介绍走一通可能都不知道自己在干什么(兔子一开始就是这样)。这里我就给大家一步骤讲解一下。原始资料请见Wiki:已经提供了一个QT Lib源码包和相关的配置文件,不过是4.7版的:兔子使用的4.8.3版本可以在QT官网上下载:一、安装QT Lib之前我们已经配置好了交叉编译环境使用的环境变量PATH和CROSS_COMPILE,而为了简便操作,还可以再设置几个环境变量。export ZYNQ_QT_BUILD=/path/to/qt/buildexport ZYNQ_QT_INSTALL=/path/to/qt/installexport PATH=$ZYNQ_QT_INSTALL/bin:$PATHZYNQ_QT_BUILD指向QT源码解压后的目录,ZYNQ_QT_INSTALL则指向QT Lib的安装目录,以后要编译QT工程,都需要用到安装目录中的程序,因此在PATH中添加了一条指向QMake等程序所在的路径。按需要替换等号后面的路径,比如兔子的安装路径是/arm/qt/qt-lib/。之后将qt-everywhere-opensource-src-4.8.3.tar.gz解压到ZYNQ_QT_BUILD指向的目录中,把qt_build_src.tar里的qmake.conf配置文件复制到qt-everywhere-opensource-src-4.8.3/mkspecs/qws/linux-arm-gnueabi-g++目录下,这个文件用来告知QMake应该用哪个编译器来编译QT工程。然后对QT进行配置:./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 虽然QT Lib是在本地进行交叉编译的,这些配置选项则根据目标平台而定,其中-embedded arm一项表示目标设备为ARM核心设备,-prefix $ZYNQ_QT_INSTALL则将QT Lib安装到指定的目录里。兔子在看到这个选项后当即想到能不能在Xilinx其他系列的FPGA上移植QT。很不幸的是,目前QT似乎并不支持MicroBlaze或NIOS II这样的软核,虽然也有资料显示可以实现,但应该需要不小的工作量。还有待进一步研究啊。配置完成后进行编译:make编译好了就可以进行安装(安装需要在root权限下进行):make install之后将Xilinx交叉编译器中的基础C++库复制到QT的安装目录下:cp -P /path/to/cross/compiler/arm-xilinx-linux-gnueabi/libc/usr/lib/libstdc++.so* $ZYNQ_QT_INSTALL/lib这样就位Zynq平台手动安装了一个QT Lib。二、为ZedBoard制作预编译QT库镜像安装好QT Lib后,已经可以直接编译QT工程了,但是想要在ZedBoard上运行还需要将所需的库文件拷贝到ZedBoard上,那么为什么要把它做成镜像文件呢?兔子的理由是这样的:以Digilent出厂默认的Demo系统为例,该系统的rootfs是通过在内存中虚拟出一个8M-Byte大小的空间并加载固定的镜像文件来实现的,这个rootfs十分小巧,但缺点是空间不足。数十兆的QT支持库无法装入这个小镜像里,即使可以也会占用大量内存。因此只要将其做成镜像的形式,就可以保存在SD卡中,通过mount指令装载,节省了内存资源。Xilinx已经提供了制作镜像的方法(安装需要在root权限下进行):cd $ZYNQ_QT_BUILDdd if=/dev/zero of=qt_lib.img bs=1M count=80mkfs.ext2 -F qt_lib.imgchmod go+w qt_lib.imgmount qt_lib.img -o loop /mntcp -rf $ZYNQ_QT_INSTALL/* /mntchmod go-w qt_lib.imgumount /mnt这个qt_lib.img就是我们需要的QT运行库了。三、编译QT工程在上一篇博客中,我们已经建立好了一个QT工程,名为HelloQT。在交叉编译之前,建议复制一份工程文件夹,以防交叉编译后,QT Creator无法再运行该工程。这里我们将复制得到的文件夹命名为zed_complie,保证ZYNQ_QT_INSTALL和PATH变量已经配置正确(可以按之前讲的方法把两个export命令加入到开机自动运行中),在这个文件夹下,依次执行下列指令:qmake –projectqmakemake完成后会生成一个与文件夹同名的可执行文件,在这里就叫zed_complie。和拷贝到SD卡中,在ZedBoard里装载qt_lib.img。要注意的是,这个镜像最好装载到与本地安装目录相同的路径下,即ZYNQ_QT_INSTALL指向的目录,兔子就把这个镜像装载到/arm/qt/qt-lib/文件夹下(mmcblk0p2是SD卡的分区)。mount /dev/mmcblk0p2 /mnt/mount /mnt/qt_lib.img /arm/qt/qt-lib/这样一来,就可以运行QT程序了。-qws指令用来建立一个运行QT软件必须的QWS Server,这是由QT的运行机制决定的,软件会从/arm/qt/qt-lib/文件夹里调用QT运行库。/sdcard/zed_compile –qws再根据兔子之前讲的修改rootfs镜像的方法,便能够实现ZedBoard上电自动加载QT库并运行我们自己开发的应用软件。深入思考:1.能否通过修改环境变量来改变调用QT运行库的位置?2.如何为Linaro系统编译QT库,并在Linaro系统下运行QT软件?这两个问题就留给大家思考吧,希望研究出结果的朋友不吝分享啊。最后发一个ZedBoard上的运行效果图:
ZedBoard学习手记(九) 在ZedBoard上运行QT图形软件
- Xilinx(119164)
- Zynq(46445)
- Zedboard(49064)
相关推荐
玩转赛灵思Zedboard开发板(3):基于Zynq PL的流水灯
电子发烧友网核心提示:本文为玩转赛灵思Zedboard开发板(3):基于Zynq PL的流水灯,内容精彩,敬请对电子发烧友网保持密切关注。基于Zynq PL的流水灯是使用PL做流水灯实验,目的是为
2012-12-05 14:25:41
12770

玩转赛灵思Zedboard开发板(1):ZedBoard详解
电子发烧友网核心提示 :本文介绍了最新的Xilinx Zynq-7000 FPGA开发板 Zedboard 。Zedboard是基于Xilinx Zynq-7000扩展式处理平台(EPP)的低成本开发板,也是行业首个面向开源社区的Zynq-7000扩展
2012-11-26 15:09:01
55135

玩转赛灵思Zedboard开发板(6):如何在Zedboard上运行linux下的应用程序?
电子发烧友网编辑现为读者整合《玩转赛灵思Zedboard开发板》系列文章, 其中包括在ZedBoard开发板上的一些应用实例。本文主要讲述Zedboard上的嵌入式linux应用,包括使用SDK设计最简单的linux应用程序、linux交叉编译环境搭建、设备驱动编写等内容...
2013-01-24 13:38:18
16892

ZedBoard Vivado许可证无效
我购买了Zedboard,我在许可方面遇到了麻烦。使用我在电路板上收到的凭证我生成了许可证,该许可证通过电子邮件发送给我,我使用管理Xilinx许可证软件添加了许可证。我还在磁盘,ISE
2019-03-12 13:49:36
Zedboard USB UART端口问题
Helo人,我一直在使用Zedboard进行一些项目。我的USB_UART适配器与电路板断开连接,无法再次连接。我联系了Xilinx和Digilent,但根据它们无法修复。现在有一个解决方案是买一个
2020-04-02 07:00:45
Zedboard在Linux上运行helloworld
在Zedboard上实现了Linux,接下来我们就可以像其他的嵌入式linux开发一样来使用Zedboard了。SDK提供了标准可视化的linux-arm交叉编译链,不需要再进行交叉编译环境的搭建
2018-06-28 11:10:51
Zedboard与uboot
的各项操作后,启动SDK开始创建一个zynq FSBL,见下面图 生成*.elf文件后,导入所需文件开始生成bin文件下图是所需的文件创建完成后,生成一个boot.bin文件拷到sd卡,把SD卡放进Zedboard开发板,上电,发现uboot2018.1正常运行了
2018-06-06 10:33:53
zedboard为什么spdif核心无法立即实现?不支持bistream生成
Hiteam,我有一个zedboard和vivado 13.4许可证。一切都很好,我已经成功实现了一些设计我调查了adau1761 ADC并试图通过logico axi4lite spdif来提供它
2018-12-10 10:29:01
zedboard是否支持SDIO?
你好我已经在zedboard上成功开发了SD / MMC驱动程序,我的海量存储应用程序运行正常。 zedboard是否支持SDIO?我正在为AR6K3无线驱动程序工作。在开发SDIO驱动程序时,当我
2019-03-14 07:59:03
zedboard板载SD卡读取问题!
大家好我用的是zedboard开发板,现在我有一个60M的数据需要处理,全部为十进制整形,每个数据长度至少8位,目前尝试先放入SD卡,但读取出现了问题,我用的是xilinx SDK提供的库函数
2016-05-25 10:26:07
在PanGu Board上运行Qt应用实战
FD、16bit ADC等等。PanGu开发板的接口图示下面我们来体验下,如何在PanGu Board上运行Qt应用。PanGu Board默认安装的是Weston图形的Linux系统,运行Qt
2019-12-10 11:30:08
评论