前 言
為助力開發者高效開展創龍科技研發評估板的 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文章
6289瀏覽量
118048 -
瑞芯微
+關注
關注
27文章
792瀏覽量
54286 -
RK3588
+關注
關注
8文章
556瀏覽量
7320
發布評論請先 登錄
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—ROS2系統使用說明
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—視頻圖像處理框架
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—物聯網模塊開發案例
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—Qt工程編譯、GPU核心使用說明
評論