前 言
为助力开发者高效开展创龙科技研发评估板的 Qt 应用开发,本文聚焦 Qt 工程编译与 GPU 核心应用,详解两种编译方式的配置与操作步骤,说明 Qt 程序在评估板的运行与自启动方法,同时通过案例演示 GPU 图形渲染功能,帮助开发者快速掌握相关技术要点,为评估板 Qt 应用开发与性能优化奠定基础。
本文档主要说明如何将已有Qt工程进行编译,生成可在评估板上正常运行的ARM端Qt程序镜像。
Qt开发环境主要包括Qt Creator工具、X86端Qt环境、ARM端Qt环境、交叉编译工具链等。当用户使用Qt Creator工具和X86端Qt环境编写并编译Qt工程后,生成的Qt程序镜像仅可在X86端运行。必须使用适配评估板的ARM端Qt环境、交叉编译工具链编译Qt工程,生成的Qt程序镜像方可在ARM端(即评估板)上正常运行。
LinuxSDK开发包中已提供适配评估板的ARM端Qt环境(Qt-5.15.8),请先参考Debian系统使用手册安装、编译LinuxSDK,构建适配评估板的交叉编译工具链和qmake工具。可基于命令行或Qt Creator工具对已有Qt工程进行编译,生成ARM端Qt程序镜像。
创龙科技提供的Qt工程位于产品资料“4-软件资料Demoqt-demos”目录下,其中src目录下包含Qt工程源码,bin目录下包含ARM端Qt程序镜像。请将整个qt-demos文件夹拷贝至Ubuntu工作目录下,如下图所示。
图 1
本文档以image_display工程为例进行演示,此工程的功能是通过显示屏在Qt界面上显示图片内容,并可实现竖屏显示功能。
基于命令行编译Qt工程
进入image_display工程源码目录,配置交叉编译工具链环境变量,执行qmake命令生成Makefile文件,再执行make命令编译生成可在评估板上正常运行的ARM端Qt程序镜像,如下图所示。
Host# cdqt-demos/image_display/src/
Host# source /home/tronlong/RK3588/rk3588_linux_release_v1.2.1/debian/sysroots/environment
Host# /home/tronlong/RK3588/rk3588_linux_release_v1.2.1/debian/sysroots/x86_64-linux/bin/qmake
Host# make
图 2
图 3
基于QtCreator工具编译Qt工程
请先自行下载、安装Qt Creator工具至Ubuntu,执行如下命令启动Qt Creator(本次操作使用Qt Creator版本为4.11.0)。
Host# source /home/tronlong/RK3588/rk3588_linux_release_v1.2.1/debian/sysroots/environment
Host# qtcreator
图 4
启动Qt Creator工具后,点击菜单栏"Tools->Options…"。
图 5
图 6
配置交叉编译工具链
点击"Compilers->Add->GCC->C++ ->Browse…",选择平台交叉编译工具链中的aarch64-linux-gnu-g++,然后点击Open确认。具体路径为:
/home/tronlong/RK3588/rk3588_linux_release_v1.2.1/extra-tools/gcc-linaro-10.2.1-2021.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g+
图 7
图 8
选择后,Name修改为"RK3588-GCC",ABI选择"arm-linux-generic-elf-64bit",再点击Apply,如下图所示。
图 9
配置Qt Versions
点击"Qt Versions->Add",选择平台qmake,然后点击Open确认。具体路径为:
/home/tronlong/RK3588/rk3588_linux_release_v1.2.1/debian/sysroots/x86_64-linux/bin/qmake
图 10
选择后,Version name修改为"RK3588-qt5"再点击Apply,如下图所示。
图 11
配置Kits
请参照下图配置Kits各选项。点击"Kits ->Add",将Name修改为RK3588",Device type选择"Generic Linux Device",Compiler的C++选择"RK3588-GCC",Debugger选择"None",Qtversion选择"RK3588-qt5",点击Apply,然后点击OK完成配置。
图 12
编译Qt工程
点击"Projects ->Open"。
图 13
选中Qt工程源码目录中.pro文件,点击Open。
图 14
勾选RK3588平台Kits,点击"Configure Project"进行工程配置,如下图所示。
图 15
右击Qt工程,点击Build进行Qt工程编译。
图 16
图 17
编译完成后,将生成可在评估板上运行的ARM端Qt程序镜像,如下图所示。
图 18
在评估板上运行Qt程序
评估板默认支持HDMI显示,请通过HDMI线将HDMI显示屏与评估板HDMI OUT接口连接。如需全屏显示,请将鼠标与评估板USB2.0 HOST双层任一接口连接,点击窗口栏放大即可。
评估板上电启动,进入评估板文件系统,将ARM端Qt程序镜像拷贝至评估板文件系统任意目录下,同时将image_display工程bin目录下文件名为test.jpg的JPG格式图片拷贝至相同路径。请在Qt程序镜像所在路径下执行如下命令。
(1)查看程序运行参数。
Target# ./image_display
参数解释
imagepath:图片路径。
rotation:该参数为1,则竖屏显示。
图 19
(2)横屏显示图片。
执行如下命令,显示屏将显示如下图像,按"Ctrl + C"退出程序。
Target# ./image_display ./test.jpg
图 20
图 21
(3)竖屏显示图片。
执行如下命令,显示屏将显示如下图像,按"Ctrl + C"退出程序。
Target# ./image_display test.jpg 1
图 22
图 23
Qt程序自启动说明
本章节以led_control案例为例,演示Qt程序自启动功能。led_control案例功能是通过显示屏在Qt界面上显示LED控制按钮,用于控制LED亮灭。
将案例bin目录下可执行程序拷贝至评估板文件系统"/root/"目录下。进入评估板文件系统执行如下命令,在"/etc/default/"目录下新建qtapp文件,并添加如下内容设置Qt程序运行依赖环境变量。
Target# vi /etc/default/qtapp
图 24
图 25
UNTIME_DIR=/run/user/0
DISPLAY=":0"
QT_ROOT=/usr/lib/qt-5.15.8
QT_QPA_FONTDIR=/usr/share/fonts
QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt-5.15.8/plugins
QT_PLUGIN_PATH=/usr/lib/qt-5.15.8/plugins
LD_LIBRARY_PATH=/usr/lib/qt-5.15.8/lib:/usr/lib/qt-5.15.8/plugins/platform
执行如下命令,在"/etc/systemd/system/"目录下新建qtapp.service文件,并添加如下内容设置Qt程序自启动服务依赖关系以及Qt程序的路径。
Target# vi/etc/systemd/system/qtapp.service
图 26
图 27
[Unit]
Description=Qt App Service
Requisite=display-manager.service
After=display-manager.service
[Service]
EnvironmentFile=-/etc/default/qtapp
ExecStart=/root/led_control -n 2
Restart=always
[Install]
WantedBy=multi-user.target
执行如下命令使能qtapp.service,然后执行reboot命令重启系统,即可从HDMI显示屏看到Qt程序自启动成功。
Target# systemctl enable qtapp
Target# reboot
图 28
图 29
如需禁止Qt程序自启动,请执行如下命令。
Target# systemctl disable qtapp
图 30
GPU核心使用演示案例
本章节通过textures案例,演示基于Qt + OpenGL调用GPU核心进行图形渲染。
案例说明
本案例使用Qt提供的OpenGL模块,该模块是对OpenGL原生API进一步的封装并支持GUI编程,使得在Qt应用程序中使用OpenGL变的更加容易。
Qt程序在调用OpenGL模块的API时,会调用官方提供的OpenGL库,该库通过底层驱动调用GPU资源来进行图像的渲染。
图 31
案例测试
评估板默认支持HDMI显示,请将HDMI显示器与评估板HDMIOUT接口连接,同时将鼠标与评估板USB2.0 HOST双层任一接口连接。
评估板上电启动,将textures案例的ARM端Qt程序镜像拷贝至评估板文件系统。并执行如下命令运行Qt程序。
Target# ./textures
图 32
Qt程序运行后,显示界面如下,使用鼠标点击任意一个骰子,被选中的骰子将自动进行旋转。
图 33
关键代码
(1)初始化主窗口,创建6个Qopenglwidget,并开启定时器。
图 34 window.cpp
(2)初始化OpenGL资源。
图 35 glwidget.cpp
(3)处理QMouseEvent事件。
图 36 glwidget.cpp
(4)使用OpenGL进行绘制。
图 37 glwidget.cpp
(5)OpenGL部件大小调整时,触发resizeGL事件。
图 38 glwidget.cpp
审核编辑 黄宇
-
开发板
+关注
关注
26文章
6527浏览量
121420 -
瑞芯微
+关注
关注
27文章
909浏览量
54754 -
RK3588
+关注
关注
8文章
606浏览量
7763
发布评论请先 登录
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—ROS2系统使用说明
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—视频图像处理框架
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—IgH EtherCAT主站开发案例(下)
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—IgH EtherCAT主站开发案例(上)
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—物联网模块开发案例
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—Qt工程编译、GPU核心使用说明
评论