linux qt程序崩溃_【工程师分享】在MPSoC上运行基于eglfs_kms的QT应用程序

作者:付汉杰,hankf@xilinx.com

文章转载自:赛灵思中文社区论坛

1Xilinx backend

Xilinx为MPSoC支持4种libMali的backend: X11, Wayland/GBM, Fbdev, Headless-EGL。

2QT

QT支持4种plugin(插件)或者backend,FB,X11,Wayland,eglfs。对不同的plugin(插件)或者backend,QT应用层是一样的。

其中的FB,不能利用GPU做渲染。

EGLFS可以让QT应用直接运行在EGL和OpenGL ES 2.0上。也就是,可以在没有窗口管理器(windowing system like X11 or Wayland)的情况下,运行QT软件。对于有GPU的嵌入式Linux系统,建议使用eglfs。

当使用KMS/DRM时,EGLFS的Backend是eglfs_kms。更多信息,可以参考QT文档,https://doc.qt.io/qt-5/embedded-linux.html

3Xilinx支持情况

Xilinx支持eglfs_kms。


本文的命令可以在Xilinx的ZCU102和ZCU106单板上运行。所有测试基于ZCU102和ZCU106的PetaLinux BSP的工程。

3.1rootfs

在Linux的rootfs里,增加qt相关的软件。使用命令petalinux-config -c rootfs配置Linux的rootfs,使能packagegroup-petalinux-qt。

3.2libMali

使用eglfs_kms时,libMali.so.9.0使用对应的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运行的时侯,执行下列命令,使libMali.so.9.0指向到/usr/lib/wayland/libMali.so.9.0。

3.3QT环境设置

为了让QT使用eglfs_kms,需要设置下列两个环境变量。

export QT_QPA_PLATFORM=eglfs
export QT_QPA_EGLFS_INTEGRATION=eglfs_kms

QT还可以通过JSON文件设置有更多参数可以设置。通过导出 系统变量QT_QPA_EGLFS_KMS_CONFIG,可以指定JSON文件名,比如

export QT_QPA_EGLFS_KMS_CONFIG="/home/root/kms.conf"

kms.conf的内容如下:

{
"device": "/dev/dri/card0",
"hwcursor": false,
"pbuffers": true,
"outputs": [
{
"name": "DP",
"mode": "3840x2160"
}
]
}
3.4检测显示器

通过下列命令检查显示器,并设置它的分辨率。

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.5QT测试程序

3.5.1. 默认测试程序

PetaLinux编译出的文件系统,在目录/usr/share/examples/opengl下,有很多opengl的测试程序,比如cube和textures。

/usr/share/examples/opengl/cube/cube
/usr/share/examples/opengl/textures/textures

3.5.2. qt5everywheredemo

更复杂的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
66876f65f911b39259a48f5ecd15d604.gif 95e1f74e73ede81bf339b9c910c62417.gif b7aa899d9565dd4771a9dd03d7fb6fd1.png 95e1f74e73ede81bf339b9c910c62417.gif 关注我们

a87a8a7098c1c10889ffa7ed9ae09ad0.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值