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

    文章

    198

    浏览量

    24248
收藏 人收藏

    评论

    相关推荐

    TM4C MCU用FreeRTOS开发通用应用程序应用说明

    电子发烧友网站提供《TM4C MCU用FreeRTOS开发通用应用程序应用说明.pdf》资料免费下载
    发表于 09-11 14:15 0次下载
    <b class='flag-5'>在</b>TM4C MCU<b class='flag-5'>上</b>用FreeRTOS开发通用<b class='flag-5'>应用程序</b>应用说明

    可以单个esp8266安装两个NON OS SDK应用程序吗?

    一个简单的问题。我可以单个 esp8266 安装两个 NON OS SDK 应用程序吗?我的自定义引导加载程序(包括 os libs)和我的自定义
    发表于 07-19 07:28

    嵌入式系统中集成Rust和Qt的实践

    Rust 拥有丰富的库生态系统,用于序列化和反序列化、异步操作、解析不安全输入、线程、静态分析等,而 Qt 是一个 C++ 工具包,支持跨各种平台的丰富的、基于 GUI 的应用程序,从 iOS 到嵌入式Linux。Qt
    发表于 05-03 10:26 1703次阅读
    <b class='flag-5'>在</b>嵌入式系统中集成Rust和<b class='flag-5'>Qt</b>的实践

    FPGA板子可以跑Qt应用程序

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

    【从0开始创建AWTK应用程序】编译应用到RTOS平台

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建Hello工程并在模拟器运行、将AWTK应用程序移植
    的头像 发表于 03-21 08:23 567次阅读
    【从0开始创建AWTK<b class='flag-5'>应用程序</b>】编译应用到RTOS平台

    Qt上位机开发实战案例

    Qt框架的开发人员能迅速上手和操作。 即使不开发Qt应用程序Qt Creator也是一个简单易用且功能强大的IDE。
    的头像 发表于 03-13 12:31 2237次阅读
    <b class='flag-5'>Qt</b>上位机开发实战案例

    应用程序中的服务器错误怎么解决?

    使用应用程序时,可能会遇到服务器错误的问题。这种错误通常会导致应用程序无法正常运行 ,给用户带来不便。下面将介绍应用程序中的服务器错误及其
    的头像 发表于 03-12 15:13 5749次阅读

    STM32MP135使用SD卡启动应用程序应用程序是需要在DDR运行,DDR初始化,已经FSBL镜像里面吗?

    使用SD卡启动应用程序应用程序是需要在DDR运行,DDR初始化,已经FSBL镜像里面嘛 求大佬指点
    发表于 03-11 08:31

    3562-Qt工程编译说明

    本文档主要说明如何将已有 Qt 工程进行编译,生成可在评估板正常运行的 ARM 端 Qt 程序镜像。
    的头像 发表于 03-05 09:19 425次阅读
    3562-<b class='flag-5'>Qt</b>工程编译说明

    FPGA为FPGA设计PCB的步骤详解

    FPGA(Zynq™ UltraScale+™ MPSoC) 的 Ubuntu 22.04 桌面映像安装了各种 EE 设计应用程序
    的头像 发表于 02-26 09:04 1926次阅读
    <b class='flag-5'>在</b>FPGA<b class='flag-5'>上</b>为FPGA设计PCB的步骤详解

    适用于Linux的QRadioLink SDR客户应用程序

    QRadioLink 是一个 GNU/Linux 多模(模拟和数字)SDR(软件定义无线电)收发器应用程序,利用网络实现电台与 VOIP 桥接(IP 的电台),它建立 GNU 电台之上,允许使用不同的数字和模拟无线电信号以及
    的头像 发表于 01-11 11:04 1123次阅读
    适用于Linux的QRadioLink SDR客户<b class='flag-5'>应用程序</b>

    如何用RK3588编写应用程序

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

    【从0开始创建AWTK应用程序】编译应用到嵌入式Linux平台运行

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建Hello工程并在模拟器运行、将AWTK应用程序移植
    的头像 发表于 12-07 12:08 669次阅读
    【从0开始创建AWTK<b class='flag-5'>应用程序</b>】编译应用到嵌入式Linux平台<b class='flag-5'>运行</b>

    【从0开始创建AWTK应用程序】创建应用程序并在模拟器运行

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建Hello工程并在模拟器运行、将AWTK应用程序移植
    的头像 发表于 12-01 08:24 465次阅读
    【从0开始创建AWTK<b class='flag-5'>应用程序</b>】创建<b class='flag-5'>应用程序</b>并在模拟器<b class='flag-5'>运行</b>

    开发java应用程序的基本步骤是

    ava是一种面向对象的编程语言,广泛用于开发各种类型的应用程序开发Java应用程序时,有一些基本步骤需要遵循,以确保应用程序的正确性和可靠性。 1.确定需求:这是开发任何
    的头像 发表于 11-28 16:52 1523次阅读