1 Xilinx backend
Xilinx為MPSoC支持4種libMali的backend: X11, Wayland/GBM, Fbdev, Headless-EGL。
2 QT
QT支持4種plugin(插件)或者backend,F(xiàn)B,X11,Wayland,eglfs。對不同的plugin(插件)或者backend,QT應(yīng)用層是一樣的。
其中的FB,不能利用GPU做渲染。
EGLFS可以讓QT應(yīng)用直接運行在EGL和OpenGL ES 2.0上。也就是,可以在沒有窗口管理器(windowing system like X11 or Wayland)的情況下,運行QT軟件。對于有GPU的嵌入式Linux系統(tǒng),建議使用eglfs。
當(dāng)使用KMS/DRM時,EGLFS的Backend是eglfs_kms。更多信息,可以參考QT文檔,https://doc.qt.io/qt-5/embedded-linux.html
3 Xilinx支持情況
Xilinx支持eglfs_kms。
本文的命令可以在Xilinx的ZCU102和ZCU106單板上運行。所有測試基于ZCU102和ZCU106的PetaLinux BSP的工程。
3.1 rootfs
在Linux的rootfs里,增加qt相關(guān)的軟件。使用命令petalinux-config -c rootfs配置Linux的rootfs,使能packagegroup-petalinux-qt。
3.2 libMali
使用eglfs_kms時,libMali.so.9.0使用對應(yīng)的wayland版本,指向到/usr/lib/wayland/libMali.so.9.0。
MALI_BACKEND_DEFAULT = "wayland"
在文件project-spec/meta-user/conf/petalinuxbsp.conf里,增加下列行,可以使libMali.so.9.0指向到/usr/lib/wayland/libMali.so.9.0。
update-alternatives --install /usr/lib/libMali.so.9.0 libmali /usr/lib/wayland/libMali.so.9.0 90
也可以在Linux運行的時侯,執(zhí)行下列命令,使libMali.so.9.0指向到/usr/lib/wayland/libMali.so.9.0。
3.3 QT環(huán)境設(shè)置
為了讓QT使用eglfs_kms,需要設(shè)置下列兩個環(huán)境變量。
export QT_QPA_PLATFORM=eglfs export QT_QPA_EGLFS_INTEGRATION=eglfs_kms
QT還可以通過JSON文件設(shè)置有更多參數(shù)可以設(shè)置。通過導(dǎo)出 系統(tǒng)變量QT_QPA_EGLFS_KMS_CONFIG,可以指定JSON文件名,比如
export QT_QPA_EGLFS_KMS_CONFIG="/home/root/kms.conf"
kms.conf的內(nèi)容如下:
{ "device": "/dev/dri/card0", "hwcursor": false, "pbuffers": true, "outputs": [ { "name": "DP", "mode": "3840x2160" } ] }
3.4 檢測顯示器
通過下列命令檢查顯示器,并設(shè)置它的分辨率。
ls /dev/dri/by-path/ modetest -D fd4a0000.zynqmp-display modetest -D fd4a0000.zynqmp-display -s 43:1920x1080-60@BG24 modetest -D fd4a0000.zynqmp-display -s 43:3840x2160-29.98@BG24
3.5 QT測試程序
3.5.1. 默認(rèn)測試程序
PetaLinux編譯出的文件系統(tǒng),在目錄/usr/share/examples/opengl下,有很多opengl的測試程序,比如cube和textures。
/usr/share/examples/opengl/cube/cube /usr/share/examples/opengl/textures/textures
3.5.2. qt5everywheredemo
更復(fù)雜的opengl的測試程序,QtDemo可以通過qt5everywheredemo編譯。
下面的命令,直接編譯qt5everywheredemo。
petalinux-build -c qt5everywheredemo -x compile
在文件petalinuxbsp.conf里添加下列行后,PetaLinux編譯時會包含qt5everywheredemo。
MALI_BACKEND_DEFAULT = "wayland" IMAGE_INSTALL_append = " qt5everywheredemo"
之后在目錄/usr/share/qt5everywheredemo-1.0/里能找到
root@xilinx-zcu106-2020_2# find -name "QtDemo" ./usr/share/qt5everywheredemo-1.0/qml/QtDemo ./usr/share/qt5everywheredemo-1.0/QtDemo
責(zé)任編輯:lq
-
gpu
+關(guān)注
關(guān)注
28文章
4777瀏覽量
129362 -
Xilinx
+關(guān)注
關(guān)注
71文章
2171瀏覽量
122154 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3292瀏覽量
57921
原文標(biāo)題:【工程師分享】在MPSoC上運行基于eglfs_kms的QT應(yīng)用程序
文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
基于QT開發(fā)國產(chǎn)主板終端桌面程序 高效、穩(wěn)定、跨平臺的解決方案
EE-239:在ADSP-BF533 Blackfin處理器上運行閃存程序
![EE-239:<b class='flag-5'>在</b>ADSP-BF533 Blackfin處理器<b class='flag-5'>上</b><b class='flag-5'>運行</b>閃存<b class='flag-5'>程序</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
android手機(jī)上emulate應(yīng)用程序的方法
在TM4C MCU上用FreeRTOS開發(fā)通用應(yīng)用程序應(yīng)用說明
![<b class='flag-5'>在</b>TM4C MCU<b class='flag-5'>上</b>用FreeRTOS開發(fā)通用<b class='flag-5'>應(yīng)用程序</b>應(yīng)用說明](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
K8S集群中使用JDOS KMS服務(wù)對敏感數(shù)據(jù)安全加密
![K8S集群中使用JDOS <b class='flag-5'>KMS</b>服務(wù)對敏感數(shù)據(jù)安全加密](https://file1.elecfans.com//web2/M00/01/83/wKgZoma1zJ6AcEuaAAD6dfqMV2U987.png)
可以在單個esp8266上安裝兩個NON OS SDK應(yīng)用程序嗎?
讓smartconfig在ESP-03上運行,在CWSMARTSTART不工作是哪里的問題?
在嵌入式系統(tǒng)中集成Rust和Qt的實踐
![<b class='flag-5'>在</b>嵌入式系統(tǒng)中集成Rust和<b class='flag-5'>Qt</b>的實踐](https://file1.elecfans.com/web2/M00/D1/7A/wKgZomYjJ9GAVCZLAAKcgD1p9mk410.png)
FPGA板子可以跑Qt應(yīng)用程序嗎
【從0開始創(chuàng)建AWTK應(yīng)用程序】編譯應(yīng)用到RTOS平臺
![【從0開始創(chuàng)建AWTK<b class='flag-5'>應(yīng)用程序</b>】編譯應(yīng)用到RTOS平臺](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
Qt上位機(jī)開發(fā)實戰(zhàn)案例
![<b class='flag-5'>Qt</b>上位機(jī)開發(fā)實戰(zhàn)案例](https://file1.elecfans.com/web2/M00/C5/0A/wKgaomXxLHqAKhv-AAAVhafIeck465.png)
應(yīng)用程序中的服務(wù)器錯誤怎么解決?
STM32MP135使用SD卡啟動應(yīng)用程序,應(yīng)用程序是需要在DDR運行,DDR初始化,已經(jīng)在FSBL鏡像里面嗎?
在FPGA上為FPGA設(shè)計PCB的步驟詳解
![<b class='flag-5'>在</b>FPGA<b class='flag-5'>上</b>為FPGA設(shè)計PCB的步驟詳解](https://file1.elecfans.com/web2/M00/C1/DD/wKgaomXb5BiAMx_hAAA1KoqZlSo148.png)
評論