MiniGUI及其移植与应用
基于ARM-Linux的MiniGUI的仿真与移植.
基于ARM-Linux的MiniGUI的仿真与移植摘要:实现了一种全集成可变带宽中频宽带低通滤波器,讨论分析了跨导放大器-电容(OTA—C)连续时间型滤波器的结构、设计和具体实现,使用外部可编程电路对所设计滤波器带宽进行控制,并利用ADS软件进行电路设计和仿真验证。
仿真结果表明,该滤波器带宽的可调范围为1~26 MHz,阻带抑制率大于35 dB,带内波纹小于0.5 dB,采用1.8 V电源,TSMC 0.18μm CMOS工艺库仿真,功耗小于21 mW,频响曲线接近理想状态。
关键词:Butte近几年,随着嵌入式系统的日益发展和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以内。
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首先没被编译通过。
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)软件
MiniGUI1.6的安装与移植
国脉信息学院 Guomai Information College《 MiniGUI1.6的安装与移植》课程设计报告2008 级电子信息与通信工程系电子信息工程专业电子0801 班学号0830010144 姓名江彪2010 —— 2011 学年第二学期2011年5月15日一、《嵌入式系统》课程设计任务书---------(2011年05月)时间:2011.5.10----5.25地点:嵌入式实验室班级:电子0801指导教师:张平均1、设计课题:MiniGUI1.6的安装与移植2、设计目的:①.进一步巩固嵌入式系统的基本知识;②.了解MiniGUI的基本结构;③.练习MiniGUI的系统配置和编译安装;④.学习MiniGUI的交叉编译;⑤.掌握MiniGUI界面编程;⑥.学会查阅有关专业资料及设计手册。
3、设计任务及要求:①.掌握嵌入式系统开发环境建立和使用;②.掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;③.MiniGUI在PC上的安装、移植④.Linux基本输入输出驱动程序设计编译与移植⑤.基于MiniGUI的基本输入输出应用编程编译与移植⑥.编写设计说明书(方案的确定、设计环节的考虑及必要说明等)及设备的使用说明;4、设计参考书《MiniGUI编程手册》、《嵌入式教学实验指导书》《ARM嵌入式Linux应用开发入门》汪明虎欧文盛编《嵌入式Linux设备驱动开发详解》华清远见培训中心二、前期资源准备:1、准备源码包:① ubuntu.9.04安装包。
②交叉编译器源码包arm-linux-gcc-3.4.1.Tgz③已经能够在开发板上运行的文件系统包。
Qte_yaffs.gz.④ minigui安装包,主要包括libminigui-1.6.10.tar,minigui-res-1.6.10.tar,samples-1.6.10.tar,qvfb-1.1.tar等资源文件以及相应的库文件:libminigui-1.6.10.tar.Gzmg-samples-1.6.10.tar.Gzminigui-res-1.6.10.tar.Gzsamples-1.6.10.tar.Gzmde-1.6.10.tar.gzlibpng_src.gzjpegsrc.v6b.tar.gzqvfb-1.1.tar.gzlibcorss.shrescorss.Shsimplecorss.Shmdecorss.shlibreduce.Sh2、目录安排:①新建/tmp/linux目录,把所有的源码包都放在此目录下②新建工作目录/opt/FriendlyARM/mini2440存放内核源码③新建/work/minigui目录,存放minigui④新建/minigui-free/nfsroot目录,存放交叉编译的minigui3、PC环境及软件①windows xp 系统②vmware-6.5虚拟机+Ubuntu-9.0.4三、minigui在PC环境下的安装以及开发板上的移植1、MiniGUI在PC上的安装①安装miniGUI的资源文件,minigui-res-1.6.10.tar.gz,miniGUI所使用的资源,包括基本字体、图标、位图和鼠标、光标。
第02章 MiniGUI的安装和使用
计算机应用技术系
第2章 MiniGUI的安装和使用
2.1 MiniGUI的组成
2.2 建立MiniGUI的PC运行环境
2.3 第一个MiniGUI程序 2.4 MiniGUI编程基础
哈尔滨工业大学华德应用技术学院—计算机应用技术系—嵌入式系统方向
第2章 MiniGUI的安装和使用
哈尔滨工业大学华德应用技术学院—计算机应用技术系—嵌入式系统方向
2.1 MiniGUI的组成
资源包
minigui-res-str-1.6.tar.gz。 这是针对MiniGUI-STR 的基本资 源包,其中包含了运行MiniGUISTR 1.6.2 需要的基本字体 (ISO8859-1) 、鼠标光标、图 标和位图等文件,还包括16 点阵 中文简体(GB2312)一款。
1.嵌入式目标系统不具备开发能力
2.Linux嵌入式系统与PC具有相似性
练习MiniGUI程序的编写和调试,熟 悉MiniGUI的配置、编译操作、应用 程序结构和API函数,为在目标产品 上应用MiniGUI打下基础。
哈尔滨工业大学华德应用技术学院—计算机应用技术系—嵌入式系统方向
2.2 建立MiniGUI的PC运行环境
哈尔滨工业大学华德应用技术学院—计算机应用技术系—嵌入式系统方向
2.3.2 图形引擎和输入引擎
MiniGUI抽象层的优越性:
图形和输入抽象层的设计,为实现 MiniGUI 跨操作系统、跨硬件平台提供了 非常大的便利。
哈尔滨工业大学华德应用技术学院—计算机应用技术系—嵌入式系统方向
2.3.2 图形引擎和输入引擎
哈尔滨工业大学华德应用技术学院—计算机应用技术系—嵌入式系统方向
6.6 MiniGUI
新建目录 /usr/local/arm/2.95.3/armlinux/include/freetype1/freetype
E. 安装TrueType字体库(续)
mkdir -p /usr/local/arm/2.95.3/armlinux/include/freetype1/freetype cp *.h /usr/local/arm/2.95.3/arm-linux/include/freetype1/freetype
cd /opt/s3c2410 tar zxf /opt/linux/mg-samples-1.3.0.tar.gz cd mg-samples-1.30 ./configure make ls src
检查是否src目录下有例子程序
F. 修改MiniGUI配置文件
编辑
/usr/local/etc/MiniGUI.cfg文件
包含了MiniGUI的综合演示程序
ms-samples-1.3.0.tar.gz:
包含了MiniGUI的配套实例程序包
3. MiniGUI模拟环境构建
启动Red Hat Linux 9,用root登 陆 建立自己的开发目录
cd /opt
mkdir s3c2410 cd s3c2410
执行make install需要在armlinux下新建两个目录(见下页)
D. 安装jpeg图形库(续)
mkdir -p /usr/local/arm/2.95.3/arm-linux/man/man1
make install
jpeg图形库安装完毕
E. 安装TrueType字体库
mkdir -p /opt/s3c2410/libttf/extend
基于ARM和Linux的MiniGUI及其应用程序的移植
摘 要 : 年 来 , 着计 算机 技 术 、 讯 技 术 的迅 速 发 展 , 别是 互联 网 的 迅 速 普 及 和 3 计 算机 、 信 、 费 电 子 ) 一 的咖 速 , 型 近 随 通 特 C( 通 消 合 微
化 和 专业 化 成 为 发展 的新 趋 势 , 入 式 系统 开 发 已经 成 为 了信 息产 业 的 热 点 。基 于 ARM 硬 件 平 台及 Ln x操 作 系统 的嵌 入 式产 品 嵌 iu
l SN 1 0 — 0 4 S 09 34
E ma : f @cc . t n — i k j cc e. t: / dn sne. c Te : 6—5 —5 09 3 5 90 4 l+8 51 69 6 6 96
C mp t K o  ̄ g n e h o g o ue n we ea d T c n l y电脑 知 识 与技术 r d o
n n dsn rtm ce r ino e t n c i ac l a o f C ( mp tr o a y es et 3 co ue mmu i t n& C nu l t c mi o t n a dse i i t nb c mete i C nc i ao o s me e r ) c ma o c l a o e o n E c i, r i n p az i h ma
i hema n fcorw hih a e t t o e sofe be de st i a t c f cs hepr c s m d d~s t m sde l pm e t yse veo n .Thsis e st oc s h e a to i GU Io i sue tH hepr e soft e rpln ft M m he n t nu ltor , oc e r m cua o ii n,tpo ta sho o r p a ot de,kene, eyse h r i lo a lyssa d heLi x p af m pr e d fo a t lc nd to i rry w t e lntBo Loa r r l  ̄ s t m on t eboad,tas na e n d srbe a t od s fn ly tr pa st e s e aeM i i ec i sp rsoft c e , al ,i e lnt h ofw r n GU Ia d hep og a v l d tt heAR M ltor . he i n t r rm de eope on i o t p af m
MiniGUI在S3C2440上的移植及软件开发
Vo1 27 N O . . 6
萍 乡高 等专科学 校学报
J u n l fP n xa g C l g o r a ig in o l e o e
21 0 0年 1 月 2
De .2 0 Байду номын сангаас 01
M i GU I在 ¥3 44 上 的 移 植 及 软 件 开 发 ni C2 0
吴 新 华
( 乡高等专 科 学校 计算机 系 , 西 萍 乡 3 7 0 ) 萍 江 3 0 0
摘
要 : iiUI 目前 比较 成 熟 的嵌 入 式 Ln x系 统 的 图 形 用 户 界 面 , 具 有 小 巧 、 配 置 和可 移 植 等 特 点 。本 文 M nG 是 iu 它 可
分 析 了 Mii n GUI 的结 构 和 特点 , 细介 绍 了基 于 AR 和 L n x的 Mii I 移 植 与 实 现 的 过程 。 详 M iu nGU 的
关 键词 : 入 式 系 统 ; 形 用户 界 面 ; nG ; 植 嵌 图 Mii UI移
中 图分 类 号 : P 1 T 36 文献 标 识 码 : A 文 章 编号 :O 7 1 9 2 1 ) 6 0 6 一O 1 O —9 4 ( 0 0 0 — O 8 4
1 引 言
程 中建 立 多 个 窗 口, 所 有 的窗 口在 一个 进 程 中 运 但 行 。相 反 , 运行 在 Mii nGUI i —L t 的每个 程序是 单 e上 独 的进 程 , 每个 进程 也可 以建立 多个 窗 口。Mii UI nG
3 1Mii . nGUI 程序开 发
Mii nGUI 提供 了三种 窗 口类 型 : 主窗 口、 对话框
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目录下看到一些被编译好的可执行程序。
MiniGUI及其移植与应用
Tn n o 、 TE b d e 。 iy Wid w Q /m ed d X
由 软件 之 一 。 nG I 三 种 运 行 模 式 : ) ii U— hed: 行 p r rt r 其 中 d s t Mi U 有 i ( M nG IT ra s 1 运 as 、 me。 e i eko p用 于 管 理 Mii U 窗 口中 的 所有 主窗 nG I 在 MiiU — h a s 程 序 可 在不 同 的线 程 中建 立 多 个 窗 口 . nG IT r d 的 e 但 口 ;a e 线 程 用 于 采 集 键 盘 鼠 标 事 件 并 转 换 成 A I 消 息 ; pr r s P层 所有 的窗 E在 一 个 进 程 中运 行 。可 以配 合 的操 作 系统 有 uOi t e 线 程用 来 触 发定 时 器 事 件 。 l Cs 、 i r i m vw rsl u 。( Mi G Iie每 个 程 序 是 单 独 的 进 程 . 个 进 x ok 、nx 2 n U —l : i ) i t 每 程可 建 立 多 个 窗 口 . 有 具 备 完 整 ui 性 的操 作 系 统 才 可 运 只 n x特 行 这 一模 式 。3MiiU —t dl e可 以 以独 立 进 程方 式 运 行 而 () nG Is n ao , a n 不 需 要 其 它 任 何 支 持 ,这 种 方式 几 乎 可 以 支 持 所 有 操 作 系 统 。 M nG I 有 以 下特 点 : ) 巧 可 订 制 . 含 全 部 功能 的库 文 件 ii U 具 (小 1 包 只有 3 0 。() 定 性 , 移植 性 好 。() 面皮 肤 支持 。 户 可 0 k 2高稳 可 3界 用 通 过皮 肤 支 持 获得 华 丽外 观界 面 。() 供 了完 备 的 多 窗 E机 制 4提 l 及 消 息传 递 机 制 。() 富 的控 件 资 源 , 括 菜 单 、 度 条 、 表 5丰 包 进 列 框、 钮、 具栏等。() 按 工 6 多种 键 盘 布 局 支 持 , 字 符集 及 多字 体 多 支持 , 常见 的 图像 文 件 支持 。7多种 汉 字 输 入 法 支持 , idw 资 () wn o 源文 件 支持 。
嵌入式Linux环境下MiniGUI的研究与移植
嵌入式Linux环境下MiniGUI的研究与移植前言近年来随着嵌入式设备与市场需求的广泛结合,手机、PDA、DVD 播放机等产品的应用对可视化操作界面的简洁和方便提出了更高的要求,这都需要一个稳定可靠的高性能GUI 系统来提供支持。
图形用户界面(Graphic User Interface,简称GUI)的广泛流行是当今计算机技术的重要成就之一,它极大地方便了非专业用户的使用,人们可以通过窗口、菜单方便地进行操作。
由于嵌入式系统实时性要求高,同时嵌入式系统硬件配置又有限,所以对轻型GUI 的需求更加突出。
另外,嵌入式系统往往是一种订制设备,它们对GUI 的需求也各不相同,因此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) 提供了完备的多窗口机制;。
嵌入式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的移植
在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上的移植心得
M i n i g u i在u C l i n u x上的移植心得-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KIIMinigui在uClinux 上的移植心得1、下载minigui源码1.3.31.3.3这两个包的下载需要你在上注册过才可以下载,免费注册的,自己去下吧1.3.0 图形界面程序1.3.0 一些小例子2、把源码文件复制到/home/liu/minigui目录下,解开源码3、[root@localhost minigui]#tar zxvf 1.3.3 minigui]#tar zxvf 1.3.3 minigui]#tarzxvf 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 里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。
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 里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。
MiniGUI_for_uCOS实验
4. 实验预习要求
(1) 仔细阅读<<ARM 嵌入式系统实验教程(三)>>第 1 章的内容,了解 MagicARM2200 实验箱的硬件结构,注意彩色液晶屏驱动电路和键盘电路。
(2) 阅读 MiniGUI 的文档<<MiniGUI 用户手册>>和<<MiniGUI 编程指南>>,了解 MiniGUI 的基本特点和应用配置选项,以及应用程序的编写。
static void update_rect(PSD psd, int l, int t, int r, int b) {
int bak;
if(l > r) {
bak = l; l = r; r = bak; } if(t > b) { bak = t; t = b; b = bak; }
LCM_UpdateRects(l, t, r +1 - l, b +1 - t, psd->addr); }
(3) MiniGUI-STR 软件包 用于 MagicARM2200 教学实验开发平台的 MiniGUI-STR for uC/OS-II 共有 2 个目录, 说明如下:
MiniGUI_Lib,MiniGUI-STR 函数库源代码,即 libminigui。
2
广州周立功单片机发展有限公司 Tel:(020)38730977 38730977 Fax:38730925
static void fb_setpalette (PSD psd, int first, int count, GAL_Color *palette) { }
static void fb_getpalette (PSD psd, int first, int count, GAL_Color *palette) { }
minigui在车载导航终端中的应用
200516Microcontrollers &Embedded Systems 61 M i n i G U I在车载导航终端中的应用■苏州大学 韩飞 黄贤武 张庆峰 摘 要提出一种GPS 车载导航终端的设计方案,并针对电子地图导航所需的图形界面支持系统进行详细论述。
Mini GUI 作为一种主要运行于嵌入式Linux 下的图形用户界面支持系统,在本文中将其应用到车载导航仪中,并提出一种基于Mini GU I 的电子地图的设计方法,配合GPS 信号接收机,实现定位导航功能。
关键词GPS Mini GU I 电子地图 车载导航引 言随着社会信息化的日益发展,车载终端的主要发展方向应该是监控跟踪及导航相结合,即所谓的车载信息系统,长远发展则是通信、导航、娱乐、安防、办公和上网为一体的车辆信息系统。
1 系统整体设计方案 本文中提出的车载导航终端设计方案,可实现GPS 导航、电子地图实时定位、GSM/GPRS 通信等功能,通过实验已取得良好的效果。
系统整体设计方案如图1所示。
图1 车载导航终端整体设计方案系统主控芯片采用了由韩国Samsung 公司生产的ARM 核32位RISC 微处理器S3C2410,并在由其组成的开发板上移植Linux 操作系统,由Linux 操作系统负责系统的整体调度和控制。
通过S3C2410的UART 接口连接GPS 接收机J U PITER 021/031,用以接收N EMA0183格式的GPS 定位信息。
通过UART 接口和GSM/GPRS模块MC35进行通信,通过发送A T 命令控制MC35,来完成语音呼叫、GSM SMS 及GPRS 等功能。
为在车载LCD 上实现电子地图的绘制显示,系统的整体层次框图如图2所示,由Linux操作系统负责底层硬图2 系统层次结构框图件的初始化和管理,并向上层提供应用接口,Mini GUI 来完成电子地图在LCD 上的绘制,并通过Linux 内核提供的应用接口与GPS 接收机和GSM/GPRS 模块完成通信等功能。
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文件中添加的内容会在对用户选项进行配置时反映出来。
嵌入式Linux系统中的GUI系统的研究与移植介绍
嵌入式Linux系统中的GUI系统的研究与移植介绍嵌入式Linux系统中的GUI系统的研究与移植介绍摘要:针对嵌入式Linux系统中几种常见的GUI(Graphic User Interface)系统,讨论嵌入式GUI实现的底层技术方式;详细分析Microwindows、MiniGUI、Qt/Embedded等三种GUI的实现特点、体系结构、API接口。
结合这三种嵌入式GUI在以Motorola i,MX1为核心的实际应用系统中移植开发的问题,讨论移植技术与中文化技术。
引言嵌入式GUI为嵌入式系统提供了一种应用于特殊场合的人们交互接口。
嵌入式GUI要求简单、直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限的条件。
另外,由于嵌入式系统硬件本身的特殊性,嵌入式GUI应具备高度可移植性与可裁减性,以适应不同的硬件条件和使用需求。
总体来讲,嵌入式GUI具备以下特点:*体积小;*运行时耗用系统资源小;*上层接口与硬件无关,高度可移植;*高可靠性;*在某些应用场合应具备实时性。
(收集整理)1 基于嵌入式Linux的GUI系统底层实现基础一个能够移植到多种硬件平台上的嵌入式GUI系统,应用至少抽象出两类设备:基于图形显示设备(如VGA卡)的图形抽象层GAL (Graphic Abstract Layer),基于输入设备(如键盘,触摸层等)的输入抽象层IAL(Input Abstract Layer)。
GAL层完成系统对具体的显示硬件设备的操作,极大程度上隐蔽各种不同硬件的技术实现细节,为诮程序开发人员提供统一的图形编程接口。
IAL层则需要实现对于各类不同输入设备的控制操作,提供统一的调用接口。
GAL层与IAL层的设计概念,可以极大程序地提高嵌入式GUI的可移植性,如图1所示。
目前应用于嵌入式Linux系统中比较成熟,功能也比较强大的GUI系统底层支持库有SVGA lib、LibGGI、Xwindow、framebuffer等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MiniGUI及其移植与应用权宁一(东北电力大学信息工程学院吉林吉林132012)【摘要】:本文介绍了MiniGUI系统在嵌入式开发中的移植与应用。
对MiniGUI图形软件的特点、体系结构、工作模式做了叙述,描述了MiniGUI在uc_osⅡ环境中的移植方法,MiniGUI应用软件的开发思想和流程,并对其应用领域做了介绍。
【关键词】:MiniGUI,移植,控件,消息循环1、MiniGUI概述随着嵌入式系统在工业控制、信息家电、智能手持终端、办公自动化等领域中的广泛应用,人们对产品的图形用户接口(GUI)的需求越来越强烈。
图形美观、界面友好的GUI已广泛应用在3G手机、PDA、智能传感器、工控终端等嵌入式设备上,其中比较成熟的GUI产品有:MiniGUI、MicroWindows、OpenGUI、TinyXWindow、QT/Embedded。
MiniGUI最初是清华大学为数控机床研发计算机控制系统时根据需要独立开发的图形用户接口,它具有代码小巧、实时性好、高效稳定、易于裁减的特点,非常适合应用于嵌入式实时控制系统。
MiniGUI可以运行在任何一种具有线程支持的POSIX兼容系统上,同时也是国内出现的最早的遵循LGPL条约的自由软件之一。
MiniGUI有三种运行模式:⑴MiniGUI-Threads:运行在MiniGUI-Threads的程序可在不同的线程中建立多个窗口,但所有的窗口在一个进程中运行,可以配合的操作系统有ucosii、vxworks、linux。
⑵MiniGUI-lite:每个程序是单独的进程,每个进程可建立多个窗口,只有具备完整unix特性的操作系统才可运行这一模式。
⑶MiniGUI-standalone,可以以独立进程方式运行而不需要其它任何支持,这种方式几乎可以支持所有操作系统。
MiniGUI具有以下特点:⑴小巧可订制,包含全部功能的库文件只有300k。
⑵高稳定性,可移植性好。
⑶界面皮肤支持,用户可通过皮肤支持获得华丽外观界面。
⑷提供了完备的多窗口机制及消息传递机制。
⑸丰富的控件资源,包括菜单、进度条、列表框、按钮、工具栏等。
(6)多种键盘布局支持,多字符集及多字体支持,常见的图像文件支持。
⑺多种汉字输入法支持,windows资源文件支持。
2、MiniGUI的结构特点与移植方式2.1MiniGUI的体系结构图1MiniGUI结构体系MiniGUI采用了分层结构设计思想,共分为GAL、IAL、Pthread层,MiniGUI核心层,用户接口层三层结构。
GAL为图形抽象层,提供了底层操作系统的图形接口,配置MiniGUI选用GAL引擎,就可使用framebuffer作为MiniGUI图形发生引擎;IAL为输入抽象层,它提供了输入设备如键盘鼠标等的驱动,可将输入设备的输入事件最终映射为GUI系统API层的消息事件。
有了GAL、IAL可以把底层硬件及操作系统进行完全屏蔽,方便MiniGUI的移植。
同时,用户可在XWindow系统中调试运行自己的产品,通过重新编译就可使软件运行在特定的硬件平台上。
Pthread(POSIXthread)是提供内核级线程支持的c库函数。
MiniGUI核心层为中间层,包含了窗口系统所需要的各个功能模块,详见图1。
用户接口层API对于不同的平台是一致统一的,底层系统已被完全屏蔽,用户不必考虑输入设备及绘图细节,只需使用标准C语言进行类似win32库函数调用即可。
2.2MiniGUI工作模式MiniGUI采用微客户/服务器机制,通过消息队列和多线程之间的同步机制来实现。
在多线程环境中各线程之间有信息交互的需要,依据"先来先服务"的原则,依次处理每个线程的请求。
一个线程首先在desktop微服务器的消息队列中放置一条消息,要求建立窗口,然后进入等待状态。
当desktop处于空闲状态时可以立即处理这一请求。
最后,desktop返回处理结果,唤醒等待的线程。
MiniGUI启动3个重要的微服务器,它们分别为desktop、parser、timer。
其中desktop用于管理MiniGUI窗口中的所有主窗口;parser线程用于采集键盘鼠标事件并转换成API层消息;timer线程用来触发定时器事件。
2.3MiniGUI的移植嵌入式系统的结构框架从底层到上层依次为:硬件平台、嵌入式操作系统、MiniGUI、用户程序,其中uclinux与uc/OS-II为常用的操作系统,下面以uc/OS-II为例介绍MiniGUI的移植。
uc/OS-II具有实时性强、代码简单的特点,在教学及工业实时控制领域得到了广泛应用。
MiniGUIforuc/OS-II的配置及编译可在windows环境中的ADS开发平台中进行,编译完成之后生成一个静态库MiniGUI_lib,最终生成包括uc/OS-II、MiniGUI、应用程序在内的可执行映像文件,将映像文件固化写入硬件平台即完成MiniGUI的移植。
在编译之前需要进行以下工作:设置MiniGUI配置头文件、确定头文件路径、选定编译规则。
MiniGUI配置头文件中参数_AUTO_IAL是模拟键盘鼠标选项;_COM-MM_IAL是uc/OS-II通用输入引擎;_GB_SUPPORT是字符集支持;_USE_OWN_MALLOC为内存管理函数支持;_USE_OWN_STDIO为函数支持。
编译规则设置中_MiniGU-I_LIB_声明编译MiniGUI_LIB库;_uc/OS-II_声明目标操作系统;-EC允许隐性类型转换;_NOLINUX_表示非linux系统。
3、基于MiniGUI的软件设计开发思想3.1MiniGUI开发流程uc/OS-II初始化后创建任务main_task,在该任务中创建POSIX协议线程main_thread,main_thread中调用函数mg_main_task,进入MiniGUI入口MiniGUI_entry,进而调用应用程序入口函数MiniGUIMain,执行用户软件及窗口过程函数。
MiniGUI应用程序必须包括的头文件有:common.h--定义了宏及数据类型;minigui.h--定义了接口函数及杂项函数;window.h--定义了窗口的宏及数据类型;control.h--定义了系统内部控件。
MiniGUIMain()是程序的入口点函数,一般用户程序先创建一个主窗口或非模式对话框,在主窗口内建立若干控件,然后建立消息队列,进入窗口消息循环,响应各类消息。
通过调用Cre-ateMainWindow()函数创建主窗口,函数返回窗口句柄。
函数调用时需给MAINWINCREATE结构体指针赋值,确定主窗口的各项属性值。
调用ShowWindow()函数将主窗口进行显(下转第71页)(上接第65页)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!示,然后进入系统消息循环。
GetMessage()函数从应用程序的消息队列中取出一个消息,同时得到该消息发往窗口的句柄、参数值;TranslateMessage()函数将键盘消息转换成字符消息,便于程序处理;DispatchMessage()函数将消息传送至指定句柄的窗口,调用窗口过程函数进行消息响应。
窗口建立后即产生MSG_CREATE消息,在对应的消息响应函数中用createwindow建立控件及子窗口;MSG_PAINT则是在移动窗口或重绘窗口时发生;不予处理的消息由De-fauhMainWinProc函数进行缺省处理;关闭窗口时产生MSG_CLOSE消息,用Destroy-MainWindow()函数销毁主窗口,并产生一个MSG_QUIT消息,退出消息循环,最后调用Main-WindowThreadCleanup()清除所用资源。
在消息优先级设置上,鼠标或键盘的输入消息优于PAINT、定时器等消息。
MiniGUI的消息处理函数除了GetMessage()、TranslateMessage()、DispatchMessage()外,还有PostMessage()、SendMessage()、SendNotifyMessage()、PostQuitMessage()等。
3.2MiniGUI的图形设备接口及常用控件MiniGUI的图形设备接口GDI提供了丰富的绘图库函数,包括画点与画线、文字输出、封闭曲线与区域填充等,通过Be-ginPaint与EndPaint获取和释放设备上下文。
同时MiniGUI定义了剪切域,并可通过GDI模块的映射模式操作函数将逻辑坐标系转换成设备坐标系。
MiniGUI内建的控件库非常丰富,常用的包括静态框、按钮、列表框、进度条、滑块、编辑框、工具条、菜单等,用户可自由选取。
4、MiniGUI的应用由于MiniGUI实时性好、结构小巧,在uc/OS-II平台下广泛应用于实时控制系统中,同时MiniGUI-lite模式可用于高端模式--PDA、OA产品,随着网页浏览器等插件的引入,MiniGUI的功能将日趋丰富,应用将更加广泛。
参考文献:1.刘峥嵘.嵌入式Linux应用开发详解.北京:机械工业出版社,20042.郝献鹏.MiniGUI-面向嵌入式系统的GUI系统.河南:信息工程大学学报,20013.敬梅.嵌入式环境下MiniGUI的移植.上海:现代计算机,20064.北京博创科技有限公司.MiniGUI在ucOSⅡ上的移植技术文档.北京:20055.田正妙.基于Linux系统的MiniGUI的移植与应用.北京电子科技学院学报.北京:2006图2MiniGUI应用程序流程图像文本是一类特殊的文本形式。
这类文本的基本形式属于图像,它是把字符构成的信息内容以图像格式来存储。
图像文本相比其它两种文本形式,其提供冗余的方式、提供的冗余量大小、嵌入信息的方法等方面有所不同,这些与图像信息隐藏技术的相应方面更为接近。
2、冗余构造从上述分析可以看到,设计嵌入方案第一步骤是获取载体的"极相似性"差别。
信息隐藏首先会对待嵌入信息进行预处理,所以方案主要考虑怎样把预处理得到的信息bit流嵌入载体而又不会被发现。
目前而言,达成这一指标全归因于"极相似性差别"--"极相似性"保证"差别"不易被感知;"差别"保证bit流可以被嵌入。
基于这样的分析,本文提出了"冗余构造"概念:基本概念:冗余构造是指开发作为载体的数字信息的冗余,试验以确认冗余选择的有效性。
概括的说,冗余可定义为媒介中不因微小改变而使其宏观特性发生可感知变化的bit信息。
冗余构造目的就是快速发现这一信息,并加以验证和利用。
根据上述的概念,本文第二节中所描述的"冗余构造"有:1)中英文标点的输入宽度;2)为嵌入而插入的空白字符;3)同义词;4)同音近义词;5)HTML,XML的标记不区分大小写;6)RTF中以隐藏为目的的控制字;7)相近字体;8)微调大小;9)微调颜色;10)微调单词间隙等等。