分享好友 技术首页 频道列表

基于ARM-Linux的MiniGUI的仿真与移植

2012-04-11刘喜荣

      近几年,随着嵌入式系统的日益发展和32位嵌入式处理器以及图形显示设备的广泛应用,目标产品对GUI(图形用户界面)的需求越来越多。由于嵌入式系统一般实时性要求很高,所以嵌入式系统下的GUI需要具有轻量级型、占用资源少、高性能等特点。此外,嵌入式系统往往是一种定制设备,它对GUI的需求各不相同,因此,GUI必须也可以定制。而MiniGUI是一个非常适合实时嵌入式产品的高效、可靠、可定制、小巧灵活的图形用户界面支持系统,被广泛的应用于高端科技产品中。利用MiniGUI开发出良好的人机交互界面已成为嵌入式开发中的迫切需求。本文实现了在ARM-Linux环境下进行基于QVFB的MiniGUI的模拟开发、调试,通过在PC机上的仿真模拟,将应用程序完成之后,利用交叉编译工具编译产生在目标机上运行的代码,然后把MiniGUI和可执行应用程序移植到S3C2410目标板上,这样既节省了开发时间,又提高了开发效率和质量。
1 MiniGUI的特点和体系结构
      MiniGUI项目的最初目标是为基于Linux的实时嵌入式操作系统提供一个轻量级的图像用户界面支持系统。作为操作系统和应用程序之间的中间件,MiniGUI将底层操作系统与硬件平台之间的差别隐藏起来,并对上层应用程序提供了一致的功能特性。
1.1MiniGUI的特点
(1)占用资源少:MiniGUI本身占用的空间非常小,整个MiniGUI系统占用空间在2~4MB,在某些系统上,MiniGUI系统本身所占用的空间可进一步缩小到1MB以内。
(2)高性能、高可靠性:MiniGUI良好的体系结构及优化的图形接口,可确保最快的图形绘制速度。
(3)可定制配置:和Linux内核类似,MiniGUI也具有大量的编译配置选项,通过这些选项可指定MiniGUI库中包括哪些用户所需要的功能。
(4)跨操作系统支持:MiniGUI支持Linux/uClinux、eCos、uC/OS-II、VxWorks等嵌入式操作系统。同时,在不同操作系统上的MiniGUI,提供完全兼容的API接口。
1.2MiniGUI的体系结构
      从整体结构上看,MiniGUI采用的是分层设计的,结构如图1所示。

图1 MiniGUI的分层体系结构
      在最底层,GAL(图形抽象层)和IAL(输入抽象层)及鼠标和键盘的驱动;中间层是MiniGUI的核心层,包括窗口系统必不可少的各个模块;最顶层是API,即编程接口。GAL和IAL为MiniGUI提供了底层的Linux控制台或者X-Window上的图形接口以及输入接口,而 Pthread用于提供内核级线程支持的C函数库。利用GAL和IAL,大大提高了MiniGUI的可移植性,并且使程序开发和调试变得更加容易。
2 MiniGUI在QVFB上的仿真应用
      MiniGUI能够在PC机上运行,也能够移植到目标板上运行。在运行Linux的PC机上,MiniGUI应用程序可以通过以下两种方式运行:
(1)在X-Window上,在虚拟Frame Buffer的QVFB中运行;
(2) 在Linux的字符控制台上,在Linux内核提供的FrameBuffer驱动上运行;
      这里主要介绍MiniGUI在QVFB中的仿真运行。QVFB是Qt(Qt是Linux窗口管理器KDE使用的底层函数库)提供的一个虚拟FrameBuffer工具,该程序是基于Qt开发的。
