发布日期:2022-04-26 点击率:71
关键词: 嵌入式 linux
摘要:对于一些嵌入式领域应用如医疗,汽车等,多屏显示应用是需要的,因此本文就基于NXP iMX6 嵌入式ARM平台来实现双屏显示应用。
1). 简介
对于一些嵌入式领域应用如医疗,汽车等,多屏显示应用是需要的,因此本文就基于NXPiMX6 嵌入式ARM平台来实现双屏显示应用。
本文所采用的测试平台为来自Toradex的ARM 计算机模块平台ColibriiMX6DL搭配其对应的开发载板ColibriEva Board.
2. 准备
a). Colibri iMX6DL系统分别通过X18连接LVDS LCD屏(1024x768)和X5 DVI接口连接标准DVI液晶显示器。
b). Colibri iMX6DL 模块需要连接FFC排线和Colibri Eva Board X6连接,如下图所示
iMX6DL " height="330" width="500"/>
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). 测试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=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程序,尽管还有一定局限性,但是已经可以实现一些比较基本的双屏需求。
下一篇: PLC、DCS、FCS三大控
上一篇: 索尔维全系列Solef?PV