ESM6802是英創公司推出的基于Freescale i.MX6DL雙核處理器(ARM Cortex-A9,主頻1GHz)的高性能工控主板,imx6dl內部帶有硬件3D、2D圖像處理模塊,能夠圖像界面繪制進行硬件加速,使得應用程序顯示更加快速流暢。ESM6802能夠支持X11、wayland、fb三個顯示平臺,其中針對X11和wayland freescale提供了專門的插件使其能夠用到imx6dl內部的硬件模塊加速圖像顯示。
X11是Linux上常用的窗口系統,使用服務器-客戶端模式,提供了一套完整的協議定義圖形用戶界面和輸入設備管理。使用X11能夠方便的繪制、移動、管理圖形窗口,獲取鼠標鍵盤等輸入事件。X11并沒有定義圖形界面的顯示效果(窗口、按鈕的樣式),這些都是由應用程序決定的。在實際的開發中可以使用X11搭建應用程序的底層,然后在程序中自行定制顯示界面,也可以使用更高級的庫來編寫應用程序,比如Qt、gtk等。在沒有硬件加速模塊的情況下,X11系統可以使用frame buffer進行軟件圖像渲染,而imx6dl內部有一個2D圖形處理模塊,所以可以對部分X11的圖形渲染進行加速,例如下列操作:
● 繪制一個長方形
● 加載圖片
● 拷貝一個長方形區域,并且對目標區域進行部分覆蓋
● 拷貝一個長方形區域,并且與目標區域進行混合
ESM6802的文件系統提供Qt 5.8.0,支持xcb平臺(基于X11的Qt平臺),在ESM6802上運行的Qt程序也能獲益于上述X11圖形顯示支持的硬件加速,從而降低CPU占用率,增強顯示效果。我們在實際使用中測試,同一個Qt程序在xcb(基于X11,采用硬件加速)比在eglfs(基于frame buffer,使用Qt軟件渲染)上運行CPU占用率更低,同時CPU的溫度也更低。我們推薦用戶在開發中直接使用Qt進行應用程序的開發,這樣開發應用程序更加快捷而且能夠容易的獲得統一的顯示效果。
得益于X11提供的窗口系統管理,使用imx6dl內部硬件編解碼顯示的視頻處理gstreamer模塊能夠更加容易的實現視頻在特定的窗口中顯示,并且能夠很容易的限定或者改變顯示區域。同時我們針對Qt的multimedia模塊做了專門改動來使用imx6dl硬件gstreamer模塊,使得開發視頻應用更加便捷,關于Qt視頻播放以及錄制我們將在另外的文章中進行說明。
基于以上的介紹,X11可以使用imx6dl內部的硬件模塊加速圖形顯示,降低CPU負載,同時更加方便視頻處理,因此我們選用以及X11的文件系統作為ESM6802圖形應用的平臺,用戶如有需要可以向我們工程師說明,我們將提供相應的文件和燒寫方法。
ESM6802的X11文件系統中使用了matchbox作為桌面管理器,同時提供了屏幕鍵盤、虛擬終端、觸摸屏校準、文件瀏覽器等個多工具,如下列圖片所示:
圖1 桌面
圖2 虛擬終端和屏幕鍵盤
圖3 觸摸校準
圖4 文件瀏覽程序
這些輔助程序能夠方便客戶更快的熟悉系統,同時在客戶的應用程序中也能直接使用屏幕鍵盤等工具來簡化程序開發??蛻粢部梢詫⒆约旱膽贸绦蛱砑拥阶烂嬷谢蛘邉h除不想要的桌面程序,這些都是由/usr/share/applications文件夾下面的文件控制的,以觸摸屏校準程序為例,其對應的文件為/usr/share/applications/xinput_calibrator.desktop,文件內容如下:
[Desktop Entry]
Name=Calibrate Touchscreen
Name[de]=Touchscreen Kalibrieren
Name[nl]=Touchscreen Kalibreren
Comment=Run the calibration tool for touchscreens
Exec=/bin/sh -c "xinput_calibrator; cat"
Terminal=true
Type=Application
Icon=xinput_calibrator
StartupNotify=true
Categories=System;Settings;
其中:
Name是桌面圖標的名稱
Comment是對應用的簡單說明
Exec是點擊桌面圖標時執行的命令,也即啟動應用的命令
Icon是桌面圖標,文件放在/usr/share/pixmaps/下面,支持png、svg、xpm等多種格式
Categories是應用分類,支持的分類有Applications、Utilities(System)、Games、Settings,可以放在多個分類下面,用分號(;)隔開
對于用戶應用程序,可以拷貝上面的文件,然后更改對應項目就可以很容易的建立新的桌面應用圖標了。
另外用戶也可以選擇不加載matchbox而直接運行自己的應用程序,設置方法如下:修改/etc/matchbox/session文件,在matchbox-desktop和matchbox-panel兩行前面加#號屏蔽。
這樣設置之后重啟就不會再加載matchbox桌面管理了,會直接運行用戶的程序。如果用戶需要在運行程序之前先運行觸摸屏校準,可以在/etc/profile文件最后添加下面兩行:
HAVE_TOUCHSCREEN=1
export HAVE_TOUCHSCREEN
我們建議用戶在開發階段使用matchbox桌面管理熟悉系統,應用程序測試完成之后按照上面的說明去掉matchbox桌面管理,開機直接運行自己的應用程序。
更多關于X11系統底層以及編程的介紹請用戶參考X11官網https://www.x.org/wiki/上的相關資料,我們在此不再介紹。
成都英創信息技術有限公司 028-8618 0660