QT在ZYNQ上的应用#

Qt是跨平台C++图形用户界面应用程序开发框架,可以简单的将它理解为用于图形开发的库。如果我们使用Qt库为板卡开发带界面的应用程序,则需要交叉编译Qt库。OpenCV是视频处理中有名的库,很多应用程序需要使用OpenCV库,以往QT和OpenCV库都需要自己下载代码编译,非常麻烦。本章讲解如何使用Petalinux配置OpenCV和QT的开发环境,再次体现出Petalinux开发环境的优势,只需简单的配置就可以解决很复杂的问题。

QT Creator安装#

我们在Ubuntu中安装QT Creator,安装文件名称为“qt-opensource-linux-x64-5.7.1.run”,从文件名我们可以看出QT版本为5.7.1,这些版本也是我们精心挑选,适合当前环境的版本。

  1. 将安装文件复制到Ubuntu主机中

../_images/image1177.png
  1. 添加运行权限

sudo chmod +x qt-opensource-linux-x64-5.7.1.run

../_images/image2154.png
  1. 运行安装软件

sudo ./qt-opensource-linux-x64-5.7.1.run

../_images/image3131.png
  1. 点击Next开始安装

../_images/image490.png
  1. 点击“Skip”跳过账号信息填写

../_images/image576.png
  1. 点击“Next”继续安装

../_images/image669.png
  1. 安装路径保持默认,点击“Next”继续安装

../_images/image764.png
  1. 保持默认安装选项,点击“Next”继续安装

../_images/image863.png
  1. 选择同意License许可

../_images/image953.png
  1. 点击“Install”安装

../_images/image1046.png
  1. 点击“Finish”完成安装

../_images/image1178.png

QT库交叉编译#

前面安装的QT可以创建在x86处理器上运行的应用程序,不能建立ZYNQ能运行的程序,我们需要交叉编译QT的源代码才能在zynq上运行。为了简化编译流程,芯驿电子准备好了QT 5.7.1的源代码包,并制作了一些编译脚本。

  1. 将压缩包复制到Ubuntu主机中

../_images/image1246.png
  1. 将压缩包解压

tar -zxvf alinx_qt_5.7.1.tar.gz

../_images/image1343.png
  1. 解压后的文件夹,“fonts”是QT应用程序显示需要用到的字体文件,“qt-everywhere-opensource-src-5.7.1”是QT源代码文件夹,“build.sh”是编译脚本,“make_img.sh”是把编译的库打包成img镜像文件。

../_images/image1441.png
  1. “build.sh”脚本中指定了XSDK的安装目录,主要使用XSDK自带的交叉编译器,如果你的SDK安装目录和脚本里不同,请修改XSDK路径,同时指定ZYNQ版本QT库的安装路径为“/opt/alinx/zynq_qt5.7.1”,编译完成以后可以在这个路径里找到交叉编译过的QT库,不建议修改此路径。

../_images/image1540.png
  1. 运行编译脚本

./build.sh

../_images/image1636.png
  1. 等待一段时间,编译快完成时需要输入Ubuntu账户密码

../_images/image1735.png
  1. 输入密码后,编译安装完成

../_images/image1834.png
  1. 到目录“/opt/alinx/zynq_qt5.7.1”下我们可以找到bin目录,里面有我们要用到的qmake文件,和lib目录,这个目录就是我们需要的QT库。

../_images/image1935.png
  1. 运行脚本制作QT库的img文件,需要输入账号密码

./make_img.sh

../_images/image2033.png
  1. 得到qt_lib.img可以在zynq板上挂载

../_images/image2155.png

配置ZYNQ版QT Kits#

  1. 运行QT Creator,找不到应用程序快捷方式,可以搜索一下。

../_images/image2234.png
  1. 点击Tools -> Options

../_images/image2331.png
  1. 在Build & Run选项的Qt Versions页点击Add..

../_images/image2427.png
  1. 选择前面编译生成的qmake文件

../_images/image2526.png
  1. 添加qmake以后,保持默认name,不修改

../_images/image2623.png
  1. 在Compilers页面,点击Add..,选择GCC -> C

../_images/image2723.png
  1. Name修改为ZYNQ_GCC,Compiler path选择/tools/Xilinx/Vitis/2023.1/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-gcc

../_images/image2820.png
  1. 在Compilers页面,点击Add..,选择GCC -> C++,Name修改为ZYNQ_C++,路径选择/tools/Xilinx/Vitis/2023.1/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-g++

../_images/image2919.png
  1. 再点击“Apply”,更新信息

../_images/image3016.png

在Kits页,点击Add添加一个新的Kit,Name修改为ZYNQ,Compiler C:选择ZYNQ_GCC,Compiler C++选择ZYNQ_C++,Qt version选择Qt 5.7.1(zynq_qt5.7.1)

../_images/image3132.png
  1. 点击OK配置Kits完成

创建QT测试工程#

  1. 点击File -> New File or Project

../_images/image3220.png
  1. 工程模板选择“Application”“Qt Widgets Application”,然后点击“Choose…”

../_images/image3319.png
  1. Name修改为qt_test,路径本实验选择/home/alinx/work

../_images/image3418.png
  1. kit选择,这里选择ZYNQ版本

../_images/image3517.png
  1. 选择Next继续

../_images/image3615.png
  1. 选择Finish结束工程创建向导

../_images/image3715.png
  1. 双击mainwindow.ui文件

../_images/image3815.png
  1. 拖拽一个Push Button到主界面中

../_images/image3914.png
  1. 双击文字部分,可以修改按钮文字

../_images/image4010.png
  1. 在Projects选择,选择“Desktop Qt 5.7.1 GCC 64bit”,然后点击绿色三角运行Host版本

../_images/image4115.png
  1. 运行效果

../_images/image4216.png
  1. 选择ZYNQ Kit,点击锤子图标,只编译程序,不运行

../_images/image4314.png
  1. 在build-qt_test-ZYNQ-Debug目录可以看到生成了一个qt_test的文件,这个文件要在ZYNQ上运行。

../_images/image4412.png

常见问题#

如何使用开发板Debian系统自带的QT Creator#

  1. 配置编译器

../_images/image4512.png
  1. 查看qmake路径是否正确

../_images/image4611.png
  1. 查看Kits设置是否和下图一致

../_images/image4710.png
  1. 配置完成后就可以建立一个工程测试一下

../_images/image4810.png

系统运行打印I2C错误信息#

可以忽略这个错误信息

../_images/image495.png