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目录下看到一些被编译好的可执行程序。
嵌入式Linux的MiniGUI研究和移植
嵌入式Linux的MiniGUI研究和移植摘要:分析嵌入式操作系统下典型的图形用户界面MiniGUI的结构和特点,并提出将其移植到SUNPLUS的DVD720上的方案。
关键词:图形用户界面(GUI) 嵌入式系统Frame Buffer引言1 嵌入式Linux下的GUI概况1.1 GUI在嵌入式系统中的地位随着嵌入式系统的广泛应用,PDA、机顶盒、DVD/VCD播放机及WAP手机已经迅速普及。
图形用户界面(GUI)的广泛流行,是当今计算机技术的重大成就之一。
它极大地方便了非专业用户的使用,因此实时嵌入式系统对GUI的需求越来越明显,而这一切均要求有一个高性能、高可靠的GUI 的支持。
由于嵌入式系统实时性要求非常高,对GUI的要求也更高。
这些系统一般不希望建立在庞大累赘的、非常消耗系统资源的操作系统和GUI之上,比如Windows或X Window,太过庞大和臃肿。
这样,这些系统对轻型GUI的需求更加突出。
另外嵌入式系统往往是一种定制设备,它们对GUI的需求也各不相同。
有些系统只要求一些图形功能,而有些系统要求完备的GUI支持,因此,GUI也必须是可定制的。
嵌入式系统对GUI的基本要求包括轻型、占用资源少、高性能、高可靠性及可配置[1]。
1.2 目前嵌入式系统中GUI的实现尽管实时嵌入式系统对GUI的需求越来越明显,但目前GUI的实现方法各有不同[1]:①某些大型厂商有能力自己开发满足自身需要的GUI系统。
②某些厂商没有将GUI作为一个软件层从应用程序中剥离,GUI的支持逻辑由应用程序自己来负责。
③采用某些比较成熟的GUI系统,比如Mini GUI、MicroWindows 或者其它GUI系统。
比较常用的有如下几种GUI系统:紧缩的X Window 系统、MiniGUI、MicroWindows、OpenGUI及QT/Embedded 等。
下面简单介绍这些系统。
(1)MiniGUIMiniGUI[2]由原清华大学教师魏永明先生开发,是一种面向嵌入式系统或者实时系统的图形用户界面支持系统。
miniGUI移植
MiniGUI 1.3.3 移植详解作者:大漠孤狼 E-Mail:yuqiang0107@最近移植了 MiniGUI 1.3.3 到一个开发板上,中间遇到许多问题,在论坛上发问题,结果也没多少人回我,就算偶尔有回的,基本上回答也没有什么用,网上找不到一个完整的移植文章,所以就决定把自己这次移植摸出来的一些方法写出来,给像我一样的小菜鸟做个参考吧。
本文不教你怎么写驱动,只是教怎么样在最短的时候在你的PC机上搭建起开发环境,同时在你的板子上跑起MiniGUI 来,这样你就可以在PC 上开发好程序,调试完毕,然后交叉编译一下,直接Copy到板子上就可以了。
首先,你需要下载的MiniGUI 的包:/download/libminigui-1.3.3.tar.gz/download/minigui-res-1.3.3.tar.gz这两个包的下载需要你在 上注册过才可以下载,免费注册的,自己去下吧/downloads/minigui13/mde-1.3.0.tar.gz图形界面程序/downloads/minigui13/mg-samples-1.3.0.tar.gz一些小例子好,首先就下载这几个包吧,后面还有需要下载的包,后面再说1.PC环境的搭建首先你需要一个 Linux 环境,我安装的是 RedHat 9.0 安装时记着选 everything ,这样可以避免到时候编译少了东西。
这里搭建的环境是让 MiniGUI 在你的 PC 上可以跑起来,这样以后你开发程序就可以只在 PC 上开发,调试好,最后交叉编译一下放到板子上就行了。
后面会讲怎么为板子编译MiniGUI ,耐心的看吧:)首先建立自己的开发目录[Root]# mkdir /opt[Root]# cd /opt[Root]# mkdir st2410 //这个是我的板子,[Root]# chmod 777 st2410 //给一般用户操作权限[user]# cd /opt/st2410 //进到目录中去,在这个目录下工作,用普通用户来工作把 libminigui-1.3.3.tar.gz 解开[user]# tar zxf libminigui-1.3.3.tar.gz[user]# tar zxf minigui-res-1.3.3.tar.gz编译 libminigui ,这个是 minigui 运行所必需的库文件,必须编译成功[user]# cd libminigui-1.3.3[user]# ./configure //最简单的编译方式,让它自己去配置,这里采用缺省的Thread 模式而不是Lite模式,因为这种方式在 PC 机上使用最方便,后面移到板子上再改成 Lite 模式即可注意屏幕上的输出,特别是下面几条checking for FrameBuffer console support... yeschecking for pthread library... yeschecking for TT_FreeType_Version in -lttf... yeschecking for T1_InitLib in -lt1... nochecking for jpeg_std_error in -ljpeg... yeschecking for png_check_sig in -lpng... yes其中–lttf –lpng 必须是 yes ,不然后面你的程序肯定会有问题,如果这里不是 yes 的话,肯定是你的 Redhat 9 安装不对,告诉过你安装时选 everything ,你选了吗???其中 ttf 库是对 TrueType 字体的支持,png 库是对 png 图形的支持,MiniGui 里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。
MiniGUI的移植
在AT91SAM9261EK上移植MiniGUI当前流行的图形用户界面有MiniGUI、ucGUI、QT/Embedded等,ucGUI需要付费才能使用,QT/Embedded占用资源多,内存消耗大。
MiniGUI是遵循GPL条款发布的自由软件,目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统,与其他GUI比,MiniGUI的特点是轻型、占用资源少。
交叉编译工具:arm-linux-gcc-4.3.2宿主机:fedora7 ——linuxLinux kernel: 2.6.21开发平台:A T91SAM9261EK一、准备相关资源Libminigui-1.6.10.tar.gz MiniGUI函数库源代码Miniguires-1.6.10.tar.gz MiniGUI所使用的资源,包括基本字体、图标、位图等。
Mg-samples-str-1.6.10.tar.gz MiniGUI的演示程序。
Mde-1.6.10.tar.gz MiniGUI 图像界面应用程序二、建立相关目录、解压缩文件⑴mkdir /mtemp/minigui 存放源文件⑵展开各个文件:tar –xvzf libminigui-1.6.10.tar.gztar –xvzf miniguires-1.6.10.tar.gztar –xvzf mg-samples-str-1.6.10.tar.gztar –xvzf mde-1.6.10.tar.gz在/mtemp/minigui/下面会生成四个对应的文件。
三、交叉编译MiniGUi在宿主机上建立/usr/local/minigui用于存放编译安装生成的库文件⑴libminigui的编译安装cd libminigui-1.6.10运行配置脚本文件:./configure –prefix=/usr/local/minigui –build=i386-linux –target=arm-linux –host=arm-linux执行完后生成Makefile文件,然后依次执行make make install命令,如果没有错误出现,那么成功,MiniGUI的函数库和头文件以及配置文件等资源被安装在/usr/local/minigui下面。
Minigui在uClinux 上的移植心得
Minigui在uClinux 上的移植心得1、下载minigui源码1.3.31.3.3这两个包的下载需要你在上注册过才可以下载,免费注册的,自己去下吧1.3.0 图形界面程序1.3.0 一些小例子把源码文件复制到/home/liu/minigui目录下,解开源码[root@localhost minigui]#tar zxvf 1.3.3 minigui]#tar zxvf 1.3.3 minigui]#tar zxvf 1.3.0 minigui]#tar zxvf 1.3.0环境的搭建首先你需要一个Linux 环境,我安装的是RedHat 安装时记着选everything,这样可以避免到时候编译少了东西。
这里搭建的环境是让MiniGUI 在你的PC 上可以跑起来,这样以后你开发程序就可以只在PC 上开发,调试好,最后交叉编译一下放到板子上就行了。
把 1.3.3 解开[user]# tar zxf[user]# tar zxf编译libminigui ,这个是minigui 运行所必需的库文件,必须编译成功[user]# cd libminigui-1.3.3[user]# ./configure . yeschecking for pthread library... yeschecking for TT_FreeType_Version in -lttf... yeschecking for T1_InitLib in -lt1... nochecking for jpeg_std_error in -ljpeg... yeschecking for png_check_sig in -lpng... yes其中–lttf –lpng 必须是yes ,不然后面你的程序肯定会有问题,如果这里不是yes 的话,肯定是你的Redhat 9 安装不对,告诉过你安装时选everything ,你选了吗其中ttf 库是对TrueType 字体的支持,png 库是对png 图形的支持,MiniGui 里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。
arm-linux学习笔记之minigui移植
arm-linux学习笔记之minigui移植/u3/90065/showart_1793732.htmlminigui-1.6.10在s3c2410平台的移植开发板:SBC2410CPU:S3C2410linux-2.6.25.5fs:jffs2LCD:TFT320 X 240PC:fc8 linux-2.6.25.5(一)准备工作下载软件包libminigui-1.6.10.tar.gzmg-samples-1.6.10.tar.gzminigui-res-1.6.10.tar.gzmg-samples-str-1.6.2.tar.gz在/home/arm/创建一个minigui的目录,然后把这些载在的软件包放在该目录下,在分别解压缩。
再在/home/arm/minigui下创建一个miniguitmp的目录,用于安装编译以后的库文件。
(二)编译libminigui首先修改configure文件,在文件的开头加入交叉编译的路径CC=arm-9tdmi-linux-gnu-gccCPP=arm-9tdmi-linux-gnu-cppLD=arm-9tdmi-linux-gnu-ldAR=arm-9tdmi-linux-gnu-arRANLIB=arm-9tdmi-linux-gnu-ranlibSTRIP=arm-9tdmi-linux-gnu-strip然后执行[root@localhost libminigui-1.6.10]# ./configure --prefix=/home/arm/minigui/miniguitmp/ \--build=x86_64-linux \--host=arm-unknown-linux \--target=arm-unknown-linux[root@localhost libminigui-1.6.10]# make[root@localhost libminigui-1.6.10]# make install这个过程基本上不会有什么错误的执行make install的时候会把编译以后的资源安装到/home/arm/minigui/miniguitmp中,在这之下会有etc include lib usr几个目录产生。
MiniGUI3.0在mini6410上的移植
MiniGUI3.0在mini6410上的移植简介MiniGUI 是一款面向嵌入式系统的高级窗口系统(Windowing System)和图形用户界面(Graphical User Interface,GUI)支持系统,由魏永明先生于1998 年底开始开发。
2002 年,魏永明先生创建北京飞漫软件技术有限公司,为MiniGUI 提供商业技术支持,同时也继续提供开源版本,飞漫软件是中国地区为开源社区贡献代码最多的软件企业。
最后一个采用GPL 授权的MiniGUI 版本是 1.6.10,从MiniGUI 2.0.4 开始MiniGUI 被重写并使用商业授权,从3.0.12开始,部分版本使用GPL授权。
历经十余年时间,MiniGUI 已经成为性能优良、功能丰富的跨操作系统嵌入式图形用户界面支持系统,支持Linux/uClinux、eCos、uC/OS-II、VxWorks、ThreadX、Nucleus 、pSOS、OSE 等操作系统和数十种SoC芯片,已验证的硬件平台包括ARM-based SoCs、MIPS based SoCs、IA-based SoCs、PowerPC、M68K(DragonBall /ColdFire)、Intel x86 等等。
准备工作交叉编译器友善提供,具体安装参考mini6410的使用手册;源码的下载从miniGUI官网上下载,需要有新浪账号或者twitter账号。
下面是我下载的版本。
[root@localhost minigui]# ls -l *.tar.gz-rwxrw-rw-. 1 root root 1427072 Jan 16 17:30 freetype-1_3_1.tar.gz-rw-rw-r--. 1 root root 63582 Jan 16 17:31 gvfb-1_0_0.tar.gz-rw-rw-r--. 1 root root 602762 Jan 16 17:32 qvfb2-2_0.tar.gz-rwxrw-rw-. 1 root root 557220 Feb 11 00:56 zlib-1.2.6.tar.gz-rwxrw-rw-. 1 root root 1059513 Feb 11 00:55 libpng-1.5.8.tar.gz-rwxrw-rw-. 1 root root 986681 Feb 10 23:42 jpegsrc.v8c.tar.gz-rw-rw-r--. 1 root root 340656 Jan 16 17:33 libmg3d-1_0_2.tar.gz-rw-rw-r--. 1 root root 1545209 Jan 16 17:34 libmgi-2_0_4.tar.gz-rw-rw-r--. 1 root root 1116885 Jan 16 17:33 libmgp-1_2_2.tar.gz-rw-rw-r--. 1 root root 648207 Jan 16 17:34 libmgplus-1_2_4.tar.gz-rw-rw-r--. 1 root root 659702 Jan 16 17:33 libmgutils-1_0_4.tar.gz-rw-rw-r--. 1 root root 3202804 Jan 17 00:29 libminigui-gpl-3_0_12.tar.gz-rw-rw-r--. 1 root root 2608473 Jan 16 17:29 mg-samples-3_0_12.tar.gz-rw-rw-r--. 1 root root 3449215 Jan 16 17:29 minigui-res-be-3_0_12.tar.gz官网上有几个库的版本太低,所以需要自己去网上下载,其中jpegsrc.v8c.tar.gz、libpng-1.5.8.tar.gz和zlib-1.2.6.tar.gz都是从网上找的最近版本(png和zlib这两个soucefoge上都有,前面一个是网上搜的,所以不能保证链接长期有效,但是网上搜一下还是比较容易找到的)。
MiniguiV1.3.3在uClinux中的移植经验总结[转]
MiniguiV1.3.3在uClinux中的移植经验总结[转]Minigui V1.3.3在uClinux中的移植经验总结 [转]经过一个星期的努力,终于将Minigui移植到我的ARM7开发板上了,在这个过程中我遇到了很多困难和问题,但是通过网络,通过以前很多前辈在网络上分享的经验,终于取得成功,也让我更加体会到只有大家都互相帮助,互相分享经验才能使大家都受益。
所以基于这一点,我将我的移植过程分享给大家,并且写得尽量详细点,希望给大家一些帮助,使后来者少走一些弯路。
有不对的地方,欢迎大家板砖!首先说明一下我的开发平台,我用的是Samsung S3C44B0X芯片的开发板,已经移植好的uClinux操作系统和FrameBuffer驱动。
我的uClinux安装在"/s3c44b0fu/uClinux-dist"目录下,交叉编译工具安装在"/usr/local/arm-elf"目录下。
具体步骤:一. 从网站下载libminigui-1.3.3.tar.gz, mde-1.3.0.tar.gz, mg-samples-1.3.0.tar.gz和minigui-res-1.3.3.tar.gz四个压缩文件,并将这四个文件保存到交叉编译环境的目录下,因为我的arm-elf-gcc交叉编译工具安装在"/usr/local/arm-elf"目录下,所以将minigui的四个压缩包同样拷贝到"/usr/local/arm-elf"目录下.二. 在终端中输入"cd /usr/local/arm-elf",进入minigui的四个压缩文件所在目录,然后分别执行"tar zxvf xxxxx.tar.gz"将这四个压缩包解压缩.解压后生成libminigui-1.3.3, mde-1.3.0, mg-samples-1.3.0和minigui-res-1.3.3四个文件夹.三. 1) 进入minigui-res-1.3.3文件夹内,修改config.linux,在prefix = $(TOPDIR)/usr/local/后添加我们的交叉编译安装目录arm-elf,即prefix = $(TOPDIR)/usr/local/arm-elf.2) cd minigui-res-1.3.33) make install四. cd mde-1.3.0./configuremakecd mg-samples-1.3.0./configuremake五. 1) 编写交叉编译minigui函数库的配置脚本domain.sh.domain.sh的具体内容为:#!/bin/shrm config.cache config.status -fCC=arm-elf-gcc \CFLAGS="-I/s3c44b0fu/uClinux-dist/uClibc/include -Dlinux -D__linux__ -D__uClinux__ -Dunix " \LDFLAGS="-Wl,-elf2flt -static -Wl,-move-rodata -Wl,-L/s3c44b0fu/uClinux-dist/lib/uClibc/lib -Wl,-L/s3c44b0fu/uClinux-dist/linux-2.4.x/lib -Wl,-lc -Wl,-lm" \ ./configure --prefix=/usr/local/arm-elf \--build=i686-pc-linux-gnu \--host=arm-elf-linux \--target=arm-elf-linux \--disable-shared \--disable-lite \--disable-standalone \--enable-incoreres \--disable-flatstyle \--enable-newgal \--disable-nativegal \--disable-galcommlcd \--enable-galfbcon \--enable-adsial \--disable-micemoveable \ --disable-cursor \--disable-fblin1r \--enable-fblin8 \--disable-fblin16 \--disable-fblin32 \--disable-textmode \--enable-dummyial \--disable-mc68x328ial \--disable-nativeial \--disable-qvfbial \--disable-qpfsupport \--disable-ttfsupport \--disable-type1support \ --disable-latin9support \ --disable-gbksupport \--disable-big5support \--disable-unicodesupport \ --disable-savebitmap \--disable-imegb2312 \--disable-imegb2312py \ --disable-aboutdlg \--disable-savescreen \--disable-grayscreen \--enable-tinyscreen \--enable-video-fbcon \--disable-video-qvfb \--disable-nativegalqvfb \ --with-osname=uclinux编写好后拷贝到libminigui-1.3.3下.2) cd libminigui-1.3.33) sh domain.sh4) make5) make install6) ldconfig上面六步即完成了用arm-elf-gcc对minigui的函数库的交叉编译.可以进入/usr/local/arm-elf目录中,你会看到新增加了etc和lib两个文件夹,这两个文件夹就是我们刚才用arm-elf-gcc交叉编译minigui 的函数库所产生的结果,以后编译在目标板中运行的应用程序时,就会对这两个文件夹里的内容进行编译,从而产生适合于在arm开发板中运行的应用程序.六. 编写测试minigui的应用程序1) 测试程序miniguidemo.c其实就是从mg-samples-1.3.0中拷贝过来的helloworld.c程序,不过要根据具体的LCD做一点修改,如我的LCD是640x480的256色STN彩色屏,所以要将#ifdef _LITE_VERSIONSetDesktopRect(0, 0, 1024, 768);#endif修改为:#ifdef _LITE_VERSIONSetDesktopRect(0, 0, 640, 480);#endif根据你的不同的LCD修改这个参数,还可以修改这个窗体显示的位置,根据你的喜好修改即可.最后将编写好的miniguidemo.c保存到/s3c44b0fu/uClinux-dist/user/guidemo中(注:guidemo是我在user目录中新建的文件夹)2) 在/s3c44b0fu/uClinux-dist/user/guidemo中编写Makefile 文件,具体内容为:EXEC = miniguidemoOBJS = miniguidemo.oLDFLAGS=-L/s3c44b0fu/uClinux-dist/uClibc/liball: $(EXEC)$(EXEC): $(OBJS)$(CC) $(LDFLAGS) -o $@ $(OBJS) -lminigui -lmgext $(LIBPTHREAD) $(LIBM) $(LDLIBS) -elf2fltromfs:$(ROMFSINST) /bin/$(EXEC)clean:-rm -f $(EXEC) *.elf *.gdb *.o3) 修改user/Makefile为了让编译器编译上述添加的内容,在user/Makefile中添加一句(一般按照字母排列):dir _$(CONFIG_USER_GUIDEMO_MINIGUIDEMO) +=guidemo4) 修改config/config.inconfig/config.in文件中添加的内容会在对用户选项进行配置时反映出来。
基于ARM-Linux的MiniGUI的仿真与移植
基于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到2410的移植_dummy截图
MiniGUI到2410的 移植(哑终端)
大连理工大学软件学院 嵌入式系统工程系 赖晓晨
移植步骤
安装ARM9/Linux交叉编译工具链 安装库文件:
zlib、png、jpeg、libttf minigui 其他库
安装文件系统、修改配置文件 生成文件系统、烧写
安装交local/arm/2.95.3/arm-linux/lib中,将 运行libminigui环境所需要的库(37个,或者只拷 贝25个动态库及链接),以及minigui文件夹,拷 贝到: /opt/root/usr/local/lib、/opt/root/usr/lib 目录下,以及/opt/root/lib目录下:(都拷贝) 检查/opt/root/usr/local/lib/minigui/res/下是否有 那五个资源文件夹,如果没有,拷贝过来
安装jpeg图形库
安装字体库
安装minigui库
重生成几个文件
安装popt库
制作文件系统
从图形界面拷贝、粘贴。不 用要cp命令,否则拷贝的是 库文件,而不是链接
安装mde
最后检查一下库是否拷贝全
- 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 等等。