三种主流嵌入式图形用户界面的移植及性能比较
三种主流嵌入式图形用户界面的移植及性能比较摘 要: 本文在ARM920T嵌入式开发板上对MiniGUI、MicroWindows和Qt/Embedded三种GUI进行了移植,并在此基础上对这三种目前主流的嵌入式GUI进行了性能上的比较。
关键词: GUI;嵌入式图形用户界面;交叉编译;移植
引言
与通用的GUI系统相比,嵌入式系统下对GUI基本要求包括:轻型、占用资源少、高性能、高可靠性和可配置。目前,面向嵌入式Linux系统的有代表性的GUI系统有北京飞漫软件公司的MiniGUI、美国Century软件公司的MicroWindows、挪威Troltech公司的Qt/Embedded。本文对这三种主流的GUI系统进行了移植,并对它们的性能进行了比较。
三种嵌入式GUI的移植
我们采用的项目平台是华恒科技公司提供的用于高端手持设备、微型智能控制设备的HHARM2410-FEC-R1开发套件,采用203MHz 的ARM920T 内核的处理器S3C2410。
HHARM2410-FEC-R1 套件由核心板和底板(外设板或称基本板)组成,核心板上集成Samsung 公司S3C2410 处理器,64MB SDRAM以及16MB 的FLASH(闪存),为我们进行嵌入式GUI研发提供了足够的空间。底板上则提供以下外设接口:一个四线RS-232 串口(COM1),一个10M/100M自适应以太网接口,一个TFT LCD接口, 一个触摸屏接口。核心板和底板配合即构成一个最小的完整应用系统。
移植过程中我们采取了宿主机和目标板的开发模式。宿主机是一台运行Linux 的PC 机服务器,目标板即开发板。先在宿主机上调试通过后,再移植到目标板上。
移植工作主要集中在两个方面:
在华恒开发板附带的软件包中,已经包括有了交叉编译所需要的二进制工具Binutils、标准C函数库libc以及生成ARM平台代码的x86交叉编译器gcc、g++等工具软件包。将这些工具软件安装到宿主机上,将该安装路径添加至PATH环境变量中去,以便shell能够找得到,这样就完成了交叉编译环境的设置。
接下来就可以将GUI运行所需要的资源文件和可执行文件都采取交叉的方式进行编译,然后将编译生成的文件添加到原来的文件系统中去,就可以将其下载到目标板上进行调试了。
下面着重对Mini GUI系统的移植进行介绍。
MiniGUI图形系统由函数库、资源、演示程序三部分组成,相应地在对MiniGUI进行移植时也要对这三部分分别进行移植。
MiniGUI使用了自由软件常用的“automake”和“autoconf”接口,因此其配置和编译非常容易。进入MiniGUI源代码树,运行autogen.sh脚本文件,该文件可以简单地重新生成所有与配置相关的文件,然后为当前的构建环境配置软件。配置MiniGUI,加上启动交叉编译的选项,关键有如下几个选项:
CC=armv4l-unknown-linux-gcc
-host=arm-linux
-build=i686-pc-linux-gnu
-prefix=/opt/host/armv4l/armv4l-unknown-linux
-enable-lite
armv4l-unknown-linux-gcc是ARM的交叉编译器,它被安装在/opt/host/armv4l/armv4l-unknown-linux目录下。Host指定了目标机类型,build指定了交叉编译的系统环境,Prefix指定了MiniGUI安装的函数库、头文件和手册页等资源的安装路径,enable-lite指定将MiniGUI配置为Lite版本。关于其他的配置选项可以根据应用的特殊要求来打开或者关闭,例如disable-jpgsupport去掉对jpeg库的支持。关于这些配置选项的详细说明可以使用help打印清单或者参考《MiniGUI用户手册》。
configure结果生成了一个标准的Makefile文件。接下来只要进行简单的编译、安装就可以了。
安装MiniGUI资源文件minigui-res比较简单,只要修改目录树下的config.linux文件,将prefix选项改为和刚才的安装路径一致就可以了。然后直接执行make install。
参照以上步骤对MiniGUI的演示程序MDE进行交叉编译,过程类似,不再赘述。
最后将安装目录下的库文件、运行时自动查找的配置文件及编译后生成的可执行文件加入到Linux文件系统中去,重新制作ramdisk文件系统映像,再将新的文件系统下载到板子上,重新烧写FLASH就可以进行调试了。运行时需要先执行一个Mginit服务器进程,它将启动一个虚拟控制台窗口,然后在这个窗口中运行应用程序,如运行bomb后可以在LCD上看到和Windows中类似的扫雷界面。
Mcrowindows的资源包可以从http://microwindows.org下载,介绍从略。
Qt/Embedded的资源可以从http://www.trolltech.com下载,介绍从略。
三种主流嵌入式GUI的比较
由于嵌入式GUI系统的开发人员对实时嵌入式系统在理解上的不同,使得这些GUI系统在接口定义、体系结构、功能特性等方面存在着很大的差别,还有就是它们所采用的技术路线也有所不同。
MiniGUI的策略是首先建立在比较成熟的图形引擎之上,比如 SVGALib和LibGGI,开发的重点在于窗口系统如图形接口。在MiniGUI的开发中,引入了图形抽象层和输入抽象层(GAL和IAL)的概念。利用GAL和IAL,MiniGUI才可以在多种图形引擎上运行,并且便于移植。它尽量保持与Win32的兼容,这样在WinCE应用的任何场合,也可以使用MiniGUI。
MicroWindows目前的开发重点则在底层的图形引擎,窗口系统和图形接口方面的功能还比较欠缺。但是它能够在没有任何操作系统或其他图形系统的支持下运行,它能够对裸显示设备进行直接操作,因而显得十分小巧,便于移植到各种硬件和软件系统上。最上层的API支持Win32和Nano X接口,这样就与Win32和X Window窗口系统保持了兼容,在这些系统间移植应用软件就很容易了。
Qt/Embedded是一个多平台的C++图形用户界面应用程序框架,它注重于能给用户提供精美的图形用户界面所需要的所有元素。而且它是基于一种面向对象的思想,所以用户对其对象的扩展是相当容易的,并且它还支持真正的组件编程。
另外,这些GUI系统所使用的授权条款也各有不同。MiniGUI、MicroWindows和Qt/Embedded均为自由软件,只是所遵循的条款不同。
上述GUI的详细性能比较如表1所示。
结语
MiniGUI最初是为了满足一个工业控制系统(计算机数控系统)的需求而设计和开发的,它在设计之初就考虑到了小巧、高性能和高效率,因此比较适合于工控领域的简单应用;而MicroWindows和Qt/Embedded则偏重于便携式和手持PC/Device的需求。MiniGUI是由我国开发的,中文的支持文档比较多,大都可以从飞漫公司的网站(http://www.minigui.com)上免费获得;而MicroWindows和Qt/Embedded均是外国项目,相对来说发展得较成熟,文档大多是英文的,在Qt的中文站点(http://www.qiliang.net]http://www.qiliang.net)上也有部分翻译文档。
参考文献:
1.北京飞漫软件技术有限公司,MiniGUI技术白皮书,版本1.2FM
2.吴升艳、胡冰、岳春,‘Micro Windows体系结构及应用程序接口’,单片机与嵌入式系统应用,2003,5 谢谢分享!:D
页:
[1]