当前位置: 首页 > news >正文

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

相关文章:

  • viewPager的adapter--FragmentInstancePagerAdapter
  • 思科设备静态路由配置
  • 基于springboot + vue体育馆使用预约平台
  • 创建vue项目:vue脚手架安装、vue-cli安装,vue ui界面创建vue工程(vue2/vue3),安装vue、搭建vue项目开发环境(保姆级教程二)
  • Linux学习教程(第十五章 Linux系统日志管理)
  • [wp]“古剑山”第一届全国大学生网络攻防大赛 Web部分wp
  • 基于Java酒店管理系统
  • 低代码开发:激发创新还是程序员的末日?
  • 问题:数组对象去重
  • 【Java数据结构 -- List和ArrayList与顺序表】
  • android项目实战之使用框架 集成多图片、视频的上传
  • 2024年软考科目怎么选?(选科指引)
  • vscode如何在没有网络的情况下安装插件
  • 微信小程序 - 创建 ZIP 压缩包
  • json转yolo格式
  • 时间复杂度分析经典问题——最大子序列和
  • “大数据应用场景”之隔壁老王(连载四)
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 3.7、@ResponseBody 和 @RestController
  • 30天自制操作系统-2
  • CSS3 变换
  • ES6 ...操作符
  • javascript 总结(常用工具类的封装)
  • java中具有继承关系的类及其对象初始化顺序
  • js操作时间(持续更新)
  • Leetcode 27 Remove Element
  • rc-form之最单纯情况
  • react 代码优化(一) ——事件处理
  • SpiderData 2019年2月13日 DApp数据排行榜
  • spring-boot List转Page
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 编写符合Python风格的对象
  • 前端面试之CSS3新特性
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 云大使推广中的常见热门问题
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • Android开发者必备:推荐一款助力开发的开源APP
  • Spring第一个helloWorld
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​渐进式Web应用PWA的未来
  • # 数据结构
  • #07【面试问题整理】嵌入式软件工程师
  • $.ajax,axios,fetch三种ajax请求的区别
  • (13)Hive调优——动态分区导致的小文件问题
  • (2)STL算法之元素计数
  • (LeetCode) T14. Longest Common Prefix
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (六)c52学习之旅-独立按键
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