创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—Qt工程编译、GPU核心使用说明

电子说

1.4w人已加入

描述

前  言

为助力开发者高效开展创龙科技研发评估板的 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工作目录下,如下图所示。

RK3588图 1

本文档以image_display工程为例进行演示,此工程的功能是通过显示屏在Qt界面上显示图片内容,并可实现竖屏显示功能。

基于命令行编译Qt工程

进入image_display工程源码目录,配置交叉编译工具链环境变量,执行qmake命令生成Makefile文件,再执行make命令编译生成可在评估板上正常运行的ARM端Qt程序镜像,如下图所示。

Host# cd qt-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

RK3588图 2

RK3588图 3

基于Qt Creator工具编译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

RK3588图 4

启动Qt Creator工具后,点击菜单栏"Tools -> Options…"。

RK3588图 5

RK3588图 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+

RK3588图 7

RK3588图 8

选择后,Name修改为"RK3588-GCC",ABI选择"arm-linux-generic-elf-64bit",再点击Apply,如下图所示。

RK3588图 9

配置Qt Versions

点击"Qt Versions -> Add",选择平台qmake,然后点击Open确认。具体路径为:

/home/tronlong/RK3588/rk3588_linux_release_v1.2.1/debian/sysroots/x86_64-linux/bin/qmake

RK3588图 10

选择后,Version name修改为"RK3588-qt5"再点击Apply,如下图所示。

RK3588图 11

配置Kits

请参照下图配置Kits各选项。点击"Kits -> Add",将Name修改为RK3588",Device type选择"Generic Linux Device",Compiler的C++选择"RK3588-GCC",Debugger选择"None",Qt version选择"RK3588-qt5",点击Apply,然后点击OK完成配置。

RK3588图 12

编译Qt工程

点击"Projects -> Open"。

RK3588图 13

选中Qt工程源码目录中.pro文件,点击Open。

RK3588图 14

勾选RK3588平台Kits,点击"Configure Project"进行工程配置,如下图所示。

RK3588图 15

右击Qt工程,点击Build进行Qt工程编译。

RK3588图 16

RK3588图 17

编译完成后,将生成可在评估板上运行的ARM端Qt程序镜像,如下图所示。

RK3588图 18

在评估板上运行Qt程序

评估板默认支持HDMI显示,请通过HDMI线将HDMI显示屏与评估板HDMI OUT接口连接。如需全屏显示,请将鼠标与评估板USB2.0 HOST双层任一接口连接,点击窗口栏放大即可。

评估板上电启动,进入评估板文件系统,将ARM端Qt程序镜像拷贝至评估板文件系统任意目录下,同时将image_display工程bin目录下文件名为test.jpg的JPG格式图片拷贝至相同路径。请在Qt程序镜像所在路径下执行如下命令。

(1)查看程序运行参数。

Target# ./image_display

参数解释

image path:图片路径。

rotation:该参数为1,则竖屏显示。

RK3588图 19

(2)横屏显示图片。

执行如下命令,显示屏将显示如下图像,按"Ctrl + C"退出程序。

Target# ./image_display ./test.jpg

RK3588图 20

RK3588图 21

(3)竖屏显示图片。

执行如下命令,显示屏将显示如下图像,按"Ctrl + C"退出程序。

Target# ./image_display test.jpg 1

RK3588图 22

RK3588图 23

Qt程序自启动说明

本章节以led_control案例为例,演示Qt程序自启动功能。led_control案例功能是通过显示屏在Qt界面上显示LED控制按钮,用于控制LED亮灭。

将案例bin目录下可执行程序拷贝至评估板文件系统"/root/"目录下。进入评估板文件系统执行如下命令,在"/etc/default/"目录下新建qtapp文件,并添加如下内容设置Qt程序运行依赖环境变量。

Target# vi /etc/default/qtapp

RK3588图 24

RK3588图 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

RK3588图 26

RK3588图 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

RK3588图 28

RK3588图 29

如需禁止Qt程序自启动,请执行如下命令。

Target# systemctl disable qtapp

RK3588图 30

GPU核心使用演示案例

本章节通过textures案例,演示基于Qt + OpenGL调用GPU核心进行图形渲染。

案例说明

本案例使用Qt提供的OpenGL模块,该模块是对OpenGL原生API进一步的封装并支持GUI编程,使得在Qt应用程序中使用OpenGL变的更加容易。

Qt程序在调用OpenGL模块的API时,会调用官方提供的OpenGL库,该库通过底层驱动调用GPU资源来进行图像的渲染。

RK3588图 31

案例测试

评估板默认支持HDMI显示,请将HDMI显示器与评估板HDMI OUT接口连接,同时将鼠标与评估板USB2.0 HOST双层任一接口连接。

评估板上电启动,将textures案例的ARM端Qt程序镜像拷贝至评估板文件系统。并执行如下命令运行Qt程序。

Target# ./textures

RK3588图 32

Qt程序运行后,显示界面如下,使用鼠标点击任意一个骰子,被选中的骰子将自动进行旋转。

RK3588图 33

关键代码

(1)初始化主窗口,创建6个Qopenglwidget,并开启定时器。

RK3588图 34 window.cpp

(2)初始化OpenGL资源。

RK3588图 35 glwidget.cpp

(3)处理QMouseEvent事件。

RK3588图 36 glwidget.cpp

(4)使用OpenGL进行绘制。

RK3588图 37 glwidget.cpp

(5)OpenGL部件大小调整时,触发resizeGL事件。

RK3588图 38 glwidget.cpp


审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分