1. 程式人生 > >嵌入式裝置基於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連線,如下圖所示


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,[email protected],if=RGB666 mxc_hdmi.only_cea=1 video=mxcfb1:dev=hdmi,[email protected],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

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


4). Qt 5應用程式執行

a). 測試程式請參考這裡說明,文章是基於Colibri iMX7 ARM計算機模組平臺的,針對本文的Colibri iMX6只需要更改下面程式碼中” this->gpio_out”變數為數值為”38”, 然後在載板上面將X10聯結器SODIMM_127管腳和X21聯結器LED1管腳相連。

b). 將修改編譯好的程式放到Colibri iMX6模組上面進行執行

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

[email protected]# ./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

……

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


c). 清理顯示,執行下面命令

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

[email protected]# cat /dev/zero > /dev/fb2

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

5). 總結

本文基於NXP iMX6嵌入式平臺測試了雙屏顯示,其模式是一個主顯示,另外一個基於frame buffer來進行操作,並具體測試了播放視訊以及執行Qt程式,儘管還有一定侷限性,但是已經可以實現一些比較基本的雙屏需求。

相關推薦

嵌入式裝置基於Linux實現顯示

By Toradex 秦海 1). 簡介 對於一些嵌入式領域應用如醫療,汽車等,多屏顯示應用是需要的,因此本文就基於NXP iMX6 嵌入式ARM平臺來實現雙屏顯示應用。 本文所採用的測試平臺為來自Toradex的ARM 計算機模組平臺Colibri iMX6DL搭配其

ubuntu如何實現顯示

在ubuntu系統下使用xrandr實現雙螢幕顯示: 一.首先直接執行xrandr命令,檢視裝置的相關資訊: 執行之後會顯示當前連線裝置的螢幕資訊,如下圖,LVDS和VGA-0,而HDMI螢幕為dis

Linux顯示設定

一、適用條件: 用單獨的兩塊顯示卡來實現雙屏顯示,像ATI、nVidia和Matrox的雙頭顯示技術,可以用顯示卡本身的驅動來解決,具體的操作,在各個驅動的man上都有。但是,有些顯示卡也可以按照本文的說明來做,前提是把同一個顯示卡的device節寫兩遍。 二、硬體準備 兩個顯示卡,前提是你的機器必須可以安裝

Linux-SmartHome-QML-6-主視窗實現顯示

理想的我的程式的執行方式了,是就是在系統啟動的後第一個程式啟動,不進入系統自己的圖形介面,打個比方,就是Windows下的explorer.exe程式,所以,我的程式必須的全屏顯示,這裡實現全屏的方式有

Linux開機啟動、網路、顯示

1、之前電腦是windows和Linux的雙系統,後來重灌過了windows系統,當初意味原來的Linux系統已經沒了,但是發現硬碟的分割槽還在,上網搜了下,發現原來的Linux 系統仍然存在,接下來就上網搜到東西和大家分享。 (1)Linux的分割槽在哪裡? 點選桌面“計

SDL實現overlay方式顯示的應用流程分析(thinkvd開發日誌)

由於在參與開發 thinkvd video converter 遇到釋放SDL記憶體的問題,應用中需要在預覽、全屏、雙屏及CLIP之間來回切換,再次看了SDL相關的原始碼,把SDL實現的過程簡單說一下。 SDL開發包中自帶的樣例:testsprite2.c中就是一個實現多屏顯

win7下安裝Linux實現系統全攻略

ont c51 item itl command 桌面 ted current 輸入 最近剛剛把原來32位的系統給重新安裝成64位的win7旗艦版,但又想嘗試下Linux,於是在win7下安裝了Linux實現了雙系統,是ubuntu 12.04版本的,據說現在最新的14.

基於linux實現DNS互聯網的搭建

基於linux的dns互聯網的搭建基於linux實現DNS互聯網的搭建實驗 實現DNS互聯網的搭建,在客戶端使用瀏覽器(links www.wrz.com)可以訪問到www主機的網站。客戶端172.17.0.148Local DNS172.17.0.149根域172.17.0.150Com主域172.17.0

基於linux實現keepalived高可用的集群網站架構

基於linux實現keepalived高可用的集群網站架構模擬場景:隨著業務的發展,網站的訪問量越來越大,網站訪問量已經從原來的1000QPS,變為3000QPS,目前業務已經通過集群LVS架構可做到隨時拓展,後端節點已經通過集群技術(ldirectord)保障了可用性,但對於前端負載均衡器來說,是個比較大的

android顯示的一些修改與嘗試

/*系統起來後,開啟ServiceManager,這是因為SurfaceFlinger是一個service*/ I/sysproc ( 2098): Entered system_init() I/sysproc ( 2098): ServiceManager: 0x11d9f8 I/SurfaceFlin

虛擬機器的顯示問題(虛擬機器控制兩個螢幕)(來自官方幫助文件)

Use Multiple Monitors for One Virtual Machine If your host has a multiple‐monitor display, you can configure a virtual machine to use tw

vue 實現顯示和全按鈕svg圖

1,第一步安裝screenfull  npm install --save screenfull 2, 新建screenfull.vue元件, <template> <div> <svg

android presentation實現異顯

import android.annotation.SuppressLint; import android.app.Service; import android.content.Context; import android.content.Intent; import android.hardware

VC實現顯示

直接貼原始碼吧,vc2008除錯通過。只貼多屏顯示相關操作類。 h檔案如下: /********************************************** Copyright(c) 歐博科技軟體部 檔名稱:SquallMultiScreen.h  檔案

微控制器採用RLE演算法實現液晶顯示圖片

由於需要用到液晶屏(320*240)顯示圖片,而且圖片的數量比較多(好幾百張),並且圖片要求儲存到16M的SPI FLASH裡面,顯然如果不處理 16M的FLASH明顯是放不下去。後來同事說可以用壓縮演算法RLE,並且用C#給我做了個小的軟體,壓縮圖片得到RLE壓縮後的資料

手機+PC顯示:android端即時預覽PC端修改的程式碼

前言 如何讓手機充當第二個顯示器,用來隨時預覽PC端的程式碼?前一陣子寫程式碼時,一直在琢磨這個問題。 因為辦公室電腦配置低下,且只配備一個17寸顯示器,每當反覆除錯預覽網頁時,都要儲存,重新整理。用過 brackets即使預覽功能,總是不太習慣。於是就想

Androd開發常用:繼承AppCompatActivity實現顯示

<style name="NotitleTheme" parent="Theme.AppCompat.NoActionBar"> <item name="android:windowNoTitle">true</item> <

基於 Linux鏈表的增刪改查程式碼

/************************************************************************* > File Name: doublelinklist.c > Author: Wenfei6316

ios ArcGIS聯動,顯示功能

/** VectorMap和ImageMap是通過AGSMapView例項出來的物件 **/    self.VectorMap = [[AGSMapView alloc]initWithFrame:CGRectMake(0, 0, viewWidth/2, v

VMware 安裝Ubuntu/Linux 無法滿顯示

1、在win下,虛擬機器安裝Ubuntu或者其他linux發行版的時候,安裝完成之後,螢幕顯示很小,看著很不習慣。上網了找了很多帖子,大部分都說要安裝VMware tools。 安裝VMware tools 很簡單,選單項VM-》安裝VMtools,能安裝肯定就OK了。但很