ESM6802 X11桌面图形系统简介

 2017-8-31     作者:廖光泽     [nemail]    
[lablebox]

  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.gif

图1 桌面


2.gif

图2 虚拟终端和屏幕键盘


3.gif

图3 触摸校准


4.gif

图4 文件浏览程序


  这些辅助程序能够方便客户更快的熟悉系统,同时在客户的应用程序中也能直接使用屏幕键盘等工具来简化程序开发。客户也可以将自己的应用程序添加到桌面之中或者删除不想要的桌面程序,这些都是由/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/上的相关资料,我们在此不再介绍。

[lablebox]