发布新日志

  • arm-linux学习笔记之minigui移植

    2009-03-17 10:42:39

    arm-linux学习笔记之minigui移植
    minigui-1.6.10在s3c2410平台的移植

    开发板:atmel9263
    CPU:at9263
    linux-2.6.26
    fs:nfs
    LCD:TFT320 X 240

    PC:ubuntu 8.10

    (一)准备工作
    下载软件包
     libminigui-1.6.10.tar.gz
     mg-samples-1.6.10.tar.gz
     minigui-res-1.6.10.tar.gz
     mg-samples-str-1.6.2.tar.gz
    在/home/arm/创建一个minigui的目录,然后把这些载在的软件包放在该目录下,在分别解压缩。再在/home/arm/minigui下创建一个miniguitmp的目录,用于安装编译以后的库文件。
    (二 )编译 libminigui
    首先修改configure文件,在文件的开头加入交叉编译的路径
    CC=arm-9tdmi-linux-gnu-gcc
    CPP=arm-9tdmi-linux-gnu-cpp
    LD=arm-9tdmi-linux-gnu-ld
    AR=arm-9tdmi-linux-gnu-ar
    RANLIB=arm-9tdmi-linux-gnu-ranlib
    STRIP=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
    几个目录产生。
    ¥#%#¥%说明:由于这是之后作的记录所以这一步产生的目录是include  lib  usr这三个还是四个忘记了,网上一堆说明
    然后进入/home/arm/minigui/miniguitmp/lib,执行
    [root@localhost lib]# ldconfig
    libminigui的交叉编译工作就算完成了。

    (三)安装minigui-res比较简单
    进入/home/arm/minigui/minigui-res-1.6.10目录
    修改config.liux文件的第11行
    TOPDIR=/home/arm/minigui/miniguitmp
    保存
    然后[root@localhost minigui-res-1.6.10]# make install
    资源文件被安装到/home/arm/minigui/miniguitmp/usr/local/lib/minigui/res下面有这几个东西
    bmp  cursor  font  icon  imetab
    (四)修改/home/arm/minigui/miniguitmp/etc/MiniGUI.cfg文件
    [system]                                                                    
    # GAL engine and default options                                            
    gal_engine=fbcon                                                            
    defaultmode=320x240-16bpp                                                   
                                                                                
    # IAL engine                                                                
    #ial_engine=qvfb                                                            
    #mdev=/dev/input/mice                                                       
    ial_engine=console                                                          
    mdev=/dev/mouse                                                             
    mtype=IMPS2                                                                 
                                                                                
    [fbcon]                                                                     
    defaultmode=320x240-16bpp                                                   
                                                                                
    [qvfb]                                                                      
    defaultmode=320x240-16bpp                                                   
    display=0            

    一般就上面几个地方要修改
    然后把MiniGUI.cfg下载到开发板的/etc/目录下
    (五)下载minigui的运行库

        把PC上/home/arm/minigui/miniguitmp/lib中所有的运行库下载到开发板上的/usr/lib目录下;
    在把PC上/home/arm/minigui/miniguitmp/usr/local/lib下的minigui目录整个下载到开发板的/usr/lib下面,到现在开发板上应该有这些东西了
    在开发板的/usr/lib下面有
    lib.tar.bz2               libminigui-1.6.so.10      libvcongui-1.6.so.10.0.0
    libmgext-1.6.so.10        libminigui-1.6.so.10.0.0  libvcongui.a
    libmgext-1.6.so.10.0.0    libminigui.a              libvcongui.la
    libmgext.a                libminigui.la             libvcongui.so
    libmgext.la               libminigui.so             minigui
    libmgext.so               libvcongui-1.6.so.10
    其中minigui是目录
    在开发板的/etc下面应该有MiniGUI.cfg文件存在。
    现在准备工作已经已经完成,下面应该移植一些演示程序。
    (六)编译mg-samples-1.6.10或者mg-samples-str-1.6.2
    这两个东西编译的时候比较不好整,偶太菜,费劲半天才编译通过,事后作的记录可能遗漏。
    1、进入/home/arm/minigui/mg-samples-1.6.10
    修改configure.in第30行,这一步有没有用说不清楚,改成下面的样子
    AC_CHECK_HEADERS($prefix/include/minigui/common.h, have_libminigui=no, foo="bar")
    2、修改configure文件
    在文件的最前面加上交叉编译的工具
    CC=arm-9tdmi-linux-gnu-gcc
    CPP=arm-9tdmi-linux-gnu-cpp
    LD=arm-9tdmi-linux-gnu-ld
    AR=arm-9tdmi-linux-gnu-ar
    RANLIB=arm-9tdmi-linux-gnu-ranlib
    STRIP=arm-9tdmi-linux-gnu-strip
    3、运行configure进行配置
    [root@localhost mg-samples-1.6.10]# ./configure --prefix=/home/arm/minigui/miniguitmp/ \
    > --build=x86_64-linux \
    > --host=arm-unknown-linux \
    > --target=arm-unknown-linux
    ……
    ……
    最后还是有
    configure: WARNING:
            MiniGUI is not properly installed on the system. You need
            MiniGUI Ver 2.0.0 or later for building this package.
            Please configure and install MiniGUI Ver 2.0.0 first.

    这个提示,不管他。
    4、修改src/Makefile文件
    找到
    CC = arm-9tdmi-linux-gnu-gcc
    改成
    CC = arm-9tdmi-linux-gnu-gcc -I/home/arm/minigui/miniguitmp/include -L/home/arm/minigui/miniguitmp/lib

    CFLAGS = -g -O2 -`Wall -Wstrict-prototypes -pipe
    改成
    CFLAGS =-O2

    LIBOBJS = 
    改成
    LIBOBJS = -lminigui -lmgext -lm  -lpthread

    LIBS =  -lminigui
    改成
    LIBS =  -lminigui -lmgext -lm  -lpthread

    COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    改成
    COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -lminigui -lmgext -lm  -lpthread

    (上面的有一步无用)¥%¥#……%¥……%丫的。

    这样基本上可以了,mginit.c文件里面有地方修改后也可以编译完成的,但是有./configure生成的Makefile,已经把这个地方注销掉了。象这样,省得动手修改。
    am__EXEEXT_2 =
    #am__EXEEXT_3 = scrnsaver$(EXEEXT) mginit$(EXEEXT)
    如果想要一起编译这个断,需要修改mginit.c源文件,暂时不说
    5、进入/home/arm/minigui/mg-samples-1.6.10/src
    运行make
    …………
    然后在res目录下会有很多可执行文件。

    (七)下载演示程序
    吧/home/arm/minigui/mg-samples-1.6.10/src下的所有文件和目录打包成一个mg.tar.bz2的文件
    下载到开发板的/usr/local/mg下面没有这个目录自己“贱”一个。
    然后解压缩
    在开发板上解压缩tar -xvzf mg.tar.bz2
    然后删除*.c和Makefile文件
    rm *.c
    现在可以运行minigui的演示程序了。


    (八)问题
    1、
    可能会有这个问题:
    GAL: Init GAL engine failure: fbcon.
    GDI: Can not initialize graphics engine!
    我也出现了,解决方法忘记了,网上查的,不是禁止newgal,就是修改源代码,还得上网查。

    2、tty0的问题
    保证tty0有效
    不行的话就自己创建一个tty0节点:
    crw-r--r--    1 root     root       4,   0 Jan  1 00:02 tty0

    3、鼠标的问题
    我的是usb鼠标。
    3.1要支持鼠标首先要在内核中加入驱动支持:
    #
    # USB Input Devices
    #
    CONFIG_USB_HID=y
    CONFIG_USB_HIDINPUT_POWERBOOK=y
    CONFIG_HID_FF=y
    CONFIG_HID_PID=y
    CONFIG_LOGITECH_FF=y
    CONFIG_PANTHERLORD_FF=y
    CONFIG_THRUSTMASTER_FF=y
    CONFIG_ZEROPLUS_FF=y
    CONFIG_USB_HIDDEV=y
    CONFIG_USB_SUPPORT=y
    CONFIG_USB_ARCH_HAS_HCD=y
    CONFIG_USB_ARCH_HAS_OHCI=y
    # CONFIG_USB_ARCH_HAS_EHCI is not set
    CONFIG_USB=y
    # CONFIG_USB_DEBUG is not set
    # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
    大概这个样子

    3.2 然后创建节点
    查看/proc/bus/input/devices文件
    #cat /proc/bus/input/devices
    I: Bus="0003" Vendor="15d9" Product="0a33" Version="0110"
    N: Name="USB Mouse"
    P: Phys="usb-s3c24xx-1/input0"
    S: Sysfs="/class/input/input0"
    U: Uniq=
    H: Handlers="mouse0"
    B: EV="17"
    B: KEY="70000" 0 0 0 0 0 0 0 0
    B: REL="103"
    B: MSC="10"
    确定已经鼠标已经连接上了
    然后查看/proc/bus/input/handler
    # cat /proc/bus/input/handler
    N: Number="0" Name="kbd"
    N: Number="1" Name="mousedev" Minor="32"
    看到Number=1 Name="mousedev" Minor="32这个东西了"

    # cat /proc/devices
    Character devices:
     10 misc
     13 input
     29 fb

    到/dev下创建
    #mknod /dev/input/mouse c 13 32

    crw-r--r--    1 root     root      13,  32 Jan  1 00:25 input/mouse
    其中13是设备号的高位 32低位上面的Minor=32和13 input定的,不小的是不是这么会事情,反正鼠标可以工作了.
    可以用下面的命令测试一下:
    # cat /dev/input/mouse
    ??(?(?(?(8??8??8??8??8??8??8??8?
    ?(
    这一堆乱码就是移动鼠标的时候输出的东西,说明鼠标可以工作了。
    创建一个符号连接:
    ln -s /dev/input/mouse  /dev/mouse

    修改权限
    chmod go+r /dev/mouse
    chmod go+r /dev/input/mouse.

    这下运行minigui的时候有鼠标了。

    还有遇到的问题:

    如果鼠标无法使用。 可以修改如下
     25 [system]
     26 # GAL engine and default options
     27 gal_engine=fbcon
     28 defaultmode=240x320-16bpp
     29
     30 # IAL engine
     31 ial_engine=console
     32 mdev=/dev/mouse0
     33 mtype=IMPS2
    这个配置一定可用. 还要注意库的使用

    文章出处:DIY部落(http://www.diybl.com/course/6_system/linux/Linuxjs/20090314/161549.html)

  • minigui安装到PC机上

    2009-03-04 15:03:18

    1. 环境

    硬件环境:

    X86PC 

     

    软件环境:

    VMware虚拟机下的redhat linux 9.0(完全安装)

     

    2.    准备以下源码包(下载) 

    http://www.minigui.org/res.shtml

     

    开发库:libminigui-1.6.0.tar.gz

    资源文件:minigui-res-1.6.10.tar.gz

    示例程序:mg-samples-str-1.6.2.tar.gz

    FramBufferqvfb-1.1.tar.gz

     

    3.    编译安装

    (1) 准备工作

    redhat linux 9.0下新建工作目录

    [root@localhost /]# mkdir /minigui              工作目录 

    [root@localhost /]# mkdir /minigui/compressed /minigui/source

    [root@localhost /]# cd /minigui/compressed        进入工作目录

    说明:把第2步下载的源码包放到该目录中,即/minigui/compressed

     

    (2)编译安装minigui-res-1.6.0.tar.gz

    说明:minigui 所使用的资源,包括基本字体、图标、位图和鼠标光标。

     

    [root@localhost compressed]# tar xzvf minigui-res-1.6.10.tar.gz –C ../source

     

    [root@localhost compressed]# cd ../source/minigui-res-1.6.10

    [root@localhost minigui-res-1.6.10]# make install

      

    (3)编译安装libminigui-1.6.0.tar.gz

    说明:minigui函数库源代码。

    [root@localhost minigui-res-1.6.10]# cd /minigui/compressed

    [root@localhost compressed]# tar xzvf libminigui-1.6.0.tar.gz –C ../source

    [root@localhost compressed]# cd ../source/libminigui-1.6.0

    [root@localhost libminigui-1.6.0]# ./configure

    [root@localhost libminigui-1.6.0]# make

    [root@localhost libminigui-1.6.0]# make install

     

    (4)编译 mg-samples-str-1.6.2.tar.gz

    同上原理:

    解压

    [………]# ./configure

    [………]# make

     

    (5)编译安装qvfb-1.1.tar.gz

    同上原理:

    解压

    [………]# ./configure

    [………]# make

    [………]# make install

     

    (6) 配置

    第一处:修改/boot/grub/grub.conf文件

    用编辑器打开,在“kernel …………”行的后面加入如下内容:

    vga=0x0317

     

    第二处:修改/etc/ld.so.conf文件

    用编辑器打开,在后面加入如下内容:

    /usr/local/lib

     

    接着为了使刚加入的内容生效,在超级终端运行下列命令:

    [………]# ldconfig

     

    第三处:修改/usr/local/etc/MiniGUI.cfg文件,打开文件之后,注意如下内容:

    [system]

    # GAL engine and default options

    gal_engine=qvfb

    defaultmode=800x600-16bpp

     

    # IAL engine

    ial_engine=qvfb

    mdev=/dev/input/mice

    mtype=IMPS2

     

    [fbcon]

    defaultmode=1024x768-16bpp

     

    [qvfb]

    defaultmode=240x320-16bpp  //注意此项应该与运行qvfb&时弹出的虚拟显示屏一样.

    display=0

     

    与上述内容不一致的,请比较后,修改。

     

    4.    测试

    在超级终端运行qvfb,命令如下:

    [………]# qvfb &

    这说明在后台运行,接着再开一终端,或按“ctrl+c”退出,然后进入示例程序目录下,运行helloworld程序:

    [………]# cd /minigui/source/ mg-samples-str-1.6.2/src

    [………]# ./helloworld

     

    运行之后的效果如下图4-1所示:

    4-1  测试minigui示例程序效果

     

Open Toolbar