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

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

3天内不再提示

在MPSoC上运行QT应用程序

电子设计 来源:电子设计 作者:电子设计 2022-02-08 14:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:付汉杰,文章转载自:赛灵思中文社区论坛

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。

在文件project-spec/meta-user/conf/petalinuxbsp.conf里,增加下列行,可以使libMali.so.9.0指向到/usr/lib/wayland/libMali.so.9.0。

MALI_BACKEND_DEFAULT = "wayland"

也可以在Linux运行的时侯,执行下列命令,使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

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_CONFI

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

4. 参考文章
Xilinx Arm Mali-400 Driver

审核编辑:何安

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

    关注

    0

    文章

    202

    浏览量

    25069
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【飞凌T527N开发板试用】QT应用开发

    点击左下角 锤子?图标 就可以交叉编译项目。 编译出的arm架构可执行文件如下: 将目标文件发送到开发板。 开发板运行,自定义的qt应用
    发表于 08-19 15:04

    嵌入式工程师为什么要学QT?

    Qt对嵌入式工程师来说,真的很重要吗? Qt是一个跨平台的C++应用程序开发框架,非常适合嵌入式系统的开发,Qt嵌入式开发中具有很重要的作
    发表于 08-14 15:15

    国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—Qt工程编译说明

    本文档主要说明如何将已有Qt工程进行编译,生成可在评估板正常运行的ARM端Qt程序镜像。
    的头像 发表于 07-28 10:10 486次阅读
    国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—<b class='flag-5'>Qt</b>工程编译说明

    全志T536 4核A55 ARM+RISC-V+NPU 17路UART 工业开发板—Qt工程编译说明

    本文主要说明如何将已有Qt工程进行编译,生成可在评估板正常运行的ARM端Qt程序镜像。
    的头像 发表于 06-09 16:56 1270次阅读
    全志T536 4核A55 ARM+RISC-V+NPU 17路UART 工业开发板—<b class='flag-5'>Qt</b>工程编译说明

    如何在2K0300开发板搭建Qt环境

    近期迅为售后团队反馈,许多用户咨询:2K0300处理器采用了LA264处理器核,若要在该处理器运行Qt程序,由于架构发生了变化,其使用方法是否仍与ARM平台保持一致?
    的头像 发表于 05-16 14:27 437次阅读
    如何在2K0300开发板<b class='flag-5'>上</b>搭建<b class='flag-5'>Qt</b>环境

    基于RK3576开发板的QT GUI例程

    EASYEAI Orin-Nano开发板搭载了带有xfce桌面环境的Debian系统,支持Qt应用程序的开发和运行。开发板采用RK3576 CPU,性能强大,可直接在板编译
    的头像 发表于 05-14 10:26 1217次阅读
    基于RK3576开发板的<b class='flag-5'>QT</b> GUI例程

    【技术案例】Qt 环境部署 - Ubuntu 篇

    什么是QtQt是一个跨平台C++图形用户界面应用程序开发框架,可构建高性能的桌面、移动及Web应用程序,也可用于开发非GUI程序,比如控制
    的头像 发表于 04-16 17:17 1437次阅读
    【技术案例】<b class='flag-5'>Qt</b> 环境部署 - Ubuntu 篇

    如何在 树莓派 编写和运行 C 语言程序

    本教程中,我将讨论C编程语言是什么,C编程的用途,以及如何在RaspberryPi编写和运行C程序。本文的目的是为您介绍Raspber
    的头像 发表于 03-25 09:28 934次阅读
    如何在 树莓派 <b class='flag-5'>上</b>编写和<b class='flag-5'>运行</b> C 语言<b class='flag-5'>程序</b>?

    OpenVINO™中运行应用程序失败怎么解决?

    尝试 OpenVINO™ 中运行我的推理应用程序失败,并出现以下错误: RuntimeError: Check \'false\' failed at src/core/src/runtime/ov_tensor.cpp:67
    发表于 03-05 10:29

    是否可以使用OpenVINO™部署管理器部署机器运行Python应用程序

    使用 OpenVINO™部署管理器创建运行时软件包。 将运行时包转移到部署机器中。 无法确定是否可以部署机器运行 Python
    发表于 03-05 08:16

    蜂鸟板Openharmony系统跑QT程序

    QT程序放到Openharmony系统跑,可以运行,但是会被覆盖掉。(用的网盘里面的install,支持QT组件的版本)。
    发表于 02-26 13:04

    ElfBoard技术贴|如何在ELF 1开发板上交叉移植Qt

    嵌入式系统开发领域,针对特定硬件平台进行Qt框架的移植与适配是一项关键技术任务。作为业界主流的跨平台应用开发框架,Qt凭借其完善的图形界面支持能力,嵌入式开发图形界面
    的头像 发表于 02-24 16:18 1035次阅读
    ElfBoard技术贴|如何在ELF 1开发板上交叉移植<b class='flag-5'>Qt</b>

    基于QT开发国产主板终端桌面程序 高效、稳定、跨平台的解决方案

    了开发者们面临的一个重要挑战。本文将介绍如何基于QT框架,开发适用于国产主板的终端桌面程序,并探讨其优势和应用场景。 QT是一个跨平台的C++图形用户界面应用程序框架,广泛用于开发GU
    的头像 发表于 01-08 15:34 1438次阅读

    EE-239:ADSP-BF533 Blackfin处理器运行闪存程序

    电子发烧友网站提供《EE-239:ADSP-BF533 Blackfin处理器运行闪存程序.pdf》资料免费下载
    发表于 01-07 13:58 0次下载
    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>

    android手机上emulate应用程序的方法

    Android手机上模拟(emulate)应用程序的方法通常涉及到使用Android模拟器(Emulator)或类似的工具来模拟Android环境,以便在没有实际物理设备的情况下运行和测试
    的头像 发表于 12-05 15:33 2027次阅读