历史上的今天
返回首页

历史上的今天

今天是:2025年02月16日(星期日)

正在发生

2018年02月16日 | MiniGUI移植到S3C2440的过程介绍

2018-02-16 来源:eefocus

    随着嵌入式系统的迅速发展,图形用户界面(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中的“可移植层”可将特定操作系统及底层硬件的细节隐藏起来,而上层应用程序则无需关系底层的硬件平台输出和输入设备。

a.JPG

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

b.JPG

      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鼠标设备文件和鼠标协议。修改如下:

    d.JPG
    同时在/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的功能日趋强大,应用将越来越广泛。


推荐阅读

史海拾趣

DMC Tools公司的发展小趣事

DMC Tools公司自创立之初,就注重技术创新。早期,公司研发团队针对电子行业对高精度工具的需求,成功开发出一系列具有自主知识产权的精密切割工具。这些工具不仅提高了生产效率,还降低了生产成本,迅速在市场上获得了认可。随着技术的不断进步,DMC Tools公司不断推出新产品,满足电子行业日益增长的需求,逐步在市场上树立了自己的品牌。

ept Connectors公司的发展小趣事

EPT Connectors公司一直注重产品品质的管理和提升。公司建立了严格的质量管理体系,从原材料采购到产品制造、检测等各个环节都进行严格把关。同时,EPT还积极引进先进的生产设备和技术,不断提升产品的质量和性能。这些努力使得EPT的产品在市场上赢得了良好的口碑和客户的信任。许多知名电子企业都选择EPT作为他们的连接器供应商,这也进一步推动了EPT的发展。

Cynergy 3公司的发展小趣事

为了进一步扩大市场份额,Cynergy 3制定了国际化发展战略。公司积极参加国际展会和会议,与全球各地的客户和合作伙伴建立联系。同时,Cynergy 3还在全球范围内设立了多个分支机构和服务中心,以便更好地为客户提供服务。这些努力使得Cynergy 3的产品逐渐进入了国际市场,并赢得了众多国际客户的青睐。

FINDER公司的发展小趣事

为了进一步扩大市场份额,Cynergy 3制定了国际化发展战略。公司积极参加国际展会和会议,与全球各地的客户和合作伙伴建立联系。同时,Cynergy 3还在全球范围内设立了多个分支机构和服务中心,以便更好地为客户提供服务。这些努力使得Cynergy 3的产品逐渐进入了国际市场,并赢得了众多国际客户的青睐。

Facon公司的发展小趣事

随着技术实力的不断提升,Facon开始积极拓展市场。他们与全球知名的电子产品制造商建立了紧密的合作关系,将高性能芯片广泛应用于智能手机、平板电脑、笔记本电脑等领域。同时,Facon还积极开拓新兴市场,如物联网、智能家居等领域,为这些领域提供定制化的解决方案。通过不断的市场拓展和技术创新,Facon逐渐在全球电子行业中占据了举足轻重的地位。

Carlisle Interconnect Components公司的发展小趣事

在追求经济效益的同时,Carlisle Interconnect Components公司也积极履行社会责任。公司注重环保和可持续发展,采用环保材料和生产工艺,减少对环境的影响。此外,公司还积极参与社会公益事业,为社会做出贡献。这种负责任的态度不仅赢得了社会各界的认可,更为公司的长远发展奠定了坚实的基础。

这五个故事展示了Carlisle Interconnect Components公司在电子行业中的发展历程和取得的成就。通过不断创新、品质管理、技术研发、战略合作以及履行社会责任等措施,公司逐渐在电子连接器领域树立起了自己的品牌形象和市场地位。

问答坊 | AI 解惑

如何选用热继电器、?实际为电机额定电流多少

选用热继电器一般以电机额定电流为准.如电机额定电流为3A,而选择热继电器为1.5~3.5间.设定时以电机的负载为准.如负载比较稳定时,热继电器设定的电流为电机额定电流.如负载波动比较大时可稍微加大些. 如果是电机直接启动开关设备热继电器电流应选 ...…

查看全部问答>

推荐一本用PowerPC开发通信设备的书,我还是第一次见同类型的书

嵌入式设计及通信设备开发详解——基于MPC82XX处理器 卓越的链接 http://www.amazon.cn/mn/detailApp?qid=1238487283&ref=SR&sr=13-1&uid=168-0888845-7367438&prodid=bkbk941360 当当的链接 http://product.dangdang.com/product.aspx?p ...…

查看全部问答>

问个WINCE调试的基本方法问题

我在PB5.0中调试单一的工程可以么?就是我不想每次都生成新的系统镜像。就像在VS2005中调试一样,修改代码、F5就开始编译链接、部署、断点,这样就方便多了阿,要不我不是在PB中每次都得从新生成系统镜像了?多麻烦…

查看全部问答>

急需人员加盟

本公司因业务需要,急需招聘WincE开发工程师,待遇从优。有意者请将简历发送至liuyh0105@126.com刘月红收。有IC卡、条形码行业工作经验者优先。电话:010-51265035、68219720、68219760…

查看全部问答>

STM8S103K使用I2C通信经常出错

103K作为从属, 另外一块CPU作为主控, 时钟频率大概200HZ 在103K这边经常会收到错误的地址 但使用逻辑分析仪看波形是正确的 可能是哪里出错了呢?…

查看全部问答>

镁海水燃料电池

由古河电池和日本东北大学合作开发的镁燃料电池实现商业化。 图为Green House公司LED手提灯(内有碳棒和镁金属棒组成镁燃料电池), 加入一次350ml水和16g盐即可提供8小时电力,点亮内置LED灯或通过USB接口为手机充电, 工作120小时后更换内部镁 ...…

查看全部问答>

【视频】一拖三-巨牛的空调内外机解决方案

做过空调的人,都知道目前大多的解决方案是内机和外机是通过不同的电机控制板来进行控制。这样的结果就是成本升高,设计复杂, 维修困难。 飞思卡尔针对这种情况,开发了一种基于DSC的单板电机解决方案。这个方案中内机和外机的控制部分集成在一个 ...…

查看全部问答>

怎么验证我板子上的495通信口好坏呢?

我只有一个485口,也没有示波器,怎么检查我的这个485是好的呢?…

查看全部问答>

SCT定时器分频问题

LPC43XX单片机中有个SCT状态定时器,我想把SCT定时器时钟降下来,54Mhz,但是在SCT章中没有发现分频寄存器!如下图,    既然SCT中没有,就在CGU和CCU中找吧,结果发现CCU中只有使能/禁止SCT时钟的寄存器,也没有分频寄存器,我就迷糊了 ...…

查看全部问答>

请问有没有关于MSP430F5529的学习资料

需要用HMC5883L做一个加速度感应器在液晶屏上显示姿态角和姿态坐标,以前没学过什么都不懂,想问问有没有关于5529的教学资料,视频和文字都可以,使用HMC5883L的样例程序也需要,谢谢!…

查看全部问答>