原创
arm-linux学习笔记之minigui移植
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条评论)
登录后参与讨论