2.1 建立MiniGUI在Linux上的运行环境
      在Linux环境下,将已经下载好的压缩安装文件qvfb-1.0.tar.gz复制到/opt目录下,在该目录下解压,利用 make install命令把QVFB安装到系统默认的/usr/local/bin目录下。在X-Window环境下,打开终端,键入 qvfb&命令,启动QVFB模拟程序。接下来对QVFB的运行环境进行配置,这里配置为640×480,Depth为16bit。QVFB提供了一种软件的方法,通过这种方法,可以看到自己的图像应用程序在PC上运行的效果。它能模拟不同的分辨率及显示的颜色数,因此可以模拟目标机上的嵌入式显示屏,从而大大方便了应用程序的开发与调试。
2.2 安装资源文件和配置MiniGUI的库文件
      在Linux环境下,将已下载好的压缩资源文件
minigui-res-1.3.3.tar.gz(该文件包含字体、光标、图标、位图等资源)复制到/opt/emulation目录下(emulation目录为新创建的目录),然后运行./configure脚本成功通过,就可以执行make和make install命令,将资源文件安装到系统默认的/usr/local/lib/minigui/res目录中。将下载好的压缩库文件libminigui-1.3.3.tar.gz 复制到/opt/emulation目录下,输入解压缩命令然后进入解压后的目录,在该目录下输入make menuconfig,启动图像界面的配置工具,当配置完成后,输入make对库文件进行重新编译,如果编译成功,输入make install命令,将MiniGUI库安装到默认的 /usr /local/lib/目录下。接下来,查看文件/etc /ld.so.conf,如果文件中没有/usr/local/lib这一行,将该行添加到文件的最后,然后执行ldconfig。
2.3 MiniGUI在QVFB上的仿真
      将已下载的mg-samples-1.3.1和mde -1.3.0.tar.gz复制到/opt/emlation/目录下,在终端下进入该目录,依次执行./configure和make命令,将这些示例程序编译成能够在QVFB上可执行的程序。首先修改/usr/local/etc目录下的配置文件MiniGUI.cfg,将gal_engine=fbcon改为gal_engine=qvfb,ial_engine=console改为ial_engine=qvfb。然后使用qvfb&命令启动qvfb,运行/opt /emulation /mg-samples/src 目录中的可执行程序,如bomb,即可看到运行在QVFB内的MiniGUI程序,如图2所示:

图2 MiniGUI在QVFB上的仿真
3 MiniGUI在S3C2410上的移植
3.1安装MiniGUI资源文件
      在PC机的/opt目录下创建target目录,将资源文件minigui-res-1.3.3.tar.gz复制到/opt/target 目录下进行解压,编辑/opt/target /minigui-res-1.3.3目录下的config.linux文件,将“TOPDIR=”改为 “TOPDIR= /opt /target/minigui”,保存退出。然后输入make install将资源文件安装在/opt /target /minigui /usr/local/lib/minigui/res目录下。同时把/opt/target/minigui /usr/local/lib目录下的minigui目录复制到需要制作的文件系统的文件夹中。
3.2 配置安装MiniGUI库文件
      在编译MiniGUI的库文件libminigui -1.3.3之前,首先要正确安装了交叉编译器,即armv41-unknow- linux系列的交叉编译器。使用交叉编译器可以把libminigui-1.3.3库文件编译成一个动态链接库,通过调用该动态链接库,可以正确运行 MiniGUI的应用程序。在/opt/target /libminigui-1.3.3下,输入命令make menuconfig进行配置。当配置完成后,保存退出。然后输入make和make install,这样就将交叉编译后的MiniGUI库文件安装在/opt/host/armv41 /armv41–unkn own-linux/lib目录下,分别是libminigui-1. 3.so.3.0.0和 libmgext -1.3.so.3.0.0。同时,还有指向这些库的符号链接,指向库文件libminigui-1.3.so.3.0.0的符号链接是libminigui -1.3.so.3和libminigui.so,指向库文件libmgext-1.3.so.3.0.0符号链接是 libgext  -1.3.so.3和lib-mgext.so。MiniGUI所使用的头文件安装在/opt/host/armv41 /armv41  -unknown-linux/include/minigui文件夹内。同时在/opt/host/armv41/armv41- unknown– linux/etc/中还有一个minigui.cfg的配置文件。
