ÎÒµÄMiniGUIÒÆÖ²Ö®Â·
×÷ÕߣºÏè·É £¨¹ðµç£©E£Mail£ºymg2002abc@163.com
Ò»£ºÇ°ÑÔ
×î½ü¼¸ÌìÔÚÒÆÖ²minigui£¬Ò»Ö±Ã»ÓÐʹÓùýminigui½çÃæ£¬Ïë¿´¿´Ê²Ã´Ð§¹û£¬Ë³±ãѧϰһÏ£¬±Ï¾¹Êǹú²úµÄ¡£»¨ÁËÎÒÈýÌìµÄʱ¼ä£¬ÖÕÓÚÔÚÎÒµÄLCDÉÏÏÔʾminigui½çÃæÁË£¬¿ÉÒÔÔËÐÐMDEÑÝʾ³ÌÐò¡£ÆÚ¼äÓöµ½ºÜ¶àÎÊÌ⣬»¹ºÃÎÒ¶¼°ÑÎÒµÄÎÊÌâÒÔ¼°½â¾ö·½·¨¶¼¼Ç¼ÏÂÀ´£¬ÏÂÃæ¿ªÊ¼ÎÒµÄÒÆÖ²¡£
¶þ£ºÊ¹Óû·¾³µÄ´î½¨
1.Ö÷»ú£ºRedHat Enterprise Linux AS4
2.½»²æ±àÒ빤¾ß·¾¶£º/usr/local/arm/2.95.3/ (ÓÃÓÚ±àÒëvivi£¬minigui
/usr/local/arm/
/usr/local/arm/
°Ñ/usr/local/arm/2.95.3/bin·¾¶Ìí¼Óµ½/etc/profileÎļþÖÐ
3.¿ª·¢°å£ºÓÑÉÆÖ®±ÛSBC2410
4.¿ª·¢°åʹÓõÄLinux
ÄÚºËÅäÖÃʱºòÑ¡ÔñÏÂÃæµÄÑ¡Ïî
Graphics support --->
<*> Support for frame buffer devices //miniguiͼÐÎÒýÇæÓйØ
<*> Virtual Frame Buffer support (ONLY FOR TESTING!)
Console display driver support --->
<*> Framebuffer Console support //miniguiͼÐÎÒýÇæÓйØ
Èý£º×ÊÔ´ÒÀÀµ¿âµÄ°²×°
ÔÚÍøÉϲο¼ÁË´óÄ®¹ÂÀǵÄÒÆÖ²·½·¨£¬±àÒëµÄʱºòÕâЩ×ÊÔ´²»ÖªµÀÓõ½Ã»£¬ÓеÄÊÇÓõ½µÄ¡£ÎÒ¶¼°²×°ÁË¡£ËùÓеÄ×ÊÔ´ÒÀÀµ¿âºÍminiguiÔ´Îļþ¶¼ÏÂÔØµ½/home/minigui/Ï¡£
1.zlib ¿âµÄ°²×°
ÏÂÔØµØÖ·£ºhttp://www.zlib.net/zlib-1.2.3.tar.gz
# 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 ¿âµÄ°²×°
ÏÂÔØ£ºhttp://superb-east.dl.sourceforge.net/sourceforge/libpng/libpng-1.0.10rc1.tar.gz
# 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
3.jpeg¿âµÄ°²×°
jpeg¿âµÄ°²×°ÎÒÊÇcopy /usr/local/arm/
4.libttf¿âµÄ°²×°
ÏÂÔØµØÖ·£ºhttp://nchc.dl.sourceforge.net/sourceforge/freetype/freetype-1.3.1.tar.gz
# tar zxf freetype-
# cd freetype-1.3.1
°ÑËùÓеÄMakefileÎļþµÄgcc¸ÄΪarm-linux-gcc
#make
#make install
ËÄ.MiniGUIiµÄ°²×°
ÔÚ/usr/ÏÂн¨Ò»¸öĿ¼´æ·Åminigui±àÒë°²×°µÄ½á¹û
££mkdir /usr/arm-linux
££cd /usr/arm-linux
# mkdir lib etc include
1.°²×°minigui-res-
#tar ¨Cxzvf 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 ¨Cxzvf 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
[ ] 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
[*] 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 ¨Cxzvf mde-
#cd mde-
#export CC=arm-linux-gcc
#vi configure.in
ÐÞ¸Äconfigure.in Îļþ
l Ôö¼ÓÒ»ÐÐ
CFLAGS=¡±$CFLAGS ¨CI${prefix}/include -L${prefix}/lib¡± //Ö¸¶¨minigui µÄÍ·Îļþ¼°¿âÎļþµÄ²Î¿¼Â·¾¶¡£
l ÐÞ¸ÄÍ·Îļþ·¾¶£º
AC_CHECK_HEADERS(${prefix}/include/minigui/common.h,
have_libminigui=yes, foo=bar)
#./autogen.sh
#./configure --prefix=/usr/arm-linux \
--host=i386-linux \
--build=arm -linux \
--target=arm -linux \
#make
Èç¹û±àÒëͨ¹ýºó¾Í»áÔÚµ±Ç°Ä¿Â¼ÏÂÉú³ÉminiguiÑÝʾ³ÌÐò,Èç¹û±àÒ벻ͨ¹ý´ó¶àÊÇÄãµÄlibminigui-
Îå.MiniGUI¸ùÎļþϵͳµÄÖÆ×÷
ÔÚ/optĿ¼ÏÂн¨rootfs£¬Èç¹ûÄãÒѾÓÐÁËÒ»¸ö¿ÉÀûÓõĸùÎļþϵͳ£¬°ÑËü¸´ÖƵ½rootfsĿ¼Ï£¬Ð½¨¼¸¸öĿ¼¼´¿É¡£ÈçÏ£º
#cd /opt/rootfs/usr
#mkdir local
#cd local
#mkdir etc lib minigui
1.°ÑÒÔÉÏ×ÊÔ´copyµ½/usr/local/Ïà¹ØÄ¿Â¼Ï¡£·½·¨ÈçÏ£º
#cp ¨Ca /usr/arm-linux/lib/*.* /opt/rootfs/usr/local/lib/
#cp ¨Ca /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 ¨Cr /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¸ùÎļþÓ³ÏñµÄÖÆ×÷¡£
ÎÒʹÓõÄlinux
#cd /opt
#mkyaffsimg rootfs rootfs.img
ÕâÑù¾Í»áÔÚ/optÉú³Érootfs.imgÓ³ÏñÎļþ£¬ÏÂÔØµ½¿ª·¢°åÔËÐС£
Áù£®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]#
½â¾ö·½·¨£º
mkdir /var/tmp
ÕâÑù¾Í¿ÉÒÔ¿´µ½minigui³õ²½½çÃæÁË£¬Èç¹ûÇ¿ÖÆÍ˳öµÄ»°£¬ÔÚÏ´ÎÔËÐÐmginitµÄ»°»á³öÏÖÏÂÃæµÄÎÊÌ⣺
ÎÊÌâ3£º
Error in step 3: There is already an instance of 'mginit'!
½â¾ö·½·¨£º
ɾ³ý/var/tmpĿ¼ÏµÄ2¸öminiguiµÄÎļþ¡£
Æß£®ÊäÈëÒýÇæµÄÌí¼Ó
ÒÔÉϵIJÙ×÷»¹Ã»ÓÐÌí¼ÓÊäÈëÒýÇæ¡£ÎҵĿª·¢°å¿ÉÀûÓõÄÊäÈëÒýÇæÊÇusbÊó±ê£¬ÏÂÃæ¾ÍÊÇÌí¼ÓusbÊäÈëÒýÇæµÄ¹ý³Ì¡£
1. ²é¿´usbÊó±êÉ豸½Úµã
²é¿´·½·¨¾ÍÊÇÔÚûÓвåÈëusbÊó±êºÍ²åÈëusbÊó±êʱ¿´¿´/dev/input/Ŀ¼ÏÂÓÐʲô±ä»¯£¬ÎÒµÄÔÚ/dev/inputĿ¼Ï¶à³öÁËmouse1,˵Ã÷ÎÒµÄusbÊó±êµÄÉ豸½ÚµãÊÇ/dev/input/mouse1£¬°ÑÕâ¸ö½ÚµãÁ´½Óµ½/devϸüÃûΪmouse£¬¼´£º
#ln ¨Cs /dev/input/mouse1 /dev/mouse
2.ÅäÖÃMiniGUI.cfgÎļþ£¨¿ÉÒÔͨ¹ý´®¿ÚÐ޸ģ©
ÅäÖÃMiniGUI.cfgÎļþ£¬Ö÷ÒªÊÇÌí¼ÓÊäÈëÒýÇæ£¬Ìí¼Ó·½·¨ÈçÏ£º
# GAL engine
gal_engine=fbcon
# IAL engine
ial_engine=console //Ìí¼ÓÔÚÕâÀï
mdev=/dev/mouse //Ìí¼ÓÔÚÕâÀï
mtype=PS2 //Ìí¼ÓÔÚÕâÀï
[fbcon]
defaultmode=640x480-16bpp
ÕâÑù¾Í°ÑÎÒµÄusbÊó±êÌí¼ÓÉÏÈ¥ÁË£¬ÐÞ¸Ämginit.rc£¬×Ô¶¯Ö´ÐÐsame³ÌÐò£¬È»ºóÔËÐÐmginit¾Í»áÓжԻ°¿òÌø³öÀ´£¬µã»÷È·¶¨È·¶¨ºó¾Í½øÈëµ½minigui½çÃæÁË£¬µã»÷×óϽǵÄstart°´Å¥»áÓÐÎÊÌ⣬ÆäËûµÄÓÎÏ·µÈ¶¼¿ÉÒÔʹÓá£


