基于AMD SOC的QT应用程序开发

作者:Albert Wei,文章来源: FPGA FAE技术分享选集微信公众号

QT是一个跨平台的C++图形用户界面应用程序开发框架。它既可以开发GUI图形用户界面程序,也可用于开发非GUI程序,比如控制台工具和服务器。由于QT良好的跨平台特性,基本上不做修改就可以在Windows或Linux或嵌入式设备上实现同样的界面。Linux操作系统是嵌入式的主力军,广泛应用于消费类电子、工业控制、电信‍/‍网络‍/‍通讯、汽车电子、医疗设备、仪器仪表等相关行业,这也正好符合AMD FPGA的应用方向,本篇主要介绍如何在AMD的SOC器件上进行QT的开发调试。

基于AMD SOC的QT应用程序开发方法主要有两种方式:一种方式是基于petalinux工程新建一个application将源码导入在使用petalinux-build进行编译部署,另一种方式是PC端进行开发调试再使用AMD交叉编译工具进行编译生成SOC的二进制代码再放到petalinux工程进行打包或者直接下载到SOC端进行运行调试,本文主要介绍第二种方式,因为基于PC端进行界面开发或逻辑调试时可以用PC的桌面编译器先进行调试,然后再切换AMD编译器生成SOC的应用程序用于部署,这种方式对于开发调试更加友好。

一、安装QT开发环境

选择相应用的版本和操作系统进行下载安装文件进行安装:

二、Petalinux生成SDK包

由于获取AMD交叉编译工具链需要用Petalinux构建SDK,SDK也就是软件开发工具集,与Petalinux构建的根文件系统息息相关,里面不仅包含有Petalinux构建的根文件系统,各种库和头文件,还包含linux交叉编译工具链,比如QT Creator中需要的qmake和链接时所需要的QT基础库,所以我们需要先使用petalinux来编译一个SDK。

如果没有现成的petalinux工程,可以在官网下载一些开发板的bsp包来快速构建petalinux工程,然后使用petalinux-config -c rootfs进行配置,主要需要选择qt和sdk_qt,配置路径:

具体如下:

1、使用petalinux-build和petalinux-build –sdk编译获得SDK;

2、SDK位于工程目录images/linux下的sdk.sh,然后运行sdk.sh进行安装,安装目录位于/opt/petalinux/2023.1下,安装成功后我们就获得了交叉编译工具和库等。

三、QT Creator配置

打开QT Creator软件,在[工具]→[选项],在[Kits]中先配置[编译器],选择[添加],名称可以自定义,这里我们就叫[amd-xilinux-aarch64],路径:

1、C++选择和aarch64-xilinx-linux-g++:

2、Debuggers配置:

[Name]同样可以自定义,[Path]选择如下:

3、配置qmake:

右侧按钮选择[添加]然后选择路径,路径位于SDK的安装目录

4、最后配置Kits:

Device type:选择设备的类型,这里有四个选择项,分别为Desktop(PC机)、Android Device(安卓设备)、Generic Linux Device(通用Linux设备)和 QNX Device(QNX设备);对于AMD SOC来说,选择Generic Linux Device。

Sysroot:系统镜像的根目录,为SDK安装路径下的

Compiler C和C++:选择刚刚我们新建 的amd-xilinx-aarch64

Debugger选择刚刚新建 的amd-xilinx-gdb

Qt version选择 xilinx-QT 5.14.4

配置完成之后点击“Apply”应用,再点击OK,这样我们就完成了QT Creator的配置了。

5、测试工程验证:

我们可以新一个工程或打开一个[欢迎]页面的示例工程来验证一下编译器,比如我们打开下图中的[Analog Clock]的示例工程;

然后在[Build&Run]中添加[Desktop Qt 5.12.11 GCC 64bit]的桌面编译器和[AMD-Xilinx-aarch64]的交叉编译器,这样在开发调试的时候就可以使用[Desktop Qt 5.12.11 GCC 64bit]来调试界面布局和逻辑关系等,等调试完再使用[AMD-Xilinx-aarch64]编译器来编译可以在SOC上运行的程序。

在点击[AMD-Xilinx-aarch64]下面的[Build]后面[build-analogclock-AMD_Xilinx_aarch64-Debug]的目录找到[analogclock]的程序,可以下载到SOC上接上DP/HDMI等接口进行运行,如果SOC没有运行X11服务,需要手动配置一下环境变量export QT_QPA_PATFORM=linuxfb和export DISPLAY=:0.0,这样显示器上就会有一个时钟输出了。

6、集成Petalinux工程

在petalinux工程根目录使用petalinux-create命令创建一个app

替换project-spec/meta-user/recipes-apps/analogclock/files/中的程序后再运行petalinux-build就可以集成到petalinux工程中。

这样就可以完成一个基于QT的程序应用在SOC侧的开发和集成了,这里对于很多客户遇到的问题就是如何获取AMD的交叉编译器,那我们是通过在petalinux工程中去使用petalinux-build –sdk命令来生成所需要的编译器和根文件系统,这些方法同样适用于在Vitis中来新建 一个软件平台来进行软件模拟开发调试。

如果您在QT方面有问题,欢迎联系:
simonyang@comtech.cn
charlesxu@comtech.cn

最新文章

最新文章