3.3 MiniGUI的移植
      将MiniGUI成功移植到S3C2410目标板上,一般要经过以下几个过程:
(1) 把MiniGUI库文件libminigui-1.3. so.3.0.0和libgext -1.3.so.3.0.0,以及它们的符号链接文件,一同复制到要制作成cramfs文件系统的目录root_tech中的/lib下。
(2) 把/opt/target/minigui/usr/local/lib下的minigui目录复制到要制作cramfs文件系统的目录中,比如放到该目录的/usr/sbin/下。当嵌入式系统运行时,应用程序在该minigui目录下调用相关的资源文件。
(3) 在root_tech文件夹内,用mkdir –p /opt/host/armv41/armv41-unknown-linux/ 命令创建一个目录,然后使用命令ln –s /lib /opt/host/armv41/armv41-unknown-linux/lib创建符号链接,上述命令确保系统能够找到正确的动态链接库。
(4) 修改/opt/host/armv41/armv41–un known–linux/etc目录下的MiniGUI.cfg文件,把存放资源的路径改为root_tech目录下对应的路径,从而使应用程序能够找到它使用的资源文件。例如,在PC机上的存放路径为/usr/local/lib,那么在root_tech目录下,如果把MiniGUI资源目录放到了/usr/sbin下,则MiniGUI.cfg文件中的路径必须由/usr /local/lib改为/usr/sbin/,同时还要将“ial_engine=console”改为“ial_engine =ads”。另外,将 [fbcon]下的“defaultmode =1024×768-16 bpp”改为“defaultmode =640×480-16 bpp”。将修改后的MiniGUI.cfg文件要放到root_tech目录的/mnt/etc目录下。
(5) 最后,把准备好的root_tech文件夹,利用mkcramfs命令生成cramfs文件系统,利用NFS网络文件系统将生成的文件系统移植到 S3C2410中。然后从minicom下进入可执行文件所在的目录/usr/sbin,可执行程序bomb在S3C2410目标板上运行的结果如下图3 所示:

图3 MiniGUI在S3C2410开发板上运行
4结束语
      本文将MiniGUI-1.3.3版本在ARM - Linux环境下,首先在QVFB中进行了仿真应用,同时经过交叉编译后成功的移植到了 S3C2410开发板的硬件平台上,试验结果表明能够稳定可靠的运行,为后续基于图形用户界面程序的实际项目的开发与应用打下了基础。随着嵌入式产品应用领域的日益增长,基于MiniGUI开发出良好的人机交互界面,是嵌入式发展的趋势,同时也拥有广阔的市场前景。
参考文献
[1]徐英慧,马忠梅,王磊等. ARM9        嵌入式系统设计—基于S3C2410与Linux[M].北京:北京航空航天大学出版社,2007.
[2]刘昌盛,郭勇,谢习华. 嵌入式Linux环境下MiniGUI的研究与移植[J].嵌入式软件应用,(2008)07-2-0101-03.
[3]李敏. ARM-Linux环境下MiniGUI在S3C2410开发板上的移植[J].科技情报开发与经济,(2008)28-0139-02.
[4]刘峥嵘,张智超,许振山,等. 嵌入式Linux应用开发详解[M].北京:机械工业出版社,2004.
[5]北京飞漫软件.MiniGUI用户手册.http://www.minigui.com.
[6]ARM Limited.ARM920T Technical Ref- erence Manual.2000,2001.


收藏
TOF-SIMS二次离子光学系统仿真研究
摘 要:为实现飞行时间二次离子质谱仪(TOF-SIMS)对二次离子束的提取并提高仪器的调试效率,采用离子光学仿真软件SIMION 8.0对TOF-SIMS二次离子光学系统进行仿真。以稳定同位素铜离子为对象,通过仿真,研究二次离子光学系统中二次离子提取系统透镜电极电压的调整对质量分辨率的影响,确定最佳透镜电极电压组合,并得到稳定

0评论2016-03-03

