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

    文章

    194

    浏览量

    24154
收藏 人收藏

    评论

    相关推荐

    FPGA板子可以跑Qt应用程序

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

    Qt上位机开发实战案例

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

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

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

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

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

    3562-Qt工程编译说明

    本文档主要说明如何将已有 Qt 工程进行编译,生成可在评估板上正常运行的 ARM 端 Qt 程序镜像。 Qt 开发环境主要包括
    的头像 发表于 03-05 09:19 237次阅读
    3562-<b class='flag-5'>Qt</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 399次阅读
    【从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 274次阅读
    【从0开始创建AWTK<b class='flag-5'>应用程序</b>】创建<b class='flag-5'>应用程序</b>并在模拟器<b class='flag-5'>运行</b>

    嵌入式学习——ElfBoard ELF1板卡 编译并运行qt应用的方法

    :~# chmod 777 audio (3)设置QT环境变量 root@ELF1:~# export DISPLAY=:0.0 (4)运行audio应用程序 root@ELF1:~# ./audio
    发表于 11-15 11:04

    i.MX6ULL——ElfBoard ELF1板卡 编译并运行qt应用的方法

    :~# chmod 777 audio (3)设置QT环境变量 root@ELF1:~# export DISPLAY=:0.0 (4)运行audio应用程序 root@ELF1:~# ./audio
    发表于 11-15 10:59

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

    如何让STM32WB在没有LSE时运行BLE应用程序
    的头像 发表于 10-24 16:41 306次阅读
    如何让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 1186次阅读

    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 774次阅读
    基于AMD SOC的<b class='flag-5'>QT</b><b class='flag-5'>应用程序</b>开发

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

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