發布日期:2022-04-26 點擊率:75
關鍵詞: 嵌入式 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