反射导体参数对涡流栅传感器非线性误差影响的仿真分析
摘 要:涡流栅传感器基于横向电涡流效应设计,其反射导体参数变化对传感器测量准确度的影响比较明显,因此需要对反射导体尺寸、形状参数进行分析和优化,使其能够适应更多高准确度的测量场合。利用有限元分析方法(Maxwell软件)建立涡流栅传感器的线圈、反射导体模型,对不同尺寸、形状参数的反射导体进行仿真计算,分析反

0评论2016-03-03

基于ADAMS的扭矩合成装置动力学仿真分析
摘 要:针对电动负载模拟器中采用的一种扭矩合成装置,分析其在不同输入条件下扭矩的合成效率。利用Solidworks软件建立三维模型,通过Parasolid格式将模型转入到ADAMS中,以Hertz弹性碰撞理论为基础,对齿轮之间的接触力进行计算并施加约束,最终建立扭矩合成装置的动力学模型,通过输入不同大小、方向、频率、相位等各种形

0评论2016-03-03

视距内空战和超视距空战战斗机对空作战效能评估
对于战斗机的评估早已经从性能转移到了效能,所以研究人员都想通过更多的努力去了解战斗机的作战效能评估该如何进行。就目前的研究而言,根据空战的规模,可以将空战的过程可以分解成视距内空战和超视距空战,而且可以针对不同的作战飞机做出不同的作战效能评估。因为战斗是具有隐身性的,所以超视距的空战中评价态势感知能力有三个主要的指标,它们是雷达的探测能力、红外探测能力以及被动雷达探测能力。而对这两种空战的过程做效能评估都可以采用层次分析法,同时给出计算各项子能力的计算模型。

0评论2014-10-11

军事仿真技术将广泛应用于新概念武器的研发
在新概念武器的研究过程中,仿真技术可应用于装备研制、装备试验与鉴定、装备实装操作、作战效能评估等阶段。

0评论2014-07-25

基于DDS规范的战场信息分发中间件平台研究
数据分发服务(Data Distribution Service,DDS)是对象管理组织(OMG)于2004年12 月颁布的分布式实时系统中数据分发的一个最新规范,该规范描述了分布式实时系统中数据发布、传递和接收的接口和行为,定义了以数据为中心的发布/订阅机制,提供了一个与平台无关的数据模型。结合我军通信现代化建设要求,在研究和分析了DDS规范的基础上,提出了一种基于DDS规范的战场信息分发中间件平台的实现方发和技术。

0评论2014-04-15

AppDDS数据分发服务技术及其应用
AppDDS(AppSoft Data Distribution Service)数据分发服务是对象管理组织(OMG)在HLA及CORBA等标准的基础上制定的新一代分布式实时通信中间件技术规范,DDS采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,能保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。

0评论2014-04-15

声全息技术及其应用
声全息是20世纪60年代中期把全息技术引进声学领域后出现的新学科,它是为了检测和显示可见光及X射线不透明的媒质中的结构而提出来的,这一应用前景引起了人们的重视,所以近年来在方法上和实验技术上均做了大量工作。实验证明了声全息在医疗诊断、无损检测和水下显示等方面都有应用的可能。

0评论2014-04-03

DDS 中间件技术在作战系统网络中的应用
  通过对数据分发服务DDS (Data Distribution Service)规范的研究,建立一套以数据为中心的发布/订阅模型,完成一套与平台无关、具备在分布式操作系统中实现的数据分发、传递和接收功能的演示系统,建立实时的、可靠的、安全的、跨语言和平台的信息分发的中间件平台,实现数据空间共享的目的,提高通讯设备数据传输的通信性能。

0评论2014-03-18

DDS数据分发服务相关技术研究
DDS (Data Distribution Service) 标准由OMG 组织发布,定义了以数据为中心的发布-订阅机制,实现信息提供者与信息消费者之间的数据传输。对DDS 规范进行了介绍,分析了其应用场景,并对广域网环境下的数据传输性能进行了测试验证。

0评论2014-03-17