原创 arm-linux学习笔记之minigui移植

2008-12-15 14:09 5894 7 7 分类: MCU/ 嵌入式
minigui-1.6.10在s3c2410平台的移植

开发板:SBC2410
CPU:S3C2410
linux-2.6.25.5
fs:jffs2
LCD:TFT320 X 240

PC:fc8 linux-2.6.25.5

(一)准备工作
下载软件包
 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的时候有鼠标了。

参考:
事后作的记录,参考了一很多网页,现在搞不清楚,记得一个:
解决鼠标问题参考:
http://www.minigui.com/index.php?id=knowledge-base&no_cache=1&L=1&tx_drwiki_pi1%5Bkeyword%5D=%E5%94%AE%E5%90%8E%3AMiniGUI%20%E8%BF%90%E8%A1%8C%E5%8F%8A%E4%BD%BF%E7%94%A8%E7%9B%B8%E5%85%B3%E9%97%AE%E9%A2%98
















文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /2 下一条