首页 > 编程学习 > arm linux移植笔记,arm-linux学习笔记之minigui移植

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

这个配置一定可用. 还要注意库的使用

Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000