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 转 LVDSDSI 转 HDMI 适配器,可以方便地使用各类接口显示器。本次演示将使用两个 HDMI 显示器。

软件配置

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 显示器上看到相应的内容。

总结

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

参考:

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

相关推荐
云空5 小时前
《QT 5.14.1 搭建 opencv 环境全攻略》
开发语言·qt·opencv
小老鼠不吃猫6 小时前
力学笃行(二)Qt 示例程序运行
开发语言·qt
晓纪同学7 小时前
QT创建一个模板槽和信号刷新UI
开发语言·qt·ui
爱码小白9 小时前
PyQt5 学习方法之悟道
开发语言·qt·学习方法
シ風箏17 小时前
Neo4j【环境部署 02】图形数据库Neo4j在Linux系统ARM架构下的安装使用
linux·数据库·arm·neo4j
人才程序员21 小时前
QML z轴(z-order)前后层级
c语言·前端·c++·qt·软件工程·用户界面·界面
学习BigData1 天前
【使用PyQt5和YOLOv11开发电脑屏幕区域的实时分类GUI】——选择检测区域
qt·yolo·分类
yerennuo1 天前
FFmpeg库之ffmpeg
qt·ffmpeg
冷眼看人间恩怨1 天前
【Qt笔记】QComboBox控件详解
c++·笔记·qt
阿松のblog1 天前
pyQt5实现页面切换操作
开发语言·qt