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大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

mybatis-plus如何根据任意字段saveOrUpdateBatch

《mybatis-plus如何根据任意字段saveOrUpdateBatch》MyBatisPlussaveOrUpdateBatch默认按主键判断操作类型,若需按其他唯一字段(如agentId、pe... 目录使用场景方法源码方法改造首先在service层定义接口service层接口实现总结使用场景my

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

Mybatis-Plus 3.5.12 分页拦截器消失的问题及快速解决方法

《Mybatis-Plus3.5.12分页拦截器消失的问题及快速解决方法》作为Java开发者,我们都爱用Mybatis-Plus简化CRUD操作,尤其是它的分页功能,几行代码就能搞定复杂的分页查询... 目录一、问题场景:分页拦截器突然 “失踪”二、问题根源:依赖拆分惹的祸三、解决办法:添加扩展依赖四、分页

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

mybatis-plus QueryWrapper中or,and的使用及说明

《mybatis-plusQueryWrapper中or,and的使用及说明》使用MyBatisPlusQueryWrapper时,因同时添加角色权限固定条件和多字段模糊查询导致数据异常展示,排查发... 目录QueryWrapper中or,and使用列表中还要同时模糊查询多个字段经过排查这就导致只要whe