0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在MPSoC上运行基于eglfs_kms的QT应用程序

YCqV_FPGA_EETre 来源:赛灵思中文社区论坛 作者:赛灵思中文社区论 2021-01-14 10:29 次阅读

1 Xilinx backend

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

2 QT

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

3 Xilinx支持情况

Xilinx支持eglfs_kms。


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

3.1 rootfs

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

3.2 libMali

使用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.3 QT环境设置

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

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

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4413

    浏览量

    126640
  • Xilinx
    +关注

    关注

    70

    文章

    2119

    浏览量

    119363
  • 应用程序
    +关注

    关注

    37

    文章

    3133

    浏览量

    56367

原文标题:【工程师分享】在MPSoC上运行基于eglfs_kms的QT应用程序

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA板子可以跑Qt应用程序

    Qt作为一款跨平台GUI图形界面设计软件,她可以windows、Linux运行,没听说过FPGA的板子
    发表于 03-28 23:27

    如何用RK3588编写应用程序

    由于笔者平时的嵌入式开发工作,主要是集中嵌入式Linux和Qt应用开发方向,因此,本篇文章我们尝试参考飞凌官方提供的嵌入式Linux+Qt相关的资料,编写一个Qt
    发表于 12-19 13:24

    如何让STM32WB在没有LSE时运行BLE应用程序

    如何让STM32WB在没有LSE时运行BLE应用程序
    的头像 发表于 10-24 16:41 224次阅读
    如何让STM32WB在没有LSE时<b class='flag-5'>运行</b>BLE<b class='flag-5'>应用程序</b>

    Rust GUI实践之Rust-Qt模块

    Rust-Qt 是 Rust 语言的一个 Qt 绑定库,它允许 Rust 开发者使用 Qt 框架来创建跨平台的图形界面应用程序Qt 是一个
    的头像 发表于 09-30 16:43 958次阅读

    Qt For OpenHarmony

    ;OpenHarmony本身触屏的输入、鼠标/键盘的输入怎么能够把它映射到Qt本身的应用程序框架里去。需要了解Qt的QPA实现及系统接口调用的相关逻辑,就能实现Qt
    发表于 09-15 15:39

    基于AMD SOC的QT应用程序开发

    基于AMD SOC的QT应用程序开发方法主要有两种方式:一种方式是基于petalinux工程新建一个application将源码导入在使用petalinux-build进行编译部署
    的头像 发表于 08-04 15:52 636次阅读
    基于AMD SOC的<b class='flag-5'>QT</b><b class='flag-5'>应用程序</b>开发

    如何将应用程序移植到运行在基于Arm的设备的Windows?

    本指南介绍如何将应用程序移植到运行在基于Arm的设备的Windows。该指南首先回顾了一般指南,然后展示了不同框架的示例:Tweeten应用程序的Electron移植、StaffPa
    发表于 08-02 06:06

    无法Nanoleaf Android应用程序上找到OTBR怎么解决?

    我正在使用 Nanoleaf Essential Matter A19 | 通过 Nanoleaf Android 应用程序 NXP 的 iMX93 和 iMX8 参考板使用我的自定义 OTBR
    发表于 06-08 08:23

    imx8mmini qt客户端应用程序weston桌面上运行时,显示weston桌面背景颜色并立即恢复如何解决?

    中央处理器型号:MIMX8MM6CVTKZAA Linux内核:4.19.35 Qt版本:5.12.3 编译版本:aarch64-poky-linux-gcc 8.3.0 客户端应用程序weston桌面上
    发表于 06-05 08:07

    使用espandroid运行应用程序或文件?

    我是初学者,我使用 Arduino 和一些我知道的传感器 但是,我想知道我是否可以使用我的 android 手机作为输出?例如,我想在特定传感器检测到某些东西时播放视频。 即使不运行视频,我也可以制作一个自动播放视频的应用程序,但我可以使用 esp
    发表于 06-05 06:49

    imx6qasbresd运行Qt5 GUI 应用程序面临分段错误怎么解决?

    我正在使用带有 BSP 版本 5.10.7.2 和 vivante 版本 6.4.3 的 imx6qasbresd 板,我正在使用 X11 显示服务器。我正在尝试运行 Qt5 GUI 应用程序或普通
    发表于 05-30 10:21

    Qt6应用程序的CPU使用率高是什么原因造成的?怎么解决?

    imx6qsabresd 板运行单个 qt6 应用程序时,我可以看到 %CPU 利用率约为 220%,而在运行 4 个类似的
    发表于 05-29 07:39

    如何使用imx6qsabresd板并运行qt6应用程序

    大家好, 我正在使用 imx6qsabresd 板并运行 qt6 应用程序。我想启用 GPU 分析板来测试 qt6 GUI 应用程序。我做了
    发表于 05-24 08:00

    如何在i.MX8M迷你板运行qt3d?

    -tools,qtsvg ,qttools,qttools-plugins,qttools-tools,qtxmlpatterns 我的 yocto 构建中。那么如何在我的 i.MX8M 板运行
    发表于 05-22 07:43

    i.mx8m如何同时两个显示器显示相同的应用程序

    wayland 平台与./qtdemo -platform wayland一起使用时,桌面可以显示两个显示器,但 qt 应用程序只能显示
    发表于 05-06 06:47