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

发布者:自在自由最新更新时间:2011-06-17 关键字:ARM-Linux  MiniGUI  仿真与移植 手机看文章 扫描二维码
随时随地手机看文章
      近几年,随着嵌入式系统的日益发展和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上的仿真[page]

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开发出良好的人机交互界面,是嵌入式发展的趋势,同时也拥有广阔的市场前景。

 

关键字:ARM-Linux  MiniGUI  仿真与移植 引用地址:基于ARM-Linux的MiniGUI的仿真与移植

上一篇:基于IAP的ARM7程序在线更新设计
下一篇:基于ARM的嵌入式linux 内核的裁剪与移植

推荐阅读最新更新时间:2024-03-16 12:37

ARM-Linux s3c2440 之中断分析(一)
硬件篇: S3C2440 是arm920T架构,先温习一下s3c2440中的中断控制器原理和相关硬件构架。 中断控制器(InterruptControler): S3c2440A的中断控制器有60个中断源,如DMA中断,UART中断,IIC中断等,60个中断源在寄存器中用相应的位来表示。当有多个中断要求到来时,经过仲裁过程后,中断控制器向CPU请求FIQ或者IRQ中断。仲裁过程根据硬件中的优先级模块来决定,其结果最后写进中断未决(intterrupt pending)寄存器中,通过中断未决寄存器的值可以清楚哪个中断发生了。 S3c2440中断控制器流程图: 挂起 中断模式(InterruptMode): AR
[单片机]
<font color='red'>ARM-Linux</font> s3c2440 之中断分析(一)
ARM-Linux触摸屏驱动移植--问题总结
硬件平台:FL2440 内核版本:2.6.28 主机系统:Ubuntu 11.04 内核版本:2.6.39 1、由于自己编译的内核触摸屏驱动选项选择的问题,触摸屏搞了好久 由于自己编译内核将触摸屏驱动以模块的形式编译的,方便自己调试ADC驱动和触摸屏驱动。遇到以下问题: 编译完触摸屏驱动完成后,利用insmod ts.ko加载驱动,之后在/dev/下生成鼠标结点文件mouse0,没有生成ts0 由于将触摸屏接口也一M的形式编译了,改成* /dev下不生成event*节点,编译选项中选择Event interface 后面的touch screen驱动以模块的形式编译进内核,手动加载,方便自己调试 重
[单片机]
<font color='red'>ARM-Linux</font>触摸屏驱动<font color='red'>移植</font>--问题总结
ARM-Linux汇编到ADS汇编转换需要注意的问题
最近那些课比较麻今天拿出一段nand准备在ADS下搭建调试环境,发现两家的汇编代码有但不兼容,需要修改一下.现在罗列一下我主要修改的地方,其他很多可能没遇到,大家还是自己查一查文档吧。 1、修改头 如arm-linux汇编头: .text .global_start _start: 修改为ads版本: AREA nand1, CODE,READONLY ENTRY 注意AREA和ENTRY前面都有tab空格,否则编译出错。 2、修改段标志 去掉arm-linux汇编中的:号即可在ads中使用。 3、ads需要加上ENTRY和END指令表示程序入口和结束标志 4、ADS中的C语言混编 与arm-l
[单片机]
<font color='red'>ARM-Linux</font>汇编到ADS汇编转换需要注意的问题
基于S3C2440的MiniGUI移植
随着嵌入式系统的迅速发展,图形用户界面(Graphic User Interface,GUI)需求越来越明显。MiniGUI是面向实时嵌入式系统的轻量级图形用户界面支持系统,以轻型、占用资源少、高性能、可配置等特点广泛应用于通信、医疗、工控、电子、机顶盒、多媒体等领域。本文正是针对这种需求,介绍如何在S3C240上移植MiniGUI的全过程。 1 图形用户界面MiniGUI MiniGUI是由原清华大学教师魏永明主持开发的轻量级图形系统,遵循GPL公约。所支持的操作系统已不仅仅限于Linux,它还可以在μCli nux,μC/OS-Ⅱ,eCos和VxWorks等系统上运行。已验证的硬件平台包括Intelx86,ARM(ARM
[单片机]
基于S3C2440的<font color='red'>MiniGUI</font><font color='red'>移植</font>
嵌入式Linux下基于MiniGUI的信息终端软件开发
摘要:嵌入式系统的开发已成为新的行业热点。本文首先概述嵌入式Linux系统开发的特点及其工具,然后具体描述MiniGUI图形系统的移植、使用方法,并举例说明在该系统上开始信息终端软件的过程。该方案有很大的应用前景。 关键词:嵌入式操作系统 Linux MiniGUI 信息终端 引言 近年来,随着软硬件资源的成熟与完善,嵌入式技术越来越和人们的生活紧密相关,功能单一的公用电话也开始向嵌入式多媒体信息终端转型。对嵌入式系统的研究,在全球激起了人们极大的兴趣。 选择开放源码的Linux操作系统开发新一代嵌入式产品已经成为其中新的技术热点。在本系统中,采用了MontaVista Linux系统。它提供了很多处理器、目标板和主机环境
[嵌入式]
ARM-Linux移植攻略--yaffs2 Partially written block xxx detected 问题解决
每次打开开发板都会出现Partially written block xxx detected 而且会越来越多 解决方法: 方法一,修改 yaffs_fs.c 中 yaffs_auto_checkpoint 改成 值 2 方法二,修改fs/yaffs2/yaffs_guts.cstatic int yaffs_ScanBackwards(yaffs_Device * dev) 函数中 在 。。。。 T(YAFFS_TRACE_ALWAYS, /*YAFFS_TRACE_SCAN*/ (TSTR( Partially written block %d detected TENDSTR), blk
[单片机]
基于嵌入式ARM-Linux的GPS智能终端设计
GPS智能终端是智能交通系统(ITS系统)的重要组成部分,它将卫星定位技术(GPS)、地理信息系统(GIS)以及无线通信技术融于一身。目前,卫星定位终端通常由8位/16位单片机、GSM/GPRS通信模块、GPS模块、LCD液晶显示器等组成,并且采用液晶部分与主控芯片组分离在两个外壳里的分体式结构。这里介绍一种基于ARM920处理器和嵌入式Linux操作系统,将GPS技术与CDMA网络相结合的嵌入式智能终端并设计。该终端具有将GPS终端的动态位置、时间、状态等信息实时地通过CDMA无线网络链接到控制中心,在具有地理信息处理和查询功能的电子地图上进行显示,并对终端的准确位置、速度、运动方向、终端状态等基本信息进行监控和查询;报警(
[单片机]
基于嵌入式<font color='red'>ARM-Linux</font>的GPS智能终端设计
一种可移植的嵌入式图形支持系统:MiniGUI
  为目标嵌入式产品选择适合的嵌入式图形支持系统成为与选择嵌入式操作系统一样颇具挑战性。本土公司开发的MiniGUI是一个高效、可靠、可定制、小巧灵活的图形用户界面支持系统,并具有跨硬件平台、跨操作系统的可移植性,非常适合于实时嵌入式产品开发。本文详细阐述了MiniGUI的特点、运行模式和应用。      随着高端消费类电子产品(PDA、手机等)的广泛应用,原先仅在军工、工业控制等领域中使用的实时嵌入式操作系统,受到越来越多的关注。因为嵌入式产品本身是一种高度定制化的软硬件集成产品,单个操作系统无法满足各类嵌入式产品的多样化需求,因此,业界有许多各具特色的实时嵌入式操作系统产品可供选择。      在嵌入式产品开发中,除操作系统之
[手机便携]
一种可<font color='red'>移植</font>的嵌入式图形支持系统:<font color='red'>MiniGUI</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved