嵌入式linux 小屏,嵌入式设备基于Linux实现双屏显示

2023-10-16 22:20

本文主要是介绍嵌入式linux 小屏,嵌入式设备基于Linux实现双屏显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

By Toradex 秦海

1).简介

对于一些嵌入式领域应用如医疗,汽车等,多屏显示应用是需要的,因此本文就基于NXP iMX6 嵌入式ARM平台来实现双屏显示应用。

本文所采用的测试平台为来自Toradex的ARM 计算机模块平台Colibri iMX6DL搭配其对应的开发载板Colibri Eva Board.

2.准备

a). Colibri iMX6DL系统分别通过X18连接LVDS LCD屏(1024x768)和X5 DVI接口连接标准DVI液晶显示器。

b). Colibri iMX6DL 模块需要连接FFC排线和Colibri Eva Board X6连接,如下图所示

a576eb269498408b7d2f392d1e69cbe5.png

c). Colibri iMX6DL 系统使用Toradex Linux Release V2.6.1,不过原生没有包含Qt库,需要基于Toradex Openembedded环境添加Qt相关并重新编译,建立环境和编译相关请参考这里,涉及到添加Qt5以及linuxfb支持的修改请参考下面两个patch文件,然后根据这里说明将重新编译好的image文件更新到Colibri iMX6DL模块上面去。

./ angstrom-lxde-image.bb 添加Qt5 X11支持库

./ qtbase_git.bb添加linuxfb支持

d). Colibri iMX6DL Uboot环境变量如下设置来使能双屏配置,此配置LVDS作为主屏显示X11桌面,DVI显示器作为副屏

----------------------------

Colibri iMX6 # setenv vidargs ‘video=mxcfb0:dev=lcd,1024x768M@60,if=RGB666 mxc_hdmi.only_cea=1 video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 fbmem=32M’

----------------------------

3).播放视频测试

a). 利用videotestsrc元素测试DVI显示器 ”/dev/video18” 输出

----------------------------

gst-launch-1.0 -v videotestsrc !imxv4l2sink device=/dev/video18 force-aspect-ratio=true overlay-width=1920 overlay-height=1080

----------------------------

b). 测试DVI显示器播放1080P 高清视频“fullhdvideo.mkv”

----------------------------

gst-launch-1.0 -v filesrc location=/home/root/fullhdvideo.mkv ! video/x-matroska !aiurdemux !vpudec !imxv4l2sinkdevice=/dev/video18 force-aspect-ratio=trueoverlay-width=1920 overlay-height=1080

----------------------------

c). 测试LVDS和DVI显示器同时播放1080P 高清视频“fullhdvideo.mkv”

----------------------------

gst-launch-1.0 -v filesrc location=/home/root/2528.mkv ! video/x-matroska !aiurdemux !vpudec !imxv4l2sink device=/dev/video18 force-aspect-ratio=true overlay-width=1920 overlay-height=1080 & gst-launch-1.0 -v filesrc location=/home/root/2528.mkv ! video/x-matroska !aiurdemux !vpudec !imxv4l2sink overlay-width=1024 overlay-height=768

----------------------------

800ad68688e422ff6436e2eec60e15ab.png

4). Qt 5应用程序运行

a). 测试程序请参考这里说明,文章是基于Colibri iMX7 ARM计算机模块平台的,针对本文的Colibri iMX6只需要更改下面代码中” this->gpio_out”变量为数值为”38”, 然后在载板上面将X10连接器SODIMM_127管脚和X21连接器LED1管脚相连。

b). 将修改编译好的程序放到Colibri iMX6模块上面进行执行

----------------------------

root@colibri-imx6# ./helloworldUI -platform linuxfb:fb="/dev/fb2"

Sucessfully export GPIO-38

Sucessfully set GPIO-38 direction

GPIO-38 value set low

Sucessfully set GPIO-38 value

GPIO-38 value set high

……

----------------------------

ca3170ca566a621b7a113bdc6756afb8.png

c). 清理显示,执行下面命令

----------------------------

root@colibri-imx6# cat /dev/zero > /dev/fb2

----------------------------

5).总结

本文基于NXP iMX6嵌入式平台测试了双屏显示,其模式是一个主显示,另外一个基于frame buffer来进行操作,并具体测试了播放视频以及运行Qt程序,尽管还有一定局限性,但是已经可以实现一些比较基本的双屏需求。

这篇关于嵌入式linux 小屏,嵌入式设备基于Linux实现双屏显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统