前 言
為助力開發(fā)者高效開展創(chuàng)龍科技研發(fā)評(píng)估板的 Qt 應(yīng)用開發(fā),本文聚焦 Qt 工程編譯與 GPU 核心應(yīng)用,詳解兩種編譯方式的配置與操作步驟,說(shuō)明 Qt 程序在評(píng)估板的運(yùn)行與自啟動(dòng)方法,同時(shí)通過(guò)案例演示 GPU 圖形渲染功能,幫助開發(fā)者快速掌握相關(guān)技術(shù)要點(diǎn),為評(píng)估板 Qt 應(yīng)用開發(fā)與性能優(yōu)化奠定基礎(chǔ)。
本文檔主要說(shuō)明如何將已有Qt工程進(jìn)行編譯,生成可在評(píng)估板上正常運(yùn)行的ARM端Qt程序鏡像。
Qt開發(fā)環(huán)境主要包括Qt Creator工具、X86端Qt環(huán)境、ARM端Qt環(huán)境、交叉編譯工具鏈等。當(dāng)用戶使用Qt Creator工具和X86端Qt環(huán)境編寫并編譯Qt工程后,生成的Qt程序鏡像僅可在X86端運(yùn)行。必須使用適配評(píng)估板的ARM端Qt環(huán)境、交叉編譯工具鏈編譯Qt工程,生成的Qt程序鏡像方可在ARM端(即評(píng)估板)上正常運(yùn)行。
LinuxSDK開發(fā)包中已提供適配評(píng)估板的ARM端Qt環(huán)境(Qt-5.15.8),請(qǐng)先參考Debian系統(tǒng)使用手冊(cè)安裝、編譯LinuxSDK,構(gòu)建適配評(píng)估板的交叉編譯工具鏈和qmake工具??苫诿钚谢騋t Creator工具對(duì)已有Qt工程進(jìn)行編譯,生成ARM端Qt程序鏡像。
創(chuàng)龍科技提供的Qt工程位于產(chǎn)品資料“4-軟件資料Demoqt-demos”目錄下,其中src目錄下包含Qt工程源碼,bin目錄下包含ARM端Qt程序鏡像。請(qǐng)將整個(gè)qt-demos文件夾拷貝至Ubuntu工作目錄下,如下圖所示。
圖 1
本文檔以image_display工程為例進(jìn)行演示,此工程的功能是通過(guò)顯示屏在Qt界面上顯示圖片內(nèi)容,并可實(shí)現(xiàn)豎屏顯示功能。
基于命令行編譯Qt工程
進(jìn)入image_display工程源碼目錄,配置交叉編譯工具鏈環(huán)境變量,執(zhí)行qmake命令生成Makefile文件,再執(zhí)行make命令編譯生成可在評(píng)估板上正常運(yùn)行的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工程
請(qǐng)先自行下載、安裝Qt Creator工具至Ubuntu,執(zhí)行如下命令啟動(dòng)Qt Creator(本次操作使用Qt Creator版本為4.11.0)。
Host# source /home/tronlong/RK3588/rk3588_linux_release_v1.2.1/debian/sysroots/environment
Host# qtcreator
圖 4
啟動(dòng)Qt Creator工具后,點(diǎn)擊菜單欄"Tools->Options…"。
圖 5
圖 6
配置交叉編譯工具鏈
點(diǎn)擊"Compilers->Add->GCC->C++ ->Browse…",選擇平臺(tái)交叉編譯工具鏈中的aarch64-linux-gnu-g++,然后點(diǎn)擊Open確認(rèn)。具體路徑為:
/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",再點(diǎn)擊Apply,如下圖所示。
圖 9
配置Qt Versions
點(diǎn)擊"Qt Versions->Add",選擇平臺(tái)qmake,然后點(diǎn)擊Open確認(rèn)。具體路徑為:
/home/tronlong/RK3588/rk3588_linux_release_v1.2.1/debian/sysroots/x86_64-linux/bin/qmake
圖 10
選擇后,Version name修改為"RK3588-qt5"再點(diǎn)擊Apply,如下圖所示。
圖 11
配置Kits
請(qǐng)參照下圖配置Kits各選項(xiàng)。點(diǎn)擊"Kits ->Add",將Name修改為RK3588",Device type選擇"Generic Linux Device",Compiler的C++選擇"RK3588-GCC",Debugger選擇"None",Qtversion選擇"RK3588-qt5",點(diǎn)擊Apply,然后點(diǎn)擊OK完成配置。
圖 12
編譯Qt工程
點(diǎn)擊"Projects ->Open"。
圖 13
選中Qt工程源碼目錄中.pro文件,點(diǎn)擊Open。
圖 14
勾選RK3588平臺(tái)Kits,點(diǎn)擊"Configure Project"進(jìn)行工程配置,如下圖所示。
圖 15
右擊Qt工程,點(diǎn)擊Build進(jìn)行Qt工程編譯。
圖 16
圖 17
編譯完成后,將生成可在評(píng)估板上運(yùn)行的ARM端Qt程序鏡像,如下圖所示。
圖 18
在評(píng)估板上運(yùn)行Qt程序
評(píng)估板默認(rèn)支持HDMI顯示,請(qǐng)通過(guò)HDMI線將HDMI顯示屏與評(píng)估板HDMI OUT接口連接。如需全屏顯示,請(qǐng)將鼠標(biāo)與評(píng)估板USB2.0 HOST雙層任一接口連接,點(diǎn)擊窗口欄放大即可。
評(píng)估板上電啟動(dòng),進(jìn)入評(píng)估板文件系統(tǒng),將ARM端Qt程序鏡像拷貝至評(píng)估板文件系統(tǒng)任意目錄下,同時(shí)將image_display工程bin目錄下文件名為test.jpg的JPG格式圖片拷貝至相同路徑。請(qǐng)?jiān)赒t程序鏡像所在路徑下執(zhí)行如下命令。
(1)查看程序運(yùn)行參數(shù)。
Target# ./image_display
參數(shù)解釋
imagepath:圖片路徑。
rotation:該參數(shù)為1,則豎屏顯示。
圖 19
(2)橫屏顯示圖片。
執(zhí)行如下命令,顯示屏將顯示如下圖像,按"Ctrl + C"退出程序。
Target# ./image_display ./test.jpg
圖 20
圖 21
(3)豎屏顯示圖片。
執(zhí)行如下命令,顯示屏將顯示如下圖像,按"Ctrl + C"退出程序。
Target# ./image_display test.jpg 1
圖 22
圖 23
Qt程序自啟動(dòng)說(shuō)明
本章節(jié)以led_control案例為例,演示Qt程序自啟動(dòng)功能。led_control案例功能是通過(guò)顯示屏在Qt界面上顯示LED控制按鈕,用于控制LED亮滅。
將案例bin目錄下可執(zhí)行程序拷貝至評(píng)估板文件系統(tǒng)"/root/"目錄下。進(jìn)入評(píng)估板文件系統(tǒng)執(zhí)行如下命令,在"/etc/default/"目錄下新建qtapp文件,并添加如下內(nèi)容設(shè)置Qt程序運(yùn)行依賴環(huán)境變量。
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
執(zhí)行如下命令,在"/etc/systemd/system/"目錄下新建qtapp.service文件,并添加如下內(nèi)容設(shè)置Qt程序自啟動(dòng)服務(wù)依賴關(guān)系以及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
執(zhí)行如下命令使能qtapp.service,然后執(zhí)行reboot命令重啟系統(tǒng),即可從HDMI顯示屏看到Qt程序自啟動(dòng)成功。
Target# systemctl enable qtapp
Target# reboot
圖 28
圖 29
如需禁止Qt程序自啟動(dòng),請(qǐng)執(zhí)行如下命令。
Target# systemctl disable qtapp
圖 30
GPU核心使用演示案例
本章節(jié)通過(guò)textures案例,演示基于Qt + OpenGL調(diào)用GPU核心進(jìn)行圖形渲染。
案例說(shuō)明
本案例使用Qt提供的OpenGL模塊,該模塊是對(duì)OpenGL原生API進(jìn)一步的封裝并支持GUI編程,使得在Qt應(yīng)用程序中使用OpenGL變的更加容易。
Qt程序在調(diào)用OpenGL模塊的API時(shí),會(huì)調(diào)用官方提供的OpenGL庫(kù),該庫(kù)通過(guò)底層驅(qū)動(dòng)調(diào)用GPU資源來(lái)進(jìn)行圖像的渲染。
圖 31
案例測(cè)試
評(píng)估板默認(rèn)支持HDMI顯示,請(qǐng)將HDMI顯示器與評(píng)估板HDMIOUT接口連接,同時(shí)將鼠標(biāo)與評(píng)估板USB2.0 HOST雙層任一接口連接。
評(píng)估板上電啟動(dòng),將textures案例的ARM端Qt程序鏡像拷貝至評(píng)估板文件系統(tǒng)。并執(zhí)行如下命令運(yùn)行Qt程序。
Target# ./textures
圖 32
Qt程序運(yùn)行后,顯示界面如下,使用鼠標(biāo)點(diǎn)擊任意一個(gè)骰子,被選中的骰子將自動(dòng)進(jìn)行旋轉(zhuǎn)。
圖 33
關(guān)鍵代碼
(1)初始化主窗口,創(chuàng)建6個(gè)Qopenglwidget,并開啟定時(shí)器。
圖 34?window.cpp
(2)初始化OpenGL資源。
圖 35?glwidget.cpp
(3)處理QMouseEvent事件。
圖 36?glwidget.cpp
(4)使用OpenGL進(jìn)行繪制。
圖 37?glwidget.cpp
(5)OpenGL部件大小調(diào)整時(shí),觸發(fā)resizeGL事件。
圖 38?glwidget.cpp
審核編輯 黃宇
-
開發(fā)板
+關(guān)注
關(guān)注
26文章
6398瀏覽量
120498 -
瑞芯微
+關(guān)注
關(guān)注
27文章
838瀏覽量
54644 -
RK3588
+關(guān)注
關(guān)注
8文章
585瀏覽量
7535
發(fā)布評(píng)論請(qǐng)先 登錄
瑞芯微 RK3588 平臺(tái) Debian 系統(tǒng)開發(fā)案例與使用說(shuō)明
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—ROS2系統(tǒng)使用說(shuō)明
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—視頻開發(fā)案例(上)
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—視頻圖像處理框架
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—IgH?EtherCAT主站開發(fā)案例(下)
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—IgH?EtherCAT主站開發(fā)案例(上)
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—物聯(lián)網(wǎng)模塊開發(fā)案例
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—調(diào)試工具安裝
迅為RK3588開發(fā)板Linux安卓麒麟瑞芯微國(guó)產(chǎn)工業(yè)AI人工智能
全國(guó)產(chǎn)!瑞芯微 RK3576 ARM 八核 2.2GHz 工業(yè)開發(fā)板—Linux應(yīng)用開發(fā)手冊(cè)
全國(guó)產(chǎn)!瑞芯微 RK3576 ARM 八核 2.2GHz 工業(yè)開發(fā)板—Linux開發(fā)環(huán)境搭建
全國(guó)產(chǎn)!瑞芯微 RK3576 ARM 八核 2.2GHz 工業(yè)開發(fā)板—LVGL應(yīng)用開發(fā)案例
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—Qt工程編譯、GPU核心使用說(shuō)明
評(píng)論