原创
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条评论)
登录后参与讨论