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/image1196.png
  1. 添加运行权限

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

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

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

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

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

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

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

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

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

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

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

../_images/image1197.png

QT库交叉编译#

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

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

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

tar -zxvf alinx_qt_5.7.1.tar.gz

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

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

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

./build.sh

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

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

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

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

./make_img.sh

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

../_images/image2168.png

配置ZYNQ版QT Kits#

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

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

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

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

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

../_images/image2626.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/image2920.png
  1. 再点击“Apply”,更新信息

../_images/image3018.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/image3149.png
  1. 点击OK配置Kits完成

创建QT测试工程#

  1. 点击File -> New File or Project

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

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

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

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

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

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

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

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

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

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

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

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

../_images/image4414.png

常见问题#

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

  1. 配置编译器

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

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

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

../_images/image4812.png

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

可以忽略这个错误信息

../_images/image4911.png