MiniGUI与嵌入式系统的关系 MiniGUI移植的过程

控制/MCU

1882人已加入

描述

随着嵌入式系统的迅速发展,图形用户界面(GraphIC User Interface,GUI)需求越来越明显。MiniGUI是面向实时嵌入式系统的轻量级图形用户界面支持系统,以轻型、占用资源少、高性能、可配置等特点广泛应用于通信、医疗、工控、电子、机顶盒、多媒体等领域。本文正是针对这种需求,介绍如何在S3C240上移植MiniGUI的全过程。

1 图形用户界面MiniGUI

MiniGUI是由原清华大学教师魏永明主持开发的轻量级图形系统,遵循GPL公约。所支持的操作系统已不仅仅限于Linux,它还可以在μCli nux,μC/OS-Ⅱ,eCos和VxWorks等系统上运行。已验证的硬件平台包括Intelx86,ARM(ARM7/AMR9/StrongARM/xScale),Power-PC,MIP S,M68K(DragonBall/ColdFire)等。

1.1 MiniGUI与嵌入式系统的关系

MiniGUI具有良好的软件架构,通过抽象层将MiniGUI上层和底层操作系统隔离开来。如图1所示,基于MiniGUI的应用程序一般通过ANSIC库以及MiniGUI自身提供的API来实现自己的功能;MiniGUI中的“可移植层”可将特定操作系统及底层硬件的细节隐藏起来,而上层应用程序则无需关系底层的硬件平台输出和输入设备。

MiniGUI


1.2 MiniGUI体系结构
    从结构上看,MiniGUI是分层设计的,层次结构如图2所示。在底层,GAL和IAL为MiniGUI提供了底层的Linux控制台或者X Window上的图形接口以及输入接口。中间层是MiniGUI的核心层,其中包括了窗口系统必不可少的各个模块。最顶层的API向应用设计提供编程接口。

MiniGUI

2 S3C2440开发平台简介

本文使用的目标平台是三星公司推出的高度集成的S3C2440(ARM920T core with MMC),最高主频可达532 MHz微处理器,提供64MB SDRA M,64 MBNAND FLASH以及2 MB NOR FLASH的存储设备,另外包括IDE和PCMICA接口的丰富的外围电路和多功能的扩展接口。S3C2440采用高性能ARM9微处理器以其优化的片上性能,在视频会议、楼宇的对讲系统、网络监控、GPS定位/导航仪、医疗电子设备、多媒体终端产品等应用领域有广泛应用。

3 MiniGUI的移植

宿主主机系统为redhat Linux 9.0,要求完全安装,移植步骤如下:

3.1 建立交叉编译环境

在移植之前首先建立好交叉编译环境,简单地说是指在一个平台上可以生成能在另一个平台上运行的代码,编译工具为arm-linux-gCC-3.3.2。

#tar-xvjf rm-linux-gcc-3.3.2

默认的安装路径是/usr/LOCal,为了避免每次设置PATH,在.bash_profile文件中增加PATH=/usr/local/arm/3.4.1bin:MYMPA TH,并运行以下命令:

#source.bash_profile

3.2 源代码准备

从http://www.minigui.org/res.shtml下载源代码包如下:

(1)libminigui-1.6.10.tar.gz:MiniGUI函数库源代码。

MiniGUI由3个函数库的组成,它们分别是libminigui,libmgext和libvcongui。libminigui是提供窗口管理和图形接口的核心函数库,也提供了大量的标准控件;libmgext是libminigui的一个扩展库,提供了一些高级控件及“文件打开”、“颜色选择”对话框等;libvcon gui则为Linux操作系统提供了一个应用程序可用的虚拟控制台窗口,从而可以方便地在MiniGUI环境中运行字符界面的应用程序,libmgext和libvcongui库已经包含在这个源代码包中。

(2)minigui-res-1.6.10.tar.gz:MiniGUI所使用的资源,包括基本字体、图标、位图和鼠标光标。

(3)mg-smaples-1.6.10.tar.gz:配套示例程序。

3.3 编译安装

(1)建立工作目录

# mkdir/minigui

# cd/minigui

(2)编译安装MiniGUI库

# cd/minigui

# tar xzvf libminigui-1.6.10.tar.gz-C/minigui

# cd/minigui/libminigui-1.6.10

#./configure-prefix=/home/-host=i386-redhat-linux-target=arm-linux--build=arm-linuxCC=arm-linux-gcc--dISA-ble-vbfsu pport

prefix选项用于指定MiniGUI函数库的安装路径,默认的安装路径是/usr/LOCal,这里应该是所使用的交叉编译环境中系统头文件目录include库目录lib所在的目录,本例中是/home,这样一来,MiniGUI的函数库和头文件也将被分别安装到lib和include目录中。在后续进行MiniGUI应用程序的交叉编译时,就可以正确地找到MiniGUI的头文件和函数库。其中:

target选项用于指定目标平台,这里使用arm-linux;

host选项用来指明宿主机的类型,这里使用i386-redhat-linux;

build选项指定了交叉编译的系统环境,这里使用arm-linux;

CC用来指定使用的交叉编译器,这里使用arm-linux-gcc。

运行.configure脚本成功后,就成了定制的Make-file文件,接下来只需编译和安装即可。

# make

# make install

(3)编译安装MiniGUI资源文件

# tar xzvf minigui-res-1.6.10.tar.gz-C/minigui

# cd/minigui/minigui-res-1.6.10

# make install

(4)编译安装配套应用程序

# tar mg-smaples-1.6.10.tar.gz-C/minigui

# cd/minigui/mg-smaples-1.6.10# make install

3.4 拷贝MiniGUI资源到开发板

把/home/lib目录下的所有库文件(注:-prefix=/home/)拷贝到开发板的/lib目录下;把/minigui/res目录下的所有文件拷贝到开发板上/usr/local/lib目录下,其开发板上的目录如下形式/usr/local/lib/minigui/res/……;把/home/etc下的MiniGUI.c fg拷贝到开发板上的/etc目录下;最后把配套应用程序拷贝到开发板目录下。

3.5 配置开发板的运行环境

(1)/etc目录下建立ld.so.conf文件,并添加如下内容:

/usr/local/lib

/lib

这样程序运行的时候可以找到相应的库文件。

(2)修改开发板上的/etc/MiniGUI.cfg文件,主要修改是图形引擎和输入引擎。本开发平台的Linux中自带有VESAFrameBuffer设备驱动程序,并且初始状态已经激活。FrameBuffer是Linux内核中的一种驱动程序接口,这种接口将显示设备抽象为帧缓冲区,用户可以将它看成是显示内存的一个映像。将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反映在屏幕上。这样,MiniGUI就可以使用FrameBuffer作为图形引擎进行图像显示。LCD显示器的像素为240x320,因此图形引擎的显示模式defaultmode为240x320-16bpp。并在输入引擎中添加usb鼠标设备文件和鼠标协议。修改如下:

MiniGUI


    同时在/etc/init.d/rcS脚本文件里添加鼠标设备,内容如下:
    /bin/ln-s/devr/vc/0/dev/tty0
    /bin/ln-s/dev/input/mouse0/dev//mouse

4 结语

把图形用户界面移植到嵌入式设备中是嵌入式系统发展的趋势,本文详细介绍了MiniGUI移植到S3C2440的过程,并最终能稳定得在目标平台上运行。该方法对于移植到其他的目标平台有良好的借鉴作用。MiniGUI作为源代码开放的自由软件,在嵌入式图形用户界面领域将有更好的实用价值,并随着MiniGUI的功能日趋强大,应用将越来越广泛。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分