环境:
PC:debian 6
硬件:mini2440
arm-linux-gcc:2440 自带的arm-linux-gcc-4.4.3.tar
软件包:
jpegsrc.v8c.tar.gz
minigui-res-be-3.0.12.tar.gz
libminigui-gpl-3.0.12.tar.gz
freetype-1.3.1.tar.gz
mg-samples-3.0.12.tar.gz
libpng-1.0.59.tar.gz
zlib-1.2.6.tar.gz
移植开始:
step1:建目录/opt/minigui/arm/cross,编译完的目标文件全部放在cross目录下。源文件解压到/opt/minigui/arm下
step2:编译Freetype库
cd freetype-1.3.1/
./configure --host=arm-linux --enable-static --prefix=/opt/minigui/arm/cross
vi Makefile
第12行 all: ttlib ttest ttpo为all: ttlib ttpo
第34行 注释(或删)掉,即#cd $(FTTESTDIR); $(MAKE) -f $(MAKEFILE) install
否则make就会出现错误
make
make install
step3:编译JPEG库
cd jpeg-8c/
CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
AS=arm-linux-as \
AR=arm-linux-ar \
./configure --prefix=/opt/minigui/arm/cross --build=i386-linux \
--host=arm-linux --target=arm-linux --enable-shared
make
make install
step4:编译PNG库
cd libpng-1.0.59/
CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
AS=arm-linux-as \
AR=arm-linux-ar \
./configure --prefix=/opt/minigui/arm/cross --build=i386-linux \
--host=arm-linux --target=arm-linux
make
make install
step5:编译zlib库
cd zlib-1.2.6/
CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
AS=arm-linux-as \
AR=arm-linux-ar \
./configure --prefix=/opt/minigui/arm/cross --shared
make
make install
step6:编译资源库
cd minigui-res-be-3.0.12/
CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
AS=arm-linux-as \
AR=arm-linux-ar \
./configure --prefix=/opt/minigui/arm/cross
make
make install
step7:编译核心库
cd libminigui-gpl-3.0.12/
CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
AS=arm-linux-as \
AR=arm-linux-ar \
CFLAGS="-I/opt/minigui/arm/cross/include -I/opt/toolschain/4.4.3/arm-none-linux-gnueabi/include " \
CPPFLAGS="-g -I/opt/minigui/arm/cross/include -I/opt/toolschain/4.4.3/arm-none-linux-gnueabi/include " \
CXXFLAGS="-g -I/opt/minigui/arm/cross/include -I/opt/toolschain/4.4.3/arm-none-linux-gnueabi/include " \
./configure --prefix=/opt/minigui/arm/cross --host=arm-linux \
--target=arm-linux --build=i386-linux --with-osname=linux \
--with-targetname=fbcon --enable-autoial \
--disable-vbfsupport --enable-tslibial
(上面的--enable-tslibial选项是minigui支持触摸屏必选的选项)
在configure过程中会提示找不到某个文件,不要理它。继续
make
make install
step8:编译示例库
cd mg-samples-3.0.12/
这个库 好像有问题。其实我们只要make一个helloword出来测试是否移植成功就可以了。哪就手工编译一个helloworld
cd /opt/minigui/arm/mg-samples-3.0.12/src
arm-linux-gcc -o helloworld helloworld.c -L/opt/minigui/arm/cross/lib -lminigui_ths -ljpeg -lm -lpthread -ldl -lpng -lts -I/opt/minigui/arm/cross/include
ok,编译成功。
交叉编译完成。把上面生成的minigui库拷贝到mini2440的根文件系统中。我用的是nfs
cp /opt/minigui/arm/cross /opt/2440/rootfs_qtopia_qt4/usr/local -dr
修改开发板上minigui配置文件vi /usr/local/etc/MiniGUI.cfg
把其中的system段修改成如下:
[system]
# GAL engine and default options
gal_engine=fbcon
defaultmode=240x320-16bpp
# IAL engine
ial_engine=tslib
#ial_engine=console
#mdev=/dev/input/mice
mdev=/dev/input/event0
mtype=IMPS2
[fbcon]
defaultmode=240x320-16bpp
接下来就要移植tslib
下载源码
$ git clone https://github.com/kergoth/tslib
编译:
$ ./autogen.sh
$ ./configure --host=arm-linux --prefix=/opt/minigui/arm/cross/tslib
$ make
$ make install
完成后把tslib拷贝到mini2440 /usr/local中
配置tslib环境:
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal_a70
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
另外/usr/local/tslib/etc/ts.conf 中的内容应该是:
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
运行/usr/local/tslib/bin/ts_calibrate 校准触摸屏
最后把helloworld拷贝到2440中.运行。
参考:
http://hi.baidu.com/tracyangrad/item/81c11a0cfc89560b6c904866
http://www.latelee.org/embedded-linux/120-porting-linux-tslib.html
http://sgbihu.com/?p=249