NXP iMX8M Plus Qt5 双屏显示

2023-12-08 19:15
文章标签 显示 plus qt5 双屏 nxp imx8m

本文主要是介绍NXP iMX8M Plus Qt5 双屏显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

By Toradex胡珊逢

简介

双屏显示在显示设备中有着广泛的应用,可以面向不同群体展示特定内容。文章接下来将使用 Verdin iMX8M Plus 的 Arm 计算机模块演示如何方便地在 Toradex 的 Linux BSP 上实现在两个屏幕上显示独立的 Qt 应用。

硬件介绍

Verdin iMX8M Plus 模块基于 NXP 的 iMX8M Plus 处理器,在显示接口方面支持 HDMI,双通道 LVDS 和 4-lane MIPI DSI 输出。在 Dahlia 底板上可以直接使用其中的 HDMI 和 4-lane MIPI DSI 接口。Toradex 提供了DSI 转 LVDS,DSI 转 HDMI 适配器,可以方便地使用各类接口显示器。本次演示将使用两个 HDMI 显示器。

NXP iMX8M Plus Qt5 双屏显示614.png

软件配置

Verdin iMX8M Plus 模块使用 Toradex Multimedia Reference Image V6.4.0 版本,其包含 Qt5.15 相关运行环境。默认系统中已经使能了 Verdin iMX8M Plus 原生的 HDMI 和 DSI 转 HDMI 适配板。 

root@verdin-imx8mp-07320826:~# cat /boot/overlays.txt 
fdt_overlays=verdin-imx8mp_hdmi_overlay.dtbo verdin-imx8mp_dsi-to-hdmi_overlay.dtbo

在 /sys/class/drm 目录下可以看到两个 HDMI 接口,分别是 HDMI-A-1 和 HDMI-A-2,但是它们都属于同一个 DRM 接口 card1。所以系统只能运行一个 weston 实例。

root@verdin-imx8mp:/sys/class/drm# ls
card0  card1  card1-HDMI-A-1  card1-HDMI-A-2  renderD128  version

在单个 DRM 接口下连接两个屏幕需要使用 weston 的 kiosk-shell 和  app-ids 。首先在 /etc/xdg/weston/weston.ini 文件的  [core]  中添加  shell=kiosk-shell.so。

[core]
#gbm-format=argb8888
idle-time=0 
use-g2d=1
xwayland=true
repaint-window=16
#enable-overlay-view=1
modules=screen-share.so
shell=kiosk-shell.so

Qt 应用在 weston 环境中运行时会对应一个 app_id,例如 BSP 中默认的应用 /usr/share/cinematicexperience-1.0。在命令行中启动该应用前添加 WAYLAND_DEBUG=1。

root@verdin-imx8mp:~# cd /usr/share/cinematicexperience-1.0
root@verdin-imx8mp:# WAYLAND_DEBUG=1 ./Qt5_CinematicExperience 2>&1|grep app
[2013234.641]  -> xdg_toplevel@21.set_app_id("Qt5_CinematicExperience")

另外一个 Qt 应用位于 `/usr/share/qtsmarthome-1.0/`中。

root@verdin-imx8mp:~# cd /usr/share/cinematicexperience-1.0
root@verdin-imx8mp:# WAYLAND_DEBUG=1 ./smarthome 2>&1|grep app
[2173895.185]  -> xdg_toplevel@21.set_app_id("smarthome")

从上面的命令中可以看到两个应用的 app_id 分别是 Qt5_CinematicExperience 和 smarthome。相应地在 /etc/xdg/weston/weston.ini 创建两个 [output]。指定在 HDMI-A-1 上显示 Qt5_CinematicExperience 应用,而 HDMI-A-2 上则显示 smarthome 应用。配置完成后保存并重启。

[output]
name=HDMI-A-1
app-ids=Qt5_CinematicExperience
mode=1920x1080

[output]
name=HDMI-A-2
app-ids=smarthome
mode=1920x1080

分别启动上面两个 Qt 应用后可以在两个 HDMI 显示器上看到相应的内容。

NXP iMX8M Plus Qt5 双屏显示2380.png


总结

上面介绍了双屏显示的配置,在 Linux BSP 上可以十分便捷得实现,除了提到的 HDMI 接口,对于 LVDS 也是同样的配置方法。

参考:
https://developer.toradex.com/torizon/provided-containers/working-with-weston-on-torizoncore/#multi-display

这篇关于NXP iMX8M Plus Qt5 双屏显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/471026

相关文章

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Mybatis Plus Join使用方法示例详解

《MybatisPlusJoin使用方法示例详解》:本文主要介绍MybatisPlusJoin使用方法示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录1、pom文件2、yaml配置文件3、分页插件4、示例代码:5、测试代码6、和PageHelper结合6

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Mybatis Plus JSqlParser解析sql语句及JSqlParser安装步骤

《MybatisPlusJSqlParser解析sql语句及JSqlParser安装步骤》JSqlParser是一个用于解析SQL语句的Java库,它可以将SQL语句解析为一个Java对象树,允许... 目录【一】jsqlParser 是什么【二】JSqlParser 的安装步骤【三】使用场景【1】sql语

idea中project的显示问题及解决

《idea中project的显示问题及解决》:本文主要介绍idea中project的显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录idea中project的显示问题清除配置重China编程新生成配置总结idea中project的显示问题新建空的pr

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis