Minigui在ARM开发板上的移植过程
Helper2416开发板移植minigui3.0.12系列
Helper2416开发板移植minigui3.0.12之一:让PC运行minigui笔者最近有时间学习嵌入式linux,于是熟悉了一下基本操作之后,选定了移植minigui作为一个练习。
看了看官网说明,移植过程挺简单的,但整整三天之后,开发板首次显示出minigui版的helloworld。
第一阶段:PC运行minigui这个工作是一定要做的,因为minigui同其他GUI程序开发类似,都是先在PC上编程、调试、模拟,成型之后再交叉编译灌入嵌入式设备。
Helper2416开发板随机所带的虚拟机fedora12已经安装好了交叉编译链、zlib库,png库,jpeg库等,使移植工作大为简化。
此文也不涉及到这几个库的移植,相关方法在手册4.6节有详述,网上文章也未提及移植这几个库出什么问题。
一. 搞定qvfbqvfb是QT的一个附属程序,可以单独运行,跟minigui本身没什么联系,只是minigui可以拿它当作在PC上运行时的模拟屏幕。
qvfb大致有以下几个获取方式。
1. minigui官网有一个qvfb2-2.0.tar.gz程序包,编译这个包需要Qt3的库。
Qt3的库可以从QT官网下载编译。
2.Helper2416开发板随机提供了qtopia和Qt4的源码。
按手册 4.6节编译完qtopia之后,.../qtopia-2.2.0/qt2/bin/qvfb便是qvfb的可执行文件。
将此文件拷入PATH路径,然后用$lddqvfb命令查看一下所依赖的库,在.../qtopia-2.2.0/qt2/lib目录中找到相应的库,拷入/lib目录。
此时命令行直接输入$qvfb即可看到窗口界面。
3.对于Qt4,按手册4.7节编译完之后并不会自动生成qvfb可执行文件,需要单独进行编译。
网上的参考步骤是:(1).复制…/qt-everywhere-opensource-src-4.7.2/tools/shared/deviceskin.h,deviceskin.cpp两个文件到…/qt-everywhere-opensource-src-4.7.2/tools/qvfb目录下(2). 在qvfb文件夹下手动生成qvfb工程,即$qmake-project,生成qvfb.pro(3). $qmake,生成Makefile(4). 手动修改Makefile 中LIBS 选项:末尾添加-lXtst(5). $make即可得到可执行文件qvfb按照这个步骤可以编译得到qvfb,但笔者实测发现Qt4编译出来的qvfb运行minigui程序时鼠标不正常,而qtopia的qvfb鼠标正常。
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首先没被编译通过。
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
移植minicom到ARM开发板
移植minicom到ARM开发板(转)最近调试自己做的S5PV210的底板上面的串口。
因为为了测试一个串口而写程序很麻烦。
所以,直接移植了一个minicom到开发板上面。
这样就可以直接进行串口收发了。
特别是在我需要同时测试多个串口的时候,比写程序来得快。
不多废话了,下面看操作流程。
第一步:需要交叉编译ncurses,否则minicom不能编译。
直接去官网下载。
地址不发。
新建一个文件叫run,然后增加可执行属性,最后在其中加入如下配置./configure CC=arm-linux-gcc --prefix=/opt/4.3.2/arm-none-linux-gnueabi --host=arm-linux CPPFLAGS=-I/opt/4.3.2/arm-none-linux-gnueabi/includeLDFLAGS=-L/opt/4.3.2/arm-none-linux-gnueabi/libmake讲解下:--prefix=/opt/4.3.2/arm-none-linux-gnueabi 红字为编译完成之后安装的地址,建议直接选择你的交叉编译器对应的位置,免得出错很麻烦,我这个就是交叉编译器的路径CPPFLAGS=-I/opt/4.3.2/arm-none-linux-gnueabi/include 红字为编译过程中需要的引用的路径,其实就是交叉编译器路径下面的includeLDFLAGS=-L/opt/4.3.2/arm-none-linux-gnueabi/lib 红字为引用的库路径,意义同上输入保存之后./run即可完成配置编译的操作,最后make install,建议先sudo su切换成root之后再操作,否则有可能会有麻烦,一些环境改变导致的麻烦。
第二步:交叉编译完成ncurses之后,就是交叉编译minicom,自己去官网下载最新版代码,解压缩后,把上面的run拷贝到新目录。
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)软件
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 等
ARM-Linux环境下MiniGUI在S3C2410开发板上的移植
上模拟 显示屏 , 方便调试 M n U 应用 程序。 iG l i 解压 q t 1 ,r z v — . t . 后执行 : b 0a g
# / o fg r . n iu e c #ma e k
#ma e i sa l k n t l
在/o e下建立 目录 miiu, 网上 下载以下源码包并放 在该 目录 hm ng i从
并给 出了实验结果 , 明 了移植 的可行性。 证
关键 词 : 嵌入 式 系统 ;iu ;3 2 1 ; nGU ; 植 Ln x¥ C 4 0 Mii I移 中 图分 类 号 : P7 T 23 文献 标 识 码 : A
社n k Ia e
由于嵌入 式系统 一般 实时性要 求很高 .所 以嵌入 式系统下 的 G I U
b n / s o a/ i :u rl c ” i : dl e l n/ s/ a ? u b ol
保存 退 出 。执 行 #su(.ahe使 更 改 生效 。其 中/s ̄c l r/ orebsr  ̄ uroa/ m a 29 . bn是 以后要用到的交叉编译工具 的路径 。 .53 i /
完 成安装 , qP— . q i 在 v 1 /v o 0 b下有 q f 可 执行 程序 , 其路径添加 到 v b 将 可执行路径文件中去 :
#c d¥H0M E
#v b s r i.a h e
在 .ahc 后 面加 上 : bsr 最
e p r TH=”PATH: bn: s/o a/r 2953 xot PA Y / i / rlc am/ . ./ s u l
科技情报开发与经济
文 章 编 号 :0 5 6 3 (0 8 2 — 19 0 10 — 0 3 2 0 )8 0 3— 2
第09章 在ARM系统中使用MiniGUI
哈尔滨工业大学华德应用技术学院—计算机应用技术系— 哈尔滨工业大学华德应用技术学院—计算机应用技术系—嵌入式系统方向
系统中使用MiniGUI 第9章 在ARM系统中使用 章 系统中使用
9.2.2 交叉编译 交叉编译MiniGUI 修改buildlib-xxx编译配置文件 编译配置文件 修改
哈尔滨工业大学华德应用技术学院—计算机应用技术系— 哈尔滨工业大学华德应用技术学院—计算机应用技术系—嵌入式系统方向
哈尔滨工业大学华德应用技术学院—计算机应用技术系— 哈尔滨工业大学华德应用技术学院—计算机应用技术系—嵌入式系统方向
系统中使用MiniGUI 第9章 在ARM系统中使用 章 系统中使用
9.1 移植步骤
1.目标板要有足够的资源:如 目标板要有足够的资源: 目标板要有足够的资源 ROM、RAM和显示设备 、 和显示设备 2.为目标板编写 为目标板编写IAL和GAL 为目标板编写 和 3.配置 配置MiniGUI,交叉编译 配置 , MiniGUI函数库和应用程序 函数库和应用程序 4.下载、运行 下载、 下载
系统中使用MiniGUI 第9章 在ARM系统中使用 章 系统中使用
移植IAL 9.3.5 移植IAL 配置编译IAL 配置编译IAL
ial/Makefile.am
哈尔滨工业大学华德应用技术学院—计算机应用技术系— 哈尔滨工业大学华德应用技术学院—计算机应用技术系—嵌入式系统方向
系统中使用MiniGUI 第9章 在ARM系统中使用 章 系统中使用
哈尔滨工业大学华德应用技术学院—计算机应用技术系— 哈尔滨工业大学华德应用技术学院—计算机应用技术系—嵌入式系统方向
系统中使用MiniGUI 第9章 在ARM系统中使用 章 系统中使用
MiniGUI 移植_嵌入式Linux开发教程_[共3页]
移植相关的几个主要文件如下。
● include/configs/smdk2440.h:该文件为与本板子相关的头文件。
● board/smdk2440/smdk2440.c:该文件为目标板的初始化文件。
其中主要定义如下函数:int board_init (void),板级初始化函数;int dram_init (void),SDRAM初始化函数。
● board/smdk2440/Flash.c:该文件为板子上Flash驱动程序。
● cpu/ARM920t/serial.c:该文件为串口驱动程序。
● drivers/dm9000.c:以太网卡(DM9000)驱动程序。
● drivers/sm501.c:显示芯片(SM501)驱动程序。
因为U-Boot本身不带SM501的驱动,必须自己编写,其编写方式和Linux下类似。
下面是U-Boot的编译过程。
#make smdk2440_config#make编译成功后,在u-boot-2016.05目录下生成u-boot.bin文件,这个文件就是u-boot映像文件,将该文件复制到本地电脑的/tftpboot目录下,通过网口就能将其烧写到板载Flash中(第一次烧写需要使用烧写板或者仿真器)。
15.2.2 嵌入式Linux移植移植内核的时候有两个地方需要注意:一是文件系统,二是控制台。
内核配置菜单选项中File system→对应的就是文件系统。
文件系统所涉及的内容较多,一般在默认配置的基础上进行修改。
因为在调试阶段需要使用网络文件系统(NFS),所以这里必须加上对NFS的支持。
内核配置菜单选项中Console drivers→对应的就是控制台驱动。
控制台驱动主要和显示有关,因为显示超声动态图像需要用得到FrameBuffer,所以这里选择对FrameBuffer的支持。
在完成对Linux内核配置以后,内核仍然以源代码形式存在,不能直接下载到嵌入式系统运行,因此,需要对内核进行编译,生成最终可以在嵌入式系统上运行的可执行代码。
基于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安装和移植
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移植
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 里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。
基于ARM_LINUX的嵌入式GUI的研究和移植
基于ARM LINUX的嵌入式GUI的研究和移植摘要:随着嵌入式系统的发展,用户对嵌入式系统的要求越来越高,因此用于实现与用户交流功能的嵌入式GUI成为嵌入式研究中的一个重点。
该文首先介绍了什么是嵌入式系统和嵌入式系统中的GUI,并阐述了开发基于嵌入式Linux平台的GUI系统的必要性。
然后详细的介绍了三种常见的嵌入式GUI系统(Microwindows、MiniGUI和QT)的设计结构和使用上的优缺点等,并列表进行了比较。
最后,描述了每个系统基于ARMLinux平台的移植,包括编译环境的建立、编译选项的配置和修改以及运行时参数的设置等等。
什么是嵌入式系统嵌入式系统一般指以嵌入式微处理器为核心,有别于PC系统,有计算机的部分功能但又不称之为计算机的设备或器材。
它主要是以应用为目的,系统软硬件于一体,通常要求具有代码小、响应速度快、可靠性高、低功耗、集成度高等特点。
嵌入式系统遍布于各个行业以及人们的日常生活当中,比如掌上PDA、移动计算设备、电视机顶盒、手机、汽车、数字相机、家庭自动化系统、安全系统、自动售货机、工业自动化仪表与医疗仪器等。
什么是嵌入式系统中的GUI随着后PC时代的到来,嵌入式系统的性能有了大幅度的提高,应用范围也越来越广,当初的一些简单的人机交互接口已经无法满足人们的要求。
而与此同时,在台式PC机上图形交互界面早已普及并成熟,于是在嵌入式系统中也逐渐出现了图形用户界面(GraphicUserInterface,GUI),特别是在一些消费类产品中。
嵌入式系统中的GUI就是在嵌入式系统中为特定的硬件设备或环境而设计的图形用户界面系统。
由于受到当前嵌入式系统本身特点的影响,并受其发展限制,所以嵌入式系统中的GUI应该有如下特点:占用的存储空间以及运行时占用资源少;运行速度以及响应速度快;可靠性高;便于移植和定制。
Linux有开放的源码、高效稳定的内核、良好的开发环境以及支持多种硬件平台等特点,而且由于Linux 的可配置性和可模块化,一个Linux内核经过配置和裁减可以只占用几百K左右的存储空间,使其在嵌入式系统中也得到广泛应用。
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_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) { }
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几个目录产生。
基于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
最后检查一下库是否拷贝全
【IT专家】Minigui V1.3.3在uClinux中的移植经验总结
本文由我司收集整编,推荐下载,如有疑问,请与我司联系Minigui V1.3.3在uClinux中的移植经验总结2006/03/12 2341 经过一个星期的努力,终于将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.3 3) make install 四. cd mde-1.3.0 ./configure make cd mg-samples-1.3.0 ./configure make 五. 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 /--。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Minigui在ARM开发板上的移植过程一、题外话:为了感谢国人在开源世界颇具影响力的为数不多Minigui的开发者们的辛勤劳动(希望为数不多这个这个词若干年后我们不再提^_^),也为答谢飞漫公司和魏永明先生对开源项目在中国的运作模式的有意义的探索, 也为自己在感慨、敬佩之余尽一点微波之力,就将借工作之便并参考众多网友的体会,将一点移植心得整理出来,希望公司不介意。
考虑到每个人接触linux的起点不同,所以下文档按步就班说得比较详细(说得不好听点是罗嗦,^_^,如果您熟悉相关部分,请略过,希望不要当面说俺写的罗嗦,呵).二、特别声明:本文的移植过程主要以minigui1.2.3为基础。
本文中提到的注意可能是您容易忽视,而又要引起您注意的地方或者由于理解上的差异而容易造成交叉编译失败的地方。
本文中需要修改的地方以红色字体标注,而添加或者修改的地方以蓝色标注,需要您执行命令的地方以粉红标注(html格式颜色不显,我又懒蛋得写HTML标签,建议您下载附件中的PDF文档)。
另外,本文中提到的脚本编写和修改都请在linux环境下手工编写,不要在windows下或者直接从下面拷贝,免得出现错误。
三、硬件平台:CSB226-PXA250,Cogent ep7312,此文档以CSB226-PXA250参考开发板的移植过程为主来说明.LCD屏幕特性:640x480,支持8bpp.支持标准PC键盘、鼠标四、软件环境:主机:Redhat7.2目标板:采用umon作为boot loader, 开发环境和运行的内核是Montavista Profession Edition 2.1.目标板(以下称为target)采用NFS的方式将根文件系统挂接到开发主机(以下称为host)上,其路径为:/opt/hardhat/devkit/arm/xscale_le/target,目标板上以控制台下的framebuffer 方式运行。
host和target都以root身份登陆。
将minigui库文件原代码libminigui1.2.3.tar.gz,资源文件minigui-fonts.1.2.0.tar.gz, minigui-imetabs-1.1.0.tar.gz, minigui-res-1.2.0.tar.gz放在主机任意目录下,而考虑到演示程序编译后没有相应的安装脚本,将源代码包mde-1.2.3..tar.gz放在了/opt/hardhat/devkit/arm/xscale_le/target/root下面。
首先用类似tar zxf liminigui1.2.3.tar.gz命令将所有的压缩包解开。
五、libminigui1.2.3及资源文件的移植:1、libminigui1.2.3文件的移植:它移植主要定义交叉编译器已经编译后的目标库和头文件的存放路径,参考给出的交叉编译例子编写了交叉编译脚本build-pxa250#!/bin/shrm -f config.cache config.statusCC=xscale_le-gcc ./configure --prefix=/opt/hardhat/devkit/arm/xscale_le/target/usr/local \ --host=i386-linux \--target=arm-linux \--enable-tinyscreen注意:由于minigui现在的版本编译后的库缺省放在了/usr/local/lib下面,故在上面的目前路径中添加了usr/local.根据硬件特性修改libminigui1.2.3/etc/Minigui-3d.cfg和Minigui-flat.cfg文件中的[fbcon]defaultmode=1024x768-16bpp为相应的defaultmode=640x480-8bpp如果没有键盘鼠标,没细看系统能否运行,但资源文件一定会要做相应的修改。
执行以下shell命令:# chmod 777 ./build_pxa250#make distclean#./build_pxa250#make#make install如果编译通过,此时在目标路径/opt/hardhat/devkit/arm/xscale_le/target/usr/local/lib下就会有交叉编译出来的动态库和静态库文件.2、资源文件的移植:上文提及的三个资源文件都只是做一下相同的安装目标路径的改动,修改configure.linux,将TOPDIR= 一行改为:TOPDIR=/opt/hardhat/devkit/arm/xscale_le/target在各自的目录下执行命令,将相应的资源文件安装到目标系统中:# make install六、演示程序mde-1.2.3..tar.gz的移植注意,演示程序也是在host上交叉编译。
转到mde-1.2.3目录下,首先也是编写交叉编译的shell脚本:#!/bin/shCC=xscale_le-gcc ./configure --prefix=/opt/hardhat/devkit/arm/xscale_le/target/usr/local \--host=i386-linux \--target=arm-linux执行以下shell命令:# chmod 777 ./build_pxa250修改configure.in中以下地方:AC_CHECK_HEADERS(minigui/minigui.h, have_libminigui=yes, foo=bar)dnl================================================================= dnl Write Outputif test "$ac_cv_prog_gcc" = "yes"; thenCFLAGS="$CFLAGS -Wall -Wstrict-prototypes -pipe"改为:AC_CHECK_HEADERS($prefix/include/minigui/minigui.h, have_libminigui=yes, foo=bar)dnl====================================================================== ==dnl Write Outputif test x"$ac_cv_prog_gcc" = x"yes"; thenCFLAGS="$CFLAGS -Wall -Wstrict-prototypes -pipe"LDFLAGS="$LDFLAGS -Wl,--rpath -WL,$prefix/lib"fiif test "x$have_libminigui" = "xyes"; thenCFLAGS="$CFLAGS -I$prefix/include"fi如果您移植的是1.2.6以下版本(1.2.6我还没做相应测试,不过在ChangeLog中提及fix了这个BUG),由于PNG图片格式在非X86体系中跑得异常(论坛中孔明有相应得回帖),还需要修改mginit目录下的nr=10一行,改为:nr=8执行以下shell命令:#make distclean# ./build_pxa250# make至此,交叉编译完成,您可以启动target,执行以下命令(第一条命令为第一次在target 运行minigui时需要, 第二条命令为多次执行演示程序用,相关原理请看init.c或者论坛的相关讨论):# su –c ldconfig# rm –f /var/tmp/mginit# /root/mde-1.2.3/mginit/mginit但系统不一定能在目标板上跑起来,另外,下面是我遇到的一下问题以及一些改动意见,仅供参考。
如果在1.2.3中,中文输入法存在读资源文件sysphrase.tab失败的问题,跟踪发现出现在libminigui1.2.3/src/ime/pinyin.c的第576行附近的这部分代码:for(i = 1; i < MAX_PY_NUM; i++) {inmd->sysph[i] = sysph = (SysPhrase*)p;#if MGUI_BYTEORDER == MGUI_BIG_ENDIANsysph->count = ArchSwap16 (sysph->count);#endifp = (char*)sysph->phrase;for(j = 0; j < sysph->count; j++) {kph = (Phrase*)p;p += SizeOfPhrase (kph->len,kph->count); // skip the string}}本想好好看一下,不过在minigui的后期版本中对中文输入法做了比较大的改动,kongming最近又提供了最新版本minigui1.2.6-2的免费下载(如我这样的有福了,又要感谢”党的富民政策好”了,呵呵),我想在移植了minigui1.2.6-2后如果还有问题,再找原因,呵,懒劲使然.另外,vcongui也容易出现异常,我以1.2.3来说, 对vcongui有以下一点看法.1、vcongui使用了/dev下面的两个设备文件(具体我不记得了:(,不过你可以在它出现提示信息时参考PC机上的相应设备文件用mknod名字在目标系统中创建),想把它加到脚本中来创建。
2、在vcongui中以及libmingui中,定义了USE_ASM宏,并有相关的X86汇编代码,我还没细看交叉编译时候是否会编译进出而导致系统异常。
3、vcongui在defaultmap.c中定义了一些功能键来激活菜单,但对我这样的钟情于MC编辑器的man就不是很方便,比喻F10,是否在新版本中去掉它?并修改vcongui的大小,使得缺省的时候占满全屏,便于在minigui编辑,毕竟控制台下就有中文嘛,便于输入汉字^_^。
再说点题外话,这种方法我在EP7312上也进行了测试,改动非常之少,其他平台限于条件和时间所限,没进行测试。
如果您打算不用NFS,要将minigui最终定制在目标系统的FLASH中,您可以将target的静态库、甚至将/usr/local的头文件去掉,将资源文件缩减,论坛里有这方面的讨论,欢迎参考。