工控网首页
>

应用设计

>

嵌入式设备基于Linux多屏显示简介

嵌入式设备基于Linux多屏显示简介

1). 简介

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

 

本文所采用的测试平台为来自ToradexARM 计算机模块平台ColibriiMX6DL搭配其对应的开发载板ColibriEva Board.

 

2. 准备

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

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

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支持库

https://github.com/simonqin09/qt5patch/blob/master/angstrom-lxde-image_qt5_x11.patch  

./ qtbase_git.bb添加linuxfb支持

https://github.com/simonqin09/qt5patch/blob/master/qtbase_git_linuxfb.patch  

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

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

ColibriiMX6 # setenv vidargs ‘video=mxcfb0:dev=lcd,1024x768M@60,if=RGB666mxc_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=trueoverlay-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=1920overlay-height=1080

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

c). 测试LVDSDVI显示器同时播放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=1920overlay-height=1080 & gst-launch-1.0 -v filesrclocation=/home/root/2528.mkv ! video/x-matroska !aiurdemux !vpudec !imxv4l2sinkoverlay-width=1024 overlay-height=768

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

 

4). Qt 5应用程序运行

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

https://github.com/simonqin09/QtGPIOProject/blob/master/mainwindow.cpp  

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

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

root@colibri-imx6# ./helloworldUI -platformlinuxfb: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

……

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

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

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

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

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

 

5). 总结

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

审核编辑(
王静
)
投诉建议

提交

查看更多评论
其他资讯

查看更多

在 Linux 系统上 Docker 容器的性能影响

上游优先 - Toradex 采用主线内核支持

NXP iMX8M Plus M7核心FreeRTOS开发

嵌入式Linux上使用Ramoops

使用容器编译Yocto镜像