前 言
為助力開發者高效開展創龍科技研發評估板的 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文章
6372瀏覽量
120064 -
瑞芯微
+關注
關注
27文章
821瀏覽量
54617 -
RK3588
+關注
關注
8文章
582瀏覽量
7501
發布評論請先 登錄
創龍 瑞芯微 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核心使用說明
評論