MiniGUI移植
嵌入式Linux环境下MiniGUI的研究与移植

嵌入式Linux环境下MiniGUI的研究与移植近年来随着设备与市场需求的广泛结合,手机、PDA等产品的应用对可视化操作界面的简洁和便利提出了更高的要求,这都需要一个稳定牢靠的高性能GUI系统来提供支持。
图形用户界面(Graphic User Interface,简称GUI)的广泛流行是当今计算机技术的重要成就之一,它极大地便利了非专业用户的用法,人们可以通过窗口、菜单便利地举行操作。
嵌入式系统对GUI的基本要求包括有轻型、占用资源少、高性能、高牢靠性以及可配置等。
MiniGUI是目前比较常用的几种GUI系统之一,与其他的GUI相比,MiniGUI最显著的特点就是轻型、占用资源少,而且在这几年的进展里,MiniGUI已经十分成熟和稳定了,在许多产品和项目中都已得到了实际应用。
1 MiniGUI的特点和体系结构1. 1 MiniGUI的特点MiniGUI是由原清华高校老师魏永明主持开发的轻量级图形系统,是一种面对嵌入式或实时系统的图形用户界面支持系统。
它遵循GPL公约,是基于SVGALib及Thread库的多窗口GUI支持系统。
能跨多种操作系统,主要运行于linux及一切具有POSIX线程支持的POSIX兼容系统,包括一般嵌入式Linux、eCos、uC/OS-II、等系统,是国内最早的自由软件之一。
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所示。
MiniGUI3.0.12安装与移植

MiniGUI3.0.12及组件下载地址/downloads/index.html libmgplus-1.2.4下载地址/download/yong_f/40628071. 需要下载的组件libminigui-gpl-3_0_12.tar.gzmg-samples-3_0_12.tar.gzfreetype-1_3_1.tar.gzjpegsrc_v7.tar.gzlibpng-1_2_37.tar.gzminigui-res-be-3_0_12.tar.gzzlib-1_2_2.tar.gzqvfb2-2.0libmgplus-1.2.4(可以在csdn上下载到)(qvfb所需要的包)libqt3-mtlibqt3-mt-devalienqt-devel-3.3.8-4.fc7.i386.rpm2.安装各组件<1>libminigui-gpl-3_0_12.tar.gz(库)./configure --prefix=/usr/local --enable-qvfbial --disable-splash --disable-screensaver sudo makesudo make install<2>minigui-res-be-3_0_12.tar.gz(资源包)./configure --prefix=/usr/localsudo makesudo make install<3>freetype-1_3_1.tar.gz./configure --prefix=/usr/localsudo makesudo make install(在安装时会有ftdump.c的预处理标识符错误,修改./test/ftdump.c里的Print_Mem( memory_footprint.##field, string )改为: Print_Mem( memory_footprint.field, string )#define FOOTPRINT( field ) Save_Memory( &memory_footprint.##field )修改为:#define FOOTPRINT( field ) Save_Memory( &memory_footprint.field )<4>安装PNG库./configure --prefix=/usr/localsudo makesudo make install<5>安装JPEG库./configure --prefix=/usr/local --enable-sharedsudo makesudo make install<6>安装zlib库./configure --prefix=/usr/localsudo makesudo make install<7>libmgplus-1.2.4./configure --prefix=/usr/localsudo makesudo make install将/usr/local/lib加入到.bashrc中<8>安装qvfb2(因为需要qt-3.3作支持,所以需要先安libqt3-mt,libqt3-mt-dev,下载qt-devel-3.3.8-4.fc7.i386.rpm,然后用alien转为deb,再用dpkg -i --force-overwrite 来安装此包) sudo apt-get install libqt3-mtsudo apt-get install libqt3-mt-devsudo apt-get install aliensudo alien qt-devel-3.3.8-4.fc7.i386.rpmdpkg -i --force-overwrite qt-devel-3.3.8-4.fc7.i386.deb(开始安qvfb)cd qvfb2-2.0./configure --with-qt-includes=/usr/lib/qt-3.3/include --with-qt-libraries=/usr/lib/qt-3.3/lib --with-qt-dir=/usr/lib/qt-3.3sudo makesudo make install(qvfb2与1不同,没有文件输入是不会显示出框图的)<9>修改MiniGUI.cfg[system]# GAL engine and default optionsgal_engine=pc_xvfb(修改此处)defaultmode=640x480-16bpp(修改此处)# IAL engineial_engine=qvfbmdev=/dev/input/micemtype=IMPS2[fbcon]defaultmode=1024x768-16bpp[qvfb]defaultmode=640x480-16bppwindow_caption=QVFB-for-MiniGUI-3.0exec_file=/usr/local/bin/qvfbdisplay=0#{{ifdef _MGGAL_PCXVFB[pc_xvfb]defaultmode=640x480-16bppwindow_caption=XVFB-for-MiniGUI-3.0-(Gtk-Version)exec_file=/usr/local/bin/qvfb2(修改此处)display=0#}}<10>mg-samples-3.0.12 并运行./configure --prefix=/usr/localsudo makesudo make install./same/same问题1:执行示例出现Wrong JPEG library version: library is 70, caller expects 62原因:在编译libminigui的时候用的库是62,而在编示例时用的是70,导致版本不对解决办法:将/usr/lib/libjpeg.so /usr/local/libjpeg.so.62 全指向libjpeg.so.7.0.0 然后修改/usr/include/jpeglib.h 中的版本号为70,然后重新编译libminigui(若是坚持用libjpeg7的话用此办法)(关于miniGUI在2440上的移植会在下篇更新)以下是关于minigui的移植,认为是最详细的一篇,经本人实验也已经成功,转自/forum/showtopic-3899.aspx采用交叉编译方式【软件环境】PC:ubuntu 10.04开发板:Linux 2.6.32.2@2440Target: arm-none-linux-gnueabigcc version 4.4.3编译minigui3.0并移植需要的文件有(基本上都是比较新的版本,有些库文件在我尝试后还是选择了比较旧的版本):FreeType库:minigui字体引擎freetype-1_3_1.tar.gzJPEG库:minigui显示jpeg图片jpegsrc.v8c.tar.gzpng库:minigui显示png图片libpng-1.0.59.tar.gzzlib库:minigui数据压缩函数库zlib-1.2.6.tar.gzminigui所用到的资源minigui-res-be-3_0_12.tar.gzminigui核心库libminigui-gpl-3_0_12.tar.gzminigui样例mg-samples-3_0_12.tar.gzStep1:建立工作目录,如/home/profiles/minigui,将上述*.tar.gz放入该目录,并解压tar xzf freetype-1_3_1.tar.gztar xzf jpegsrc.v8c.tar.gztar xzf libpng-1.0.59.tar.gztar xzf zlib-1.2.6.tar.gztar xzf minigui-res-be-3_0_12.tar.gztar xzf libminigui-gpl-3_0_12.tar.gztar xzf mg-samples-3_0_12.tar.gzStep2:[编译Freetype库]cd freetype-1.3.1/(A)./configure --host=arm-linux --enable-static --prefix=/usr/local/minigui修改Makefile第12行all: ttlib ttest ttpo为all: ttlib ttpo第34行注释(或删)掉,即#cd $(FTTESTDIR); $(MAKE) -f $(MAKEFILE) install 否则make就会出现下面的错误ftdump.c:172:1: error: pasting "." and "glyph_object" does not give a valid preprocessing tokenftdump.c:182:1: error: pasting "." and "first_instance" does not give a valid preprocessing tokenftdump.c:191:1: error: pasting "." and "second_instance" does not give a valid preprocessing tokenftdump.c:201:1: error: pasting "." and "face_object" does not give a valid preprocessing tokenftdump.c:202:1: error: pasting "." and "glyph_object" does not give a valid preprocessing tokenftdump.c:203:1: error: pasting "." and "second_instance" does not give a valid preprocessing token(B)make(C)make install[编译JPEG库]cd jpeg-8c/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-ar如(后面的库的编译修改configure亦如此):## M4sh Initialization. #### -------------------- ### Be more Bourne compatibleCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-arDUALCASE=1; export DUALCASE # for MKS shif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :(B)./configure --prefix=/usr/local/minigui --build=i386-linux \--host=arm-linux --target=arm-linux --enable-shared(C)make(D)make install[编译PNG库]cd libpng-1.0.59/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-ar(B)./configure --prefix=/usr/local/minigui --build=i386-linux \--host=arm-linux --target=arm-linux(C)make(D)make install[编译zlib库]cd zlib-1.2.6/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-ar(B)./configure --prefix=/usr/local/minigui --shared(C)make(D)make install[编译资源库]cd minigui-res-be-3.0.12/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAR=arm-linux-ar(B)./configure --prefix=/usr/local/minigui(C)make(D)make install[编译核心库]cd libminigui-gpl-3.0.12/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-arCFLAGS="-I/usr/local/minigui/include-I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "CPPFLAGS="-g -I/usr/local/minigui/include -I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "CXXFLAGS="-g -I/usr/local/minigui/include -I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "(此处要特别注意,我用的编译器所在目录为/opt/FriendlyARM/toolschain/4.4.3,注意跟自己环境的差异,下面的示例库编译亦然)(B)./configure --prefix=/usr/local/minigui --host=arm-linux \--target=arm-linux --build=i386-linux --with-osname=linux \--with-style=classic --with-targetname=fbcon --enable-autoial \--enable-rbf16 --disable-vbfsupport --enable-tslibial(上面的--enable-tslibial选项是minigui支持触摸屏必选的选项,后面会讲到)(C)make(D)make install[编译示例库]cd mg-samples-3.0.12/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-arCFLAGS="-I/usr/local/minigui/include-I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "CPPFLAGS="-g -I/usr/local/minigui/include -I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "CXXFLAGS="-g -I/usr/local/minigui/include -I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "(B)./configure --prefix=/usr/local/minigui --build=i386-linux \--host=arm-linux --target=arm-linux(C)make这里应该会出错,是因为Makefile里的参数不对,程序找不到链接库,这么多Makefile,需要修改哪一些呢?查看根目录下的Makefile(vi Makefile),(line 204)会发现:COMMON_SUBDIRS = same graphics housekeeper minesweeper ctrl_dlg \lf_skin font_text look_feel dbuff notebook same graphics ... notebook这几个目录会按顺序依次被make,查看刚才出错的信息,肯定是same首先没被编译通过。
tslib+Mnigui移植到2440总结

}
tslib与minigui中对于压力参数的规定刚好相反,tslib规定samp[0].pressure> 0是按下,samp[0].pressure == 0是手松开而事实是相反的
{
..................................................................
..................................................................
修改的代码
/* Read until we get a touch. */
*x = samp[middle].x;
else
*x = (samp[middle-1].x + samp[middle].x) / 2;
////////////////////////////////////////////////////////////////////////////
do {
if (ts_read_raw(ts, &samp[0], 1) < 0) {
perror("ts_read");
close_framebuffer();
exit(1);
}
} while (samp[0].pressure > 0);
do {
if (ts_read_raw(ts, &samp[0], 1) < 0) {
以上两点是我修改的地方,在各位达人的帖子中还看到了其他的一些修改,我开始也照搬用了,反而出错
minigui1.6.10移植

注:这里我上网搜了搜,有人说去掉最后的编译选项--enable-shared就可以了,我一试,好像就可以了,而且不管是libpng-1.2.18还是我下的libpng,源码目录里都没有libtool
[root]# make
下面创建一个目录,否则 make install 的时候会报错。注:这里我不要这一步也没有报错。
在 make 之前注意:从前面 libpng-1.2.18 的源码目录中把 libtool 拷贝过来,放在
/home/source/minigui/jpeg-6b目录下,否则会出现“make: ./libtool: command not found”错误。
另外要注意的是:不能使用系统的 libtool,因为这里要进行的是交叉编译。
MiniGUI 的编译需要一些库文件,缺省我们的 gcc 基本上都有这些库文件,所以不需要安装,可是现在要交叉编译了,交叉编译器可是不带这些库文件的,所以我们得首先自己编译这些库文件装到交叉编译器中去。
注意一点:库不一定要装最新的,库版本太新,MiniGUI 有可能不认识,像jpeg 库和 ttf 库就是这样,太新了反而用不了,所以要注意版本,以下的库都是我验证过可以和MiniGUI一起工作的,其它版本的库没试过,不保证能正确通过:)文中没有下载地址的文件大都可以在上下载。
(3)第三步:安装 jpeg 库
在/html/242232006010901.html(jpeg 库)下载到/root/cross/下面,同样,我用的是上提供的库
[root]# tar zxf jpegsrc.v6b.tar.gz
[root]# tar zxf libpng-1.2.18 .tar.gz
[root]# cd libpng-1.2.18
1_MiniGUI移植实验

广州致远电子有限公司
MagicARM2410教学实验开发平台
4.实验预习要求
必须先做<< 实验指导>> 必须先做 <<… 实验指导>> 第 5 、6 章的实验 ,在 RedHat <<… >>第 章的实验, 操作系统上建立交叉编译环境, Linux 9.0操作系统上建立交叉编译环境,掌握交叉编译 和下载Linux应用程序到MagicARM2410上并运行 Linux应用程序到MagicARM2410上并运行; 和下载Linux应用程序到MagicARM2410上并运行; <<… 仔 细 阅 读 <<… 实 验 指 导 >> 第 1 章 的 内 容 , 了 解 MagicARM2410 实验箱的硬件结构, 2410实验箱的硬件结构 MagicARM2410 实验箱的硬件结构 , 注意彩色液晶屏驱动 电路; 电路; 阅读MiniGUI的文档<<MiniGUI用户手册>> MiniGUI的文档<<MiniGUI用户手册>>、 阅读MiniGUI的文档<<MiniGUI用户手册>>、<<MiniGUI 编程指南>> 了解MiniGUI的基本特点和应用配置选项, >>, MiniGUI的基本特点和应用配置选项 编程指南>>,了解MiniGUI的基本特点和应用配置选项, 以及应用程序的编写。 以及应用程序的编写。
广州致远电子有限公司
MagicARM2410教学实验开发平台
2.实验设备
硬件: 硬件: PC机 PC机 1台 MagicARM2410教学实验开发平台 MagicARM2410教学实验开发平台 1台 USB鼠标 USB鼠标 1个 USB键盘 USB键盘 1个 软件: 软件: 9.0操作系统 安装有Autoconf 操作系统( Autoconf和 RedHat Linux 9.0操作系统(安装有Autoconf和 Automake工具 工具) Automake工具) 嵌入式Linux Linux开发环境 嵌入式Linux开发环境 MiniGUILinux)软件 MiniGUI-STR(for Linux)软件
minigui移植到hi3531

miniGUI3.0.12移植到Hi3531分类:linux2013-04-22 10:01 412人阅读评论(1) 收藏举报minigui hi3531miniGUI3.0.12移植到Hi3531之前一直在用miniGUI2.0的版本,看到现在miniGui3.0 GPL开源了,所以下载来移植到Hi3531平台上,下面阿来详细将这个移植过程记录如下:一、移植资源包:下载miniGUI3.0.12组件简单介绍一下各个库:freetype:字体qvfb2和gvfb::虚拟显存,主要用在pc机上做仿真jpegsrc:显示jpeg图像时要用到的库libpng:显示png图像时要用到的库zlib:PNG压缩算法libminigui:minigui3.0.12的核心库minigui-res:minigui3.0.12资源文件,包括字体、图标、位图等mg-samples:minigui3.0.12例子程序minigui3.0.12可选组件: libmg3d(3D支持)、libmgi(提供输入接口)、libmgp(提供打印机接口的支持)、libmgplus(2D矢量图支持和图像加速)、libmgutils(提供一些常用对话框的模板),可以根据自己的需要来使用。
在这里我只安装了freetype,zlib,,jpegsrc,,libpng,libmgplus以及res,主库,和sample。
这里提示下,下面操作的安装目录是:/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi 这里你自己选择合适的安装目录就可以了。
二、编译zlib库编译配置脚本:1.[root@localhost]CC=arm-hisiv100nptl-linux-gcc \2.CXX=arm-hisiv100nptl-linux-g++ \3.LD=arm-hisiv100nptl-linux-ld \4.AS=arm-hisiv100nptl-linux-as \5.AR=arm-hisiv100nptl-linux-ar \6. ./configure \7.--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \8. --shared9.[root@localhost] make10.[root@localhost] make install三、编译png库编译配置脚本:1.[root@localhost]CC=arm-hisiv100nptl-linux-gcc \2.CXX=arm-hisiv100nptl-linux-g++ \3.LD=arm-hisiv100nptl-linux-ld \4.AS=arm-hisiv100nptl-linux-as \5.AR=arm-hisiv100nptl-linux-ar \6. ./configure \7.--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \8.--build=i386-linux \9.--host=arm-hisiv100nptl-linux \10.--target=arm-hisiv100nptl-linux \11.[root@localhost] make12.[root@localhost] make install注意;如果编译时报错提示zlib库没有安装的,解决方法:在编译之前(我是在configure之前),手动指定一下参数:1.export CFLAGS="-I/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/include"2.export LDFLAGS="-L/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/lib"四、编译jpeg库编译配置脚本:1.[root@localhost]CC=arm-hisiv100nptl-linux-gcc \2.CXX=arm-hisiv100nptl-linux-g++ \3.LD=arm-hisiv100nptl-linux-ld \4.AS=arm-hisiv100nptl-linux-as \5.AR=arm-hisiv100nptl-linux-ar \6. ./configure \7.--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \8.--build=i386-linux \9.--host=arm-hisiv100nptl-linux \10.--target=arm-hisiv100nptl-linux \11. --enable-shared \12.[root@localhost] make13.[root@localhost] make install五、编译freetype库编译配置脚本:1.[root@localhost]./configure \2.--host=arm-hisiv100nptl-linux \3.--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \4. --enable-static \运行配置脚本后,修改:1.[root@localhost] vim config.cache2.# 修改如下行3.ac_cv_path_LD=${ac_cv_path_LD=arm-linux-gnu-ld}4.ac_cv_prog_CC=${ac_cv_prog_CC=arm-linux-gnu-gcc}5.ac_cv_prog_CPP=${ac_cv_prog_CPP='arm-linux-gnu-gcc -E'}6.#重新配置,再运行一次配置脚本7.#修改Makefile文件,以跳过编译test目录。
MiniGUI3.0+tslib1.4移植过程

只支持 1.3.1 版本的 ttf 库:
注意:MiniGUI 的文档说只支持 1.3.1 版本的 ttf 库,不要把版本弄错了
[root@localhost jpeg-6b]# cd /root/cross/
[root@localhost cross]# tar zxvf freetype-1.3.1.tar.gz
注意:这里配置指向/usr/local/arm/arm-2008q3-linux/arm-none-linux-gnueabi 目录,会自动安 装在/usr/local/arm/arm-2008q3-linux/arm-none-linux-gnueabi / [include,lib] 目录下。
./configure CC=arm-none-linux-gnueabi-gcc --build=i686-pc-linux --target=arm-linux
--host=arm-linux
prefix=/usr/local/arm/arm-2008q3-linux/arm-none-linux-gnueabi
第四步:安装 jpeg 库
[root@localhost libpng-1.2.18]# cd /root/cross/
[root@localhost cross]# tar zxvf jpegsrc.v6b.tar.gz
[root@localhost cross]# cd jpeg-6b/
[root@localhost jpeg-6b]#
[include,lib] ,假如 include 中没有 zlib.h 之类的头文件,lib 中没有 libz.so.1.2.3 等
MiniGui安装和移植

MiniGui安装和移植一MiniGui的安装首先从MiniGui官网上下载安装文件。
一共需要下载三个压缩文件:libminigui-1.6.10.tar.gz、minigui-res-1.6.10.tar.gz、mg-samples-1.6.10.tar.gz。
安装步骤如下:一:解压缩安装包。
# tar xzvf libminigui-1.6.10.tar.gz二:运行配置程序。
# cd libminigui-str-1.6.10#./configure –disable-jpgsupport –disable-pngsupport三:编译MiniGui源代码# make四:安装MiniGui函数库# su –c “make install”五:查看安装好的库文件MiniGui的动态库文件和静态库文件都被安装到了/usr/local/lib目录下:#ls –l /usr/local/lib而MiniGui相关的头文件则被安装到了/usr/local/include/minigui/目录下Ls –l /usr/local/include/minigui运行时需要配置文件在/usr/local/etc/目录下Ls –l /usr/local/etc这样便完成了MiniGui函数库libminigui-1.6.10.tar.gz的安装接下安装资源包资源包minigui-res-1.6.10.tar.gz并不需要编译,直接安装即可。
解压缩文件#tar xzvf minigui-res-1.6.10.tar.ga打开minigui-res-1.6.10文件#cd minigui-res-1.6.10安装函数库# su –c ”make install”默认情况下,这些资源文件被安装在/usr/local/lib/minigui/res目录下# la /usr/local/lib/minigui/res解压示例代码包# tar mg-samples-1.6.10.tar.gz 打开mg-samples-1.6.10文件# cd mg-samples-1.6.10#./configure编译#make成功编译完成后,就可以在mg-samples-1.6.10/src目录下看到一些被编译好的可执行程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.实验步骤
(1) 按照实验原理说明,在PC机上安装好MiniGUI-STR 所有源程序。 (2) 按 照 实 验 原 理 说 明 , 交 叉 编 译 MiniGUI , 安 装 MiniGUI静态库 。 (3) 在 mg-samples-str-1.6.2/src 目录下建立源文件 hello.c,编写一个在液晶屏上显示“Hello MiniGUI!” 字符串的MiniGUI应用程序 。 (4) 在 mg-samples-str-1.6.2 目录下编写一个配置脚 本build-magic2410,用来配置交叉编译选项。 (5) 修 改 mg-samples-str-1.6.2/src 目 录 下 的 Makefile.am文件,设置编译hello.c文件。
MiniGUI
1.实验目的
掌握MiniGUI在ARM嵌入式Linux操作系统下的应用配 置和交叉编译。
2.实验设备
软件: Ubuntu系统嵌入式Linux开发环境 MiniGUISTR(for Linux)软件
3.实验效果
学 习 移 植 MiniGUI-STR(for Linux) 软 件 到 MagicARM2410 的 基 本 方 法 , 然 后 编 写 一 个 简 单 的 MiniGUI应用程序,在液晶屏上显示“Hello MiniGUI!” 字符串。
6.实验步骤
(10) MiniGUI不能在Linux的图形界面模式下运行,所 以需要修改实验箱上 Linux 系统的 /etc/init.d/rcS 文 件来禁止启动 QT ,如下所示,修改完成后保存文件并 重新启动系统。
…… #qtopia & ……
(11) 在PC机端使用minicom软件操作实验箱(即操作实 验箱主板上的Linux操作系统),执行以下指令,即可 运行MiniGUI程序,正确运行程序后在实验箱的液晶屏 幕上应显示一个“Hello MiniGUI!”的窗口。
5.实验原理
在PC机上安装MiniGUI 启动 RedHat Linux 9.0 系统时,以 root 用户登录系 统; 在 /home 目录下新建一个文件夹minigui,从产品配 套 光 盘 上 把 MiniGUI-STR 的 libminigui-str1.6.2.tar.gz 、 minigui-res-str-1.6.tar.gz 和 mgsamples-str-1.6.2.tar.gz文件复制到此文件夹内; 在“终端”窗口执行以下命令完成解压:
#cd #tar #tar #tar /home/minigui zxf lib*.gz zxf mini*.gz zxf mg*.gz
5.实验原理
交叉编译MiniGUI库 针对 MagicARM2410 实验箱,需要专门编写一个配置 脚本 buildlib-magicarm2410( 用来配置 MiniGUI 和交 叉 编 译 选 项 ) , 并 将 文 件 请 保 存 在 libminigui-str1.6.2目录下; 在“终端”窗口执行以下命令完成MiniGUI-STR的编 译和库文件的安装:
5.实验原理
MiniGUI的使用 要在目标板的Linux操作系统上运行MiniGUI应用程序, 首先要使用宿主机(即PC机)对MiniGUI的源代码进行编 译(交叉编译),生成MiniGUI静态链接库文件。然后, MiniGUI应用程序也在宿主机上进行交叉编译,并且与 MiniGUI静态链接库链接生成目标板可运行的FLAT格式 文 件 。 最 后 , 在 目 标 板 的 Linux 操 作 系 统 上 搭 建 MiniGUI 运行环境,即安装 MiniGUI 的资源文件和运行 时配置文件,再将MiniGUI应用程序(FLAT格式文件)下 载和运行。
5.实验原理
MiniGUI的运行模式 MiniGUI-Threads 模式,多线程的应用模式,运行 在MiniGUI-Threads上的程序可以在不同的线程中建立 多个窗口,但所有窗口在同一个进程或者地址空间中 运行; MiniGUI-Lite 模 式 , 多 进 程 的 应 用 模 式 , 运 行 在 MiniGUI-Lite 上的每一个程序是单独的进程,每一个 进程也可以建立多个窗口; MiniGUI-Standalone 模式,独立进程的应用模式, 此时MiniGUI程序以独立进程的方式运行,既不需要多 线程的支持,也不需要多进行的支持,这种运行模式 适合于功能单一的应用场合。
6.实验步骤
(8) MiniGUI 运行时需要使用 MiniGUI.cfg( 即 MiniGUI 运行时配置文件),主要配置使用的图形引擎、输入引 擎、窗口字体等等。 (9) 连接好MagicARM2410实验箱硬件(包括串口线、网 线和USB键盘鼠标),将实验箱主板上的JP1、JP7跳线 短接,JP8跳线断开。启动实验箱主板上的Linux,然 后使用NFS复制以下目录或文件到实验箱主板的指定目 录下。在MagicARM2410上需要建立相应的子目录。
Байду номын сангаас
5.实验原理
MiniGUI-STR软件包 libminigui-str-1.6.2.tar.gz , MiniGUI-STR 函 数 库源代码; minigui-res-str-1.6.tar.gz , MiniGUI-STR 所 使 用的资源文件,包括基本字体、图标和位图等等; mg-samples-str-1.6.2.tar.gz , MiniGUI-STR 应 用 示例程序; mde-str-1.6.2.tar.gz , MiniGUI-STR 的 演 示 程 序 包;
6.实验步骤
(6) 打开“终端”窗口,执行以下指令编译MiniGUI应 用程序。编译通过后,在 mg-samples-str-1.6.2/src 目录下会生成hello文件(FLAT格式文件)。
#cd /home/minigui/mg-samples-str-1.6.2 # ./build-magic2410 #make clean #make
/> cd /usr/pro /usr/pro> ./hello
6.实验步骤
(12) 使用鼠标点击“×”关闭窗口按钮,则 MiniGUI 窗口被关闭,程序运行结束。在 minicom 软件上按下 CTRL+C键退出MiniGUI,返回到命令操作状态。
(7) 打开“终端”窗口,执行以下指令安装资源文件。 执行完以下指令后,在/usr/local/lib/minigui目录 下会产生一个res目录,该目录下保存有MiniGUI的资 源文件(如图片、图标和字体等等)。
#cd /home/minigui/minigui-res-str-1.6 #make install
4.实验原理
MiniGUI简介 MiniGUI项目的最初目标是为基于 Linux 的实时嵌入 式操作系统提供一个轻量级的图形用户界面支持系统, 发展到今天,MiniGUI已进入成熟和稳定阶段,并且所 支 持 的 操 作 系 统 已 不 仅 仅 限 于 Linux , 它 还 可 以 在 µCLinux、µC/OS-II、eCos、VxWorks等系统上运行;
5.实验原理
MiniGUI-STR功能特性 支 持 MiniGUI-Threads 、 MiniGUI-Lite 和 MiniGUIStandalone三种运行模式; 完整的窗口/消息API及基本的绘图API; 两种GAL图形引擎:FrameBuffer和qvfb; 字符集的支持: ISO8859-1 ~ ISO8859-16 、 GB2312 和BIG5; RBF及VBF字体的支持,在资源包中包含设备字体; 支持 Windows BMP 、 GIF 、 JPEG 和 PNG 图像文件格式; 窗口支持PC 3D、Flat和Phone三种风格; 基本控件包括:Static、Button、ListBox 等等。