免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1003 | 回复: 0
打印 上一主题 下一主题

我的MiniGUI移植之路 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-23 16:55 |只看该作者 |倒序浏览
一:前言
最近几天在移植minigui,一直没有使用过minigui界面,想看看什么效果,顺便学习一下,毕竟是国产
的。花了我三天的时间,终于在我的LCD上显示minigui界面了,可以运行MDE演示程序。期间遇到很多问题,还好我都把我的问题以及解决方法都记录
下来,下面开始我的移植。

二:使用环境的搭建
1.主机:RedHat Enterprise Linux AS4
2.交叉编译工具路径:/usr/local/arm/2.95.3/ (用于编译vivi,minigui1.3.3)
          /usr/local/arm/3.3.2/   (用于编译busybox1.5.1)
          /usr/local/arm/3.4.1/ (用于编译linux2.6.11.1内核的)
把/usr/local/arm/2.95.3/bin路径添加到/etc/profile文件中
3.开发板:友善之臂SBC2410
4.开发板使用的Linux2.6.11内核
内核配置时候选择下面的选项
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 库的安装
下载地址:
[color="#0000ff"]http://www.zlib.net/zlib-1.2.3.tar.gz

# tar zxf zlib-1.2.3.tar.gz
# cd zlib-1.2.3
#./configure --prefix=/usr/local/arm/2.95.3/arm-linux/ --shared
#vi Makefile

把gcc都改成arm-linux-gcc

#make
#make install
2.png 库的安装
下载:
[color="#0000ff"]http://superb-east.dl.sourceforge.net/sourceforge/libpng/libpng-1.0.10rc1.tar.gz
# tar zxf libpng-1.0.10rc1.tar.gz
# 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/3.3.2/arm-linux/lib/目录下的,3.3.2的交叉编译器本身含有jpeg库的。
4.libttf库的安装
下载地址:
[color="#0000ff"]http://nchc.dl.sourceforge.net/sourceforge/freetype/freetype-1.3.1.tar.gz
# tar zxf  freetype-1.3.1.tar.gz  
# 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-1.3.3.tar.gz
#tar –xzvf minigui-res-1.3.3.tar.gz
#cd minigui-res-1.3.3

#修改config.linux 文件,将{prefix}改为/usr/arm-linux
#make install //安装资源文件
资源文件安装到/usr/arm-linux/lib下
2.安装libminigui-1.3.3.tar.gz
在安装libminigui-1.3.3时候需要修改一个文件fbvideo.c,在libminigui-1.3.3/src/newgal/fbcon/目录下:修改如下:

/* 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
        GAL_SetError("Unable to open %s", GAL_fbdev);
        return(-1);
}

#tar –xzvf libminigui-1.3.3.tar.gz
#cd libminigui-1.3.3
#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-1.3.0.tar.gz
    #tar –xzvf mde-1.3.0.tar.gz
    #cd mde-1.3.0
    #export CC=arm-linux-gcc
    #vi configure.in

    修改configure.in 文件
    l         增加一行
    CFLAGS=”$CFLAGS –I${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-1.3.3配置不正确。

    五.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根文件映像的制作。
    我使用的linux2.6.11.1内核已经移植好了yaffs文件系统,可以使用mkyaffsimg工具制作yaffs根文件系统映像。烧到开发板即可,我是通过usb下载的。制作方法如下:
    #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/tty0 c 4 0

    这样在运行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的文件。

    七.输入引擎的添加
    以上的操作还没有添加输入引擎。我的开发板可利用的输入引擎是usb鼠标,下面就是添加usb输入引擎的过程。

    1.     查看usb鼠标设备节点

    查看方法就是在没有插入usb鼠标和插入usb鼠标时看看/dev/input/目录下有什么变化,我的在
    /dev/input目录下多出了mouse1,说明我的usb鼠标的设备节点是/dev/input/mouse1,把这个节点链接到/dev下更名为
    mouse,即:
    #ln –s /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按钮会有问题,其他的游戏等都可以使用。
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66221/showart_1009521.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP