分类: 嵌入式
2010-11-27 22:24:57
主机:VMware上的RedHat Linux 9.0
交叉编译工具路径:/usr/local/arm/2.95.3/ (用于编译vivi,minigui
开发板:博创 up-netarm2410-s
开发板使用的Linux
内核配置时候选择下面的选项
Graphics support --->
<*> Support for frame buffer devices //minigui图形引擎有关
<*> Virtual Frame Buffer support (ONLY FOR TESTING!)
Console display driver support --->
<*> Framebuffer Console support //minigui图形引擎有关
参考资料:
1、<
2、资源依赖库的安装
参考大漠孤狼的移植方法,所有的资源依赖库和minigui源文件都下载到/home/minigui/下。
(1).zlib 库的安装
下载地址:
# tar zxf zlib-
# cd zlib-
#./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ --shared
#vi Makefile
把gcc都改成arm-linux-gcc
#make
#make install
(2).png 库的安装下载:
# tar zxf libpng-
# cd libpng-1.0.10rc1
# cp scripts/makefile.linux Makefile
# vi Makefile
CC=arm-linux-gcc
# where "make install" puts libpng.a, libpng.so*, png.h and pngconf.h
prefix=/usr/local/arm/2.95.3/arm-linux //修改这里
# Where the zlib library and include files are located
#ZLIBLIB=/usr/local/lib
#ZLIBINC=/usr/local/include
ZLIBLIB=/usr/local/arm/2.95.3/arm-linux/lib //修改这里
ZLIBINC=/usr/local/arm/2.95.3/arm-linux/include //修改这里
#make
#make install
注:与大漠孤狼的移植方法相比,我没有安装libjpeg、libttf库,因此在配置libminigui时,有些选项不能选上。
3、MiniGUIi的安装
在/usr/下新建一个目录存放minigui编译安装的结果
#mkdir /usr/arm-linux
#cd /usr/arm-linux
# mkdir lib etc include
(1).安装minigui-res-
#tar –xzvf minigui-res-
#cd minigui-res-
#修改config.linux 文件,将{prefix}改为/usr/arm-linux
#make install //安装资源文件
资源文件安装到/usr/arm-linux/lib下
(2).安装libminigui-
在安装libminigui-
/* Initialize the library */
GAL_fbdev = getenv("FRAMEBUFFER");
if ( GAL_fbdev == NULL ) {
GAL_fbdev = "/dev/fb/0"; //修改在这里
}
console_fd = open(GAL_fbdev, O_RDWR, 0);
if ( console_fd < 0 ) {
GAL_SetError("Unable to open %s", GAL_fbdev);
return(-1);
}
#tar –xzvf libminigui-
#cd libminigui-
#make menuconfig
配置libminigui
System Wide Options:
[*] Build MiniGUI-Lite //用 Lite 方式编译,不是Thread 方式,这里适用于 PDA
[ ] Stand-Alone
[ ] Use incore (built-in) resource
[*] Unit of timer is 10ms
[*] Cursor support
[ ] User can move window with mouse
[*] Mouse button can do double click
[*] Build with debugging messages
[ ] Trace messages of MiniGUI
[*] Include symbol name of messages
GAL engine Options :
(NEWGAL) GAL and its engines
[*] NEWGAL engine on Linux FrameBuffer console
[ ] NEWGAL engine on Qt Virtual FrameBuffer
[ ] NEWGAL engine on eCos LCD interface
[*] Dummy NEWGAL engine
[*] Have console on Linux FrameBuffer
IAL engine options :
[ ] EP7211-based board
[ ] ADS Graphics Client
[ ] iPAQ H3600 (also H3800)
[ ] MPC823
[ ] PX255B
[ ] NEC VR4181
[ ] Helio Touch Panel
[ ] MT T800
[*] SMDK2410 Touch Screen
[ ] uClinux Touch Screen Palm/MC68EZ328
[*] Dummy IAL engine
[*] Native (console) input engine
--- Native IAL engine subdriver options
[ ] PS2 mouse
[ ] IntelligentMouse (IMPS/2) mouse
[ ] MS mouse
[ ] MS3 mouse
[*] GPM daemon
Font Option :
[*] Raw bitmap font
[ ] Var bitmap font //不要选这个,编译mde时候会出现错误
[*] Incore font sansserif
[*] Incore font courier
[*] Incore font symbol
[*] Incore font vgas
[ ] Qt Prerendered Font
[ ] TrueType font //没安装LIBTTF,不选
[ ] Adobe Type1 font
Image Options :
[*] Includes SaveBitmap-related functions
[ ] PCX file support
[ ] LBM/PBM file support
[ ] TGA file support
[*] GIF file support
[ ] JPG file support //没安装LIBJPEG,不选
[*] PNG file support
Input Medthold Option:
[*] IME (GB2312) support
[ ] IME (GB2312) Intelligent Pinyin module
Development Environment Option :
(Linux) Platform
(arm-linux-gcc) Compiler
(glibc) Libc
--- Installation options
Path prefix: "/usr/arm-linux"
--- Additonal Compiler Flags
CFLAGS: ""
LDFLAGS: ""
配置完成后
#make
#make install
就会把minigui库安装到/usr/arm-linux/lib下 MiniGUI.cfg安装到/usr/arm-linux/etc/ 相关的文件安装到/usr/arm-linux/include/下。
(3).安装mde-
#tar –xzvf mde-
#cd mde-
# ./configure --prefix=/opt/rootfs/usr/local --host=arm-linux
#make
如果编译通过后就会在当前目录下生成minigui演示程序,如果编译不通过大多是你的libminigui-
4、MiniGUI根文件系统的制作
在/opt目录下新建rootfs,如果你已经有了一个可利用的根文件系统,把它复制到rootfs目录下,新建几个目录即可。如下:
#cd /opt/rootfs/usr
#mkdir local
#cd local
#mkdir etc lib minigui
(1).把以上资源copy到/usr/local/相关目录下。方法如下:
#cp –a /usr/arm-linux/lib/*.* /opt/rootfs/usr/local/lib/
#cp –a /usr/arm-linux/etc/*.* /opt/rootfs/usr/local/etc/
把/usr/local/arm/2.95.3/arm-linux/lib/目录下的libjpeg,libpng,libttf,libz相关的库copy到/opt/rootfs/usr/local/lib/下,copy时带上-a参数。
(2).使库文件工作。
修改/opt/rootfs/etc/目录下的ld.so.conf,把/usr/local/lib添加到改文件。为了使新加的库生效,执行
#ldconfig –r /opt/rootfs/
(3).复制mde演示程序
把生成的mde演示程序copy到/opt/rootfs/usr/local/minigui/目录下,只copy相关的应用程序和res目录,注意复制mginit时候把mginit.rc也复制过去
(4).修改MiniGUI.cfg
修改MiniGUI.cfg先调试GAL engine,调试完成后再调试IAL engine,修改如下:其他默认:
# GAL engine
gal_engine=fbcon
# IAL engine
ial_engine=dummy //修改这里
mdev=none //修改这里
mtype=none //修改这里
[fbcon]
defaultmode=640x480-16bpp //修改这里,我使用的lcd是640x480
5、MiniGUI初始化一些问题以及解决办法。
按照以上的方法运行mginit的时候会出现一些问题,按照上面MiniGUI.cfg配置运行的话会出现:
问题1
[root@FriendlyARM mginit]# ./mginit
640x480 LCD
GAL ENGINE: Can't open /dev/tty0: No such file or directory
NEWGAL: Set video mode failure.
Error in step 3: Can not initialize graphics engine!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
解决方法:
#mknod /dev/tty
这样在运行mginit的时候还会有错误,如下:
问题2
LoadSharedResource: No such file or directory
Error in step 7: Can not load shared resource!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
[root@FriendlyARM mginit]#
解决方法:
1、 在根文件系统中rcS中添加 mkdir /var/tmp
2、 编译内核时选择了System IPC
3、 在根文件系统中加入 /etc/passwd
问题3:
Error in step 3: There is already an instance of 'mginit'!
解决方法:
删除/var/tmp目录下的2个minigui的文件。