您的位置 首页 厂商

根据嵌入式Linux体系下Mini GUI的移植办法与进程详解

基于嵌入式Linux系统下Mini GUI的移植方法与过程详解-近几年,嵌入式 Linux 系统已得到广泛的应用,相应的图形用户界面的开发也日趋重要,MiniGUI正是其中的一个轻量级的图形用户界面支持系统。本文分析了嵌入式操作系统下图形用户界面MiniGUI 的结构和特点,描述了将MiniGUI在ARM Linux下的移植方法与过程,并对这种基于MiniGUI的嵌入式系统开发做了展望。

近几年,嵌入式 Linux 体系已得到广泛的运用,相应的图形用户界面的开发也日趋重要,MiniGUI正是其间的一个轻量级的图形用户界面支撑体系。本文剖析了嵌入式操作体系下图形用户界面MiniGUI 的结构和特色,描绘了将MiniGUI在ARM Linux下的移植办法与进程,并对这种根据MiniGUI的嵌入式体系开发做了展望。

0前语

近年来跟着嵌入式设备与市场需求的广泛结合,手机、PDA等产品的运用对可视化操作界面的简练和便利提出了更高的要求,这都需求一个安稳牢靠的高功能GUI体系来供给支撑。图形用户界面(Graphic User Interface,简称GUI)的广泛盛行是当今计算机技能的重要成果之一,它极大地便利了非专业用户的运用,人们能够经过窗口、菜单便利地进行操作。嵌入式体系对GUI的根本要求包含有轻型、占用资源少、高功能、高牢靠性以及可装备等。MiniGUI是现在比较常用的几种GUI体系之一,与其他的GUI比较,MiniGUI最明显的特色便是轻型、占用资源少,而且在这几年的开展里,MiniGUI现已十分老练和安稳了,在许多产品和项目中都已得到了实践运用。

1 MiniGUI的特色和体系结构

1. 1 MiniGUI的特色

MiniGUI是由原清华大学教师魏永明掌管开发的轻量级图形体系,是一种面向嵌入式或实时体系的图形用户界面支撑体系。它遵从GPL条约,是根据SVGALib及LinuxThread库的多窗口GUI支撑体系。能跨多种操作体系,首要运转于linux及全部具有POSIX线程支撑的POSIX兼容体系,包含一般嵌入式Linux、eCos、uC/OS-II、VxWorks等体系,是国内最早的自由软件之一。

MiniGUI的首要特色有:(1) 遵从GPL条款的纯自由软件;(2) 供给了齐备的多窗口机制;(3) 多字符集和多字体支撑,现在支撑ISO8859-1、GB2312及Big5等字符集,而且支撑各种光栅字体和TrueType、Type1等矢量字体;(4) 全拼和五笔等汉字输入法支撑;(5) BMP、GIF、JPEG及PCX等常见图画文件的支撑;(6) Windows的资源文件支撑,如位图、图标、光标、刺进符、定时器及加快键等;(7) 可移植性好。

1.2 MiniGUI的体系结构

1.2.1多线程的分层规划

从全体结构上看,MiniGUI是分层规划的,结构如图1所示。在最底层,GAL(图形笼统层)和IAL(输入笼统层)及鼠标和键盘的驱动;中间层是MiniGUI的核心层,包含窗口体系必不可少的各个模块;最顶层是API,即编程接口。GAL和IAL为MiniGUI供给了底层的Linux控制台或许X Window上的图形接口以及输入接口,而Pthread用于供给内核级线程支撑的C函数库。运用GAL和IAL,大大提高了MiniGUI的可移植性,而且使程序的开发和调试变得愈加简单。

MiniGUI自身运转在多线程形式下,它的许多模块都以独自的线程运转,一同,MiniGUI还运用线程来支撑多窗口。从本质上讲,每个线程有一个音讯行列,音讯行列是完结线程数据交换和同步的要害数据结构。一个线程向音讯行列中发送音讯,而另一个线程从这个音讯行列中获取音讯,同一个线程中创立的窗口可同享同一个音讯行列。一个线程向音讯行列中发送音讯,而另一个线程从这个音讯行列中获取音讯,同一个线程中创立的窗口可同享同一个音讯行列。运用音讯行列和多线程之间的同步机制,能够完结下面要讲到的微客户/服务器机制。

根据嵌入式Linux体系下Mini GUI的移植办法与进程详解

1.2.2微客户/服务器结构

在多线程环境中,与多进程间的通讯机制相似,线程之间也有交互和同步的需求。比方, 用来办理窗口的线程保持大局的窗口列表, 而其他线程不能直接修正这些大局的数据结构, 而有必要根据“先来先服务”的准则,顺次处理每个线程的恳求,这便是一般性的客户/服务器形式。MiniGUI运用线程之间的同步操作完结了客户线程和服务器线程之间的微客户/服务器机制。

2开发环境

H2410EB开发板由北京恒颐高科技能有限公司规划开发,它根据Samsung公司的S3C2410A20嵌入式ARM处理器。S3C2410A20内嵌 ARM920T 核,带有全功能的MMU,具有高功能、低功耗、低成本、小体积等长处,适用于手持设备、轿车等范畴。

H2410EB除带有大容量的SDRAM和Flash以外,还扩展了RS-232C串行接口、10Mbps以太网接口、触摸屏接口、音频输入/输出接口、USB Host、USB Slave、UART接口、IIC接口、用户自定义键盘、LCD显现器,便运用户运用和进行参阅规划。它支撑嵌入式Linux操作体系的运转,支撑MP3/MPEG播映、GUI、Web 服务及其它服务,一同可根据用户需求开发特定软件与设备驱动程序。

操作体系选用削减后的Linux,Linux Kernel版别为v2.4.18,体系运用的穿插编译器是arm-Linux-gcc。别的,还有驱动程序源码和测验程序源码等代码模块。

3 MiniGUI的移植

本文中运用的主机体系为Red Hat Linux 9.0,移植方针体系为Linux2.4.18,MiniGUI的版别是1.6.9。在主机上穿插编译MiniGUI链接库,然后将针对方针机编译的库文件,与根文件体系一同烧写到方针板的RAM空间,今后将运转在方针板上的图形用户界面直接链接到该库,脱离主机独立运转。

3.1 Linux穿插编译环境的构建

GUI的编译一般都是在PC机上履行的,也便是说,编译器自身能够在PC机上履行,一同编译源代码生成的二进制文件有必要能在方针机上履行,这类编译器一般称为穿插编译器。关于ARM渠道,咱们装置了cross-arm-binutils-2.10-1.i386.rpm、cross-arm-gcc-2.95.3-2.i386.rpm、cross-arm-glibc-2.1.3-2.i386.rpm这三个包。这些包都能够从网上免费获取。arm-binuTIls这个包一般包含了一些针对ARM渠道的二进制东西,比方arm-strip、arm-ar等指令;arm-glibc这个包包含的是规范C的函数库的ARM的版别以及对应的头文件;arm-gcc中包含的则是生成ARM渠道代码的x86上的穿插编译器。履行rpm指令将这些包装置到PC机上,若不在体系默许查找目录下,则有必要将装置目录加到体系的PATH环境变量中,这样在每次编译时体系才干找得到编译器。

以root用户登陆Linux体系,在主机上用rpm指令装置穿插编译东西,arm-linux-gcc将被装置到/usr/local/arm/2.95.3/下面。此刻,gcc为 /usr/local/arm/2.95.3/bin/arm-linux-gcc,而它的include为 /usr/local/arm/2.95.3/arm-linux/include,对应的lib为 /usr/local/arm/2.95.3-/arm-linux/lib。然后,在你的bashrc 中增加环境变量即可。履行vi .bashrc,最终一行参加:export PATH=$PATH:/usr/local/arm/2.95.3/bin途径,保存退出后履行source .bashrc。

别的需求留意的是,编译时所用的函数库版别要与方针版上运转时所用的函数库版别共同。经过上述进程,就现已树立了穿插编译环境,接下来的便是进行MiniGUI的选项装备和穿插编译。

3.2 MiniGUI的装备和穿插编译

咱们能够从网上免费得到MiniGUI-1.6.9的资源文件压缩包,MiniGUI1.6.9的源程序包包含以下三个部分:libminigui-1.6.9.tar.gz-MiniGUI函数库源代码;miniguires-1.6.9.tar.gz-MiniGUI所运用的资源,包含根本字体、图标、位图、输入法等;mde-1.6.9.tar.gz-MiniGUI的归纳演示程序。

3.2.1 MiniGUI函数库的装置和编译

进入目录libminigui-1.6.9,再运转。/configure脚本:CC= arm-linux-gcc\ 。/configure –prefix=/mnt/nfs/local\ –build=i386-linux\ –host=arm-linux\ –target=arm-linux\ –disable-lite\ –disable-micemoveable\ –disable-cursor\

在这儿,CC是用来指定所运用的编译器,arm-linux-gcc即为装置到主机上的穿插编译东西。别的,--prefix为MiniGUI函数库的装置方针途径;--build是指履行编译的主机;--host穿插编译后的程序将运转的体系;--target是运转该编译器所发生的方针文件的渠道;--disable-lite树立MiniGUI-Threads版别的运用程序;--disable-micemoveable制止窗口移动;--disable-cursor因为体系选用触摸屏,所以用此选项用来封闭鼠标光标显现。

假如运转。/configure脚本成功经过,就可持续进行下面的编译了,履行make和make install指令编译装置libminigui。这儿要留意的是,履行make install指令时要切换到Root用户权限下,否则装置时无法把文件装到指定目录下。装置成功后,MiniGUI 的函数库和头文件以及装备文件等资源将被装置到/usr/local/arm/2.95.3/arm-linux/目录中,详细情况为:函数库被装在lib/ 子目录中;头文件被装在include/ 子目录中;手册被装在man/ 子目录中;装备文件被装在etc/ 子目录中。

3.2.2 MiniGUI资源的编译装置

主机上解压资源文件:tar zxf miniguires-1.6.9.tar.gz,可生成miniguires-1.6.9目录。在装置之前先要修正目录中的configure.linux文件,履行vi configure.linux翻开文件,把prefix选项部分的默许值 /usr/local/ 改为 /usr/local/arm/2.95.3/arm-linux/,这样运转make install装置指令后MiniGUI资源将被装置到方针体系中的/usr/local/arm/2.95.3/arm-linux/lib/minigui-/res的目录下。

3.2.3 实例程序的编译装置

解压mde-1.6.9.tar.gz并进入该目录,修正目录下装备文件configure.in,把其间的AC_CHECK_HEADERS(minigui/commmon.h, have_libminigui=yes, foo=bar)中的minigui/-commmon.h改为$prefix/include/minigui/common.h,来指定穿插编译时搜minigui的头文件途径,避免编译时体系找不到头文件;在所有LIB=“$LIB后参加–L{prefix}/lib来指定编译时所需求库文件的途径。并将libpopt-dev-arm-cross-1.6.tgz解压所生成的头文件和库文件别离放入方针目录的include和lib中,用以支撑mde中程序在ARM下的穿插编译。然后履行。/autogen.sh,从头生成configure脚本,运用上面装备的脚本然后履行make指令,即可完结实例程序的编译。

4复制MiniGUI资源到开发板

编译完MiniGUI和实例程序之后,需求把MiniGUI库、资源和运用程序复制到为方针机器预备的文件体系目录中,然后生成文件体系映像,再下载到方针板上运转。能够经过串口、USB口或以太网口将文件体系映像下载到方针机器中。在履行程序之前,还有一件重要的工作要做,便是在开发板上的Linux中装备好MiniGUI的运转环境。

5板载Linux的环境装备

MiniGUI能够运用多种图形引擎进行图画显现,有qvfb、SVGALib、LibGGI等等,当然也能够自己编写一个图形引擎供MiniGUI运用。这儿咱们运用qvfb来作为MiniGUI的图形引擎进行图画显现。qvfb(vitural framebuffer)是在宿主机上模仿帧缓冲的,它是X Window用来运转和测验运用程序的体系程序,运用了同享存储区域(虚拟的帧缓冲)来模仿帧缓冲而且在一个窗口中模仿一个运用来显现帧缓冲。

首要对qvfb进行装置,能够从网上下载,下载下来后进行解压:tar zxf qvfb-1.0.tar.gz并进入到qvfb-1.0目录,履行。/configure脚本后即可用make和make install指令进行编译装置。

更改MiniGUI的装备文件MiniGUI.cfg设置设备驱动程序,设置显现区域及字体等内容。修正/usr/local/etc目录下的装备文件MiniGUI.cfg,将其间的驱动引擎gal_engine和ial_engine设置为qvfb,再将其间qvfb的defaultmode设置为适宜的显现形式。然后把qvfb加到可履行途径中去,履行vi .bashrc指令,在 .bashrc最终面加上export PATH=/usr/local/arm/2.95.3/bin -:$PATH,保存退出后用source .bashrc指令履行一下即可。

在X Window中,翻开一个终端仿真程序,履行qvfb &指令。在qvfb中选中File Configure,将qvfb设置成嵌入式开发体系的液晶屏的巨细。合理设置MiniGUI的装备文件后,接着就能够运转MiniGUI运用程序了。

履行运用程序顺畅的话,屏幕上能够看到程序的运转界面。至此,MiniGUI现已成功移植到方针体系上。尔后,咱们能够根据需求,持续修正MiniGUI库函数及各种资源,而且编写自己的运用程序,使图形用户界面愈加完善。

6结束语

跟着嵌入式产品运用范畴的日益增长,开宣布优异的人机交互界面,是嵌入式开展的趋势,具有宽广的市场前景。MiniGUI能够安稳牢靠的运转在Linux体系下,经过上述详细的移植和后续的MiniGUI下嵌入式软件的开发进程,能快速构建一个嵌入式可视化软件体系,信任这种嵌入式体系将会得到越来越多的运用。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/93209.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部