minigui1.6.10在mini2440上的移植及tslib移植

参考文档:minigui1.6.10在mini2440上的移植

一、编译前准备

1.硬件环境
A. 主机
x86系列PC机。
B. 开发板
友善之臂mini2440开发板,T3.5寸液晶显示器。

2.软件环境

A. 主机操作系统
VMware虚拟机下的Fedora9

B. 开发板操作系统
嵌入式Linux,内核版本为2.6.25-14.fc9.i686

C. 交叉编译器
arm-linux-gcc-4.4.3(安装位置:/opt/FriendlyARM/toolschain/4.4.3/)。

3.相关说明
A. 命令
所有以#开头的均为在shell中执行的命令。
B. 交叉编译器位置
交叉编译器的安装位置为/opt/FriendlyARM/toolschain/4.4.3/,进行交叉编译产生的库都安装在/usr/local/arm_zlib/目录下,参考文档里面是把交叉编译库放到交叉编译器的位置。

C. 工作目录
默认的工作目录为/root/minigui,绝大多数操作都在此目录下进行。
D. 注释
对shell脚本进行的注释均放在该命令下一行的圆括号内。

4.下载MiniGUI图形库源码(CSDN下载)

A. 开发库libminigui-1.6.10.tar.gz
编译完成后生成三个库:它们分别是libminigui、libmgext以及libvcongui。libminigui 是提供窗口管理和图形接口的核心函数库,也提供了大量的标准控件;libmgext 是libminigui 的一个扩展库,提供了一些高级控件以及“文件打开”、“颜色选择”对话框等;libvcongui 则为Linux操作系统提供了一个应用程序可用的虚拟控制台窗口,从而可以方便地在MiniGUI环境中运行字符界面的应用程序。
B. 资源文件minigui-res-1.6.10.tar.gz
MiniGUI所使用的资源,包括基本字体、图标、位图和鼠标光标。

C. 示例程序mg-samples-str-1.6.10.tar.gz(这里我下载的是,mg-samples-1.6.10.tar.gz,也是可以的。)
《MiniGUI编程指南》的配套示例程序。

5.下载所依赖函数库源码
 A. zlib库
这是编译后面的库的基础。地址:http://www.zlib.net/zlib-1.2.3.tar.gz

B. png库
png图片支持库。地址:http://superb-east.dl.sourceforge.net/sourceforge/libpng/libpng-1.0.10rc1.tar.gz
C. jpeg库
jpeg图片支持库jpegsrc.v6b.tar.gz。地址:http://www.minigui.org/downloads
D. ttf库
TrueType字体的支持库。地址:
http://nchc.dl.sourceforge.net/sourceforge/freetype/freetype-1.3.1.tar.gz

E. popt库
编译mde需要。地址:http://gd.tuwien.ac.at/utils/rpm.org/dist/rpm-4.1.x/popt-1.7.tar.gz

6.下载上位机仿真程序

Qt虚拟缓冲帧qvfb-1.1.tar.gz,上位机仿真需要

7.复制根文件系统(这样较麻烦,可把相应的交叉编译的库文件下载到开发板/lib目录,勿需重新烧写系统。)

所有准备文件如下图,打包名称(minigui1.6.10在mini2440上的移植)下载链接:http://download.csdn.net/detail/mashang123456789/7531637

minigui1.6.10在mini2440上的移植及tslib移植_第1张图片

8.解压源码包
A. 建立工作目录及复制源码包
#mkdir   /root/minigui
(创建工作目录,绝大部分相关的操作抖将在此目录下进行)
#cd  /root/minigui
(进入工作目录)
#mkdir  source
(创建source目录,所有的源码包都放在此目录)

#cp …  source
(把所有下载的源码包复制到此目录)
#mkdir  arm
(创建arm目录,所有进行交叉编译所需的源码都放在此目录)

#mkdir  x86
(创建x86目录,所有进行仿真所需的源码都放在此目录)

新建的三个目录如左图所示。


B. 解压上位机仿真所需源码
#cd   /root/minigui/source
(进入源码包所在目录)
(1)#tar  zxvf   libminigui-1.6.10.tar.gz   –C   ../x86

(解压MiniGUI图形库源码到x86目录,-C选项的含义是更改解压缩目录)

(2)#tar  zxvf  minigui-res-1.6.10.tar.gz    –C   ../x86
(解压MiniGUI资源文件到x86目录)
(3)#tar   zxvf    mg-samples-1.6.10.tar.gz   –C   ../x86
(解压MiniGUI示例源码到x86目录)
(4)#tar   zxvf   mde-1.6.10.tar.gz   –C   ../x86
(解压MiniGUI综合演示源码到x86目录)
(5)#tar   zxvf    qvfb-1.1.tar.gz   –C     ../x86
(解压qvfb源码到x86目录)


C. 解压交叉编译所需源码
#cd   /root/minigui/source

(1)#tar  zxvf   libminigui-1.6.10.tar.gz   –C   ../arm
(解压MiniGUI图形库源码到arm目录)
(2)#tar   zxvf   minigui-res-1.6.10.tar.gz   –C   ../arm
(解压MiniGUI资源文件到arm目录)
(3)#tar  zxvf  mg-samples-1.6.10.tar.gz   –C   ../arm
(解压MiniGUI示例源码到arm目录)
(4)#tar   zxvf   mde-1.6.10.tar.gz    –C   ../arm
(解压MiniGUI综合演示源码到arm目录)
(5)#tar  zxvf   zlib-1.2.3.tar.gz   –C   ../arm
(解压zlib源码到arm目录)
(6)#tar   zxvf  libpng-1.0.10rc1.tar.gz    –C   ../arm
(解压png源码到arm目录)
(7)#tar  zxvf   jpegsrc.v6b.tar.gz   –C     ../arm
(解压jpeg源码到arm目录)
(8)#tar     zxvf     popt-1.7.tar.gz   –C   ../arm
(解压popt源码到arm目录)

(9)#tar   xvzf   freetype-1.3.1.tar.gz   -C   ../arm/

(解压字体源码)


9.目录及源码分布总览

minigui1.6.10在mini2440上的移植及tslib移植_第2张图片




二、建立仿真开发环境

1.安装minigui-res-1.6.10
#cd  /root/minigui/x86/minigui-res-1.6.10
#make  install
这样MiniGUI运行时所需的资源文件就被安装到/usr/local/lib/minigui/res/目录下。
2.编译libminigui-1.6.10
#cd   /root/minigui/x86/libminigui-1.6.10
#./configure
#make
#makeinstall
库文件被安装到系统中。

3.编译mg-samples-1.6.10
#cd   /root/minigui/x86/mg-samples-1.6.10
#./configure
#make
在src目录下可以看到生成的可执行程序。

4.编译mde-1.6.10
#cd   /root/minigui/x86/mde-1.6.10
#./configure
#make
在各个子目录里可以看到相应的可执行演示程序。

5.编译qvfb-1.1
#cd     /root/minigui/x86/qvfb-1.1

#./configure

执行上面configure语句时,就报错(如果没报错更好)

checking for Qt... configure: error: Qt (>= Qt 3.0.3) (headers and libraries) not found. Please check your installation!

报错的解决方法:参考链接http://blog.chinaunix.net/uid-25120309-id-3045220.html
(1)下载qt-devel-3.3.8-4.fc7.i386.rpm,我们是f9,这个是f7,需要强制安装#rpm -ivh qt-devel-3.3.8-4.fc7.i386.rpm --force --nodeps
(2)# ./configure  --with-qt-includes=/usr/lib/qt-3.3/include   --with-qt-libraries=/usr/lib/qt-3.3/lib   --with-qt-dir=/usr/lib/qt-3.3
(3)#make,然后再#make install

#make

6.在上位机上仿真MiniGUI应用程序

#qvfb  –width  640  –height   480  &

这里注意两点:

(1)这里可能报错说找不到库文件,可以按照上面参考链接的方法,把/usr/local/lib添加进去。或者export  LD_LIBRARY_PATH="/usr/local/lib/"
(2)这里qvfb一定要加上&,使其后台运行,若不执行,而直接执行后面的helloword,就会报错。

NEWGAL: Does not find matched engine: qvfb.
InitGUI: Can not get graphics engine information!

#cd  /root/minigui/x86/mg-samples-1.6.10/src
#./helloworld
如果一切顺利的话现在就可以在qvfb上面看到MiniGUI的界面了。还有mde子目录里面的程序,也可以直接执行

minigui1.6.10在mini2440上的移植及tslib移植_第3张图片



三、交叉编译图形库

1.编译zlib库

由于zlib 库的configure 脚本不支持交叉编译选项,所以我们只好使用符号链接把gcc指向我们的交叉编译器arm-linux-gcc,在编译完后再改回来即可。

A. 把gcc指向我们的交叉编译器arm-linux-gcc

#cd   /usr/bin
#mv   gcc     gcc_back

(备份gcc)

#ln  -s /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc    ./gcc
(创建gcc到arm-linux-gcc的符号连接)
#mvldld_back
(备份ld)

#ln  -s  /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-ld     ./ld
(创建ld到arm-linux-ld的符号连接)


B. 交叉编译zlib库
#cd/root/minigui/arm/zlib-1.2.3
#./configure    --prefix=/usr/local/arm_zlib/   --shared
(prefix选项把zlib库安装在/usr/local/arm_zlib/)

(shared说明生成共享库)
#make
#make  install

C. 改回gcc
#cd  /usr/bin
#rm  gcc
(删除gcc到arm-linux-gcc的符号连接)
#mv  gcc_back   gcc
(还原gcc)
#rm  ld
(删除ld到arm-linux-ld的符号连接)
#mv  ld_back   ld
(还原ld)

2.编译png库
这个是用来显示png图形的,MiniGUI里很多图都是png的,如果没有这个库,你的MiniGUI将无法正常工作。由于libpng 不提供有效的configure 脚本,所以只好自己动手改写Makefile文件了。

A. 改写Makefile
#cd  libpng-1.0.10rc1/
#cp  scripts/makefile.linux    Makefile
(把Scripts 下的一个Makefile拷出来自己动手改)
#vi Makefile

#viMakefile
(自己动手改Makefile)
CC=arm-linux-gcc
prefix=/usr/local/arm_zlib
ZLIBLIB=/usr/local/arm_zlib/lib
ZLIBINC=/usr/local/arm_zlib/include
(保存)

B. 编译安装
# make
# make  install

3.编译jpeg库
由于jpeg库的configure文件设计的有问题,得先用gcc编译一个dummy.c的文件,然后才能后面编译,不然的话就会出现libtool 找不到之类的错误。所以先本机编译,然后清除后,最后交叉编译即可解决这个问题。

A. 本机编译jpeg库
#cd  /root/minigui/arm/jpeg-6b
#./configure   --enable-shared   --enable-static
#make
#make  clean
B. 交叉编译jpeg库
#./configure   --prefix=/usr/local/arm_zlib   CC=arm-linux-gcc   --enable-shared     --enable-static
#make
#mkdir  –p   /usr/local/arm_zlib/man/man1

(安装前需要在arm-linux下建个目录,不然安装会出错,后来发现除了新建man/man1目录,还得新建bin目录:
#mkdir  -p  /usr/local/arm_zlib/bin)

#make  install

4.编译popt
#cd  /root/minigui/arm/popt-1.7
#./configure   --prefix=/usr/local/arm_zlib/    --host=arm-linux   --enable-shared     --enable-static
#make
#make  install

5.编译libttf库
libttf 库是TrueType字体的支持库,当然可以支持也可以不支持,这个库只能全手动安装和编译,先建立一个目录来存放其有用的或者说是我们所用到的库的源文件。
A. 复制源文件
#mkdir  -p  /root/minigui/arm/libttf/extend
#cd   /root/minigui/arm/
#cp  freetype-1.3.1/lib/*    freetype-1.3.1/lib/arch/ansi/*     libttf/
#cp   freetype-1.3.1/lib/extend/*    libttf/extend/

B. 交叉编译
#cd  libttf
#arm-linux-gcc  -c  -fPIC   -O2  freetype.c
(这个C源文件包括了其它所有的.c文件)
#arm-linux-gcc  -c   -fPIC  -O2  -I./    extend/*.c (是大写i)
(把extend下所有的.c文件全部编译)
#arm-linux-gcc    --shared   -o   libttf.so   *.o
(生成最后的动态链接库)
#cp  libttf.so    /usr/local/arm_zlib/lib/


6.编译libminigui(后面把触摸屏驱动加上,还需要重新编译一次)
#cd    /root/minigui/arm/libminigui-1.6.10

# ./configure   --prefix=/root/minigui/arm/target     --host=arm-linux    --target=arm-linux    --build=i386-linux    --with-osname=linux    --with-style=classic    --with-targetname=fbcon    --enable-autoial    --enable-rbf16   --disable-vbfsupport   CC=arm-linux-gcc

#make
#make  install
(这样就会把交叉编译好的库文件和头文件安装在/root/minigui/arm/target目录)
#cp  /root/minigui/arm/target/lib/*   /usr/local/arm_zlib/lib/

#cp   -r   /root/minigui/arm/target/include/*     /usr/local/arm_zlib/include/

(把交叉编译好的库文件和头文件复制到同一个库位置,便于使用)

7.编译mg-samples

执行到这里说好多没有声明,所以有两种方法:
(1)单个文件编译生成
#arm-linux-gcc   helloworld.c  -o   helloworld   -I/usr/local/arm_zlib/include   -L/usr/local/arm_zlib/lib   -lminigui  -lmgext  -lmgext  -lm  -lpthread  -ljpeg   -lpng  -lttf  -lz
(2)修改src中的Makefile文件,修改两处,再make就可以生成所有的arm可执行文件了。
CC = arm-linux-gcc -I/usr/local/arm_zlib/include -L/usr/local/arm_zlib/lib
LIBS =  -lminigui -lmgext -lmgext -lm -lpthread -ljpeg  -lpng -lttf -lz

8.编译mde

(1)修改/minigui/arm/mde-1.6.10/notebook中的Makefile,和7中一样的设置就可以了。

四、部署图形库

(参考文档是制作开发板根文件系统,然后烧写到mini2440中,参考MINIGUI移植到2440嵌入式,将相应的res文件和交叉库文件下载到mini2440开发就可以了。)

1.复制资源文件

把/usr/local/lib/minigui/res目录下的所有文件拷贝到开发板上,其开发板上的目录如下形式/usr/local/lib/minigui/res/,实际上这个目录与配置文件MiniGUI.cfg里的相应内容的目录一致,以便找到相应的资源。

可以将res文件打包

[root@mashang /]# cd /usr/local/lib/minigui/
[root@mashang minigui]# ls
res
[root@mashang minigui]# tar cvzf 1.tar.gz res/

再把1.tar.gz通过tftp或者其他方式下载到开发板/usr/local/lib/minigui/目录下,再解压就可以了,结果如下图



2将相应交叉编译的库文件下载到mini2440的/lib/目录下

网上较常见的方法就是把每个库中所有的文件都下载到开发板中,这种方法比较笨。可以先不下载这些库,到最后执行测试程序helloworld时,会报错说找不到某些库,再下载,这样可以节约mini2440有限的存储资源(64M)。必需的交叉编译库名称如下:

libminigui-1.6.so.10
libmgext-1.6.so.10
libpng.so.2
libttf.so
libz.so.1

把五个库中的这五个文件下载到开发板/lib/目录下就可以了。

3.在开发板上三处需要进行相应的配置

(1)在开发板的/etc目录下建立ld.so.conf文件,并添加如下内容:
/usr/local/lib
/usr/lib
/lib    #实际上添加这个库文件目录就行了,目的是运行helloworld的时候,能找到相应的库文件,其他两个库目录可选,我加上了它,是为了系统扩展。


(2)下载MiniGui.cfg到开发板/etc/目录中

# cp /root/minigui/arm/target/etc/MiniGUI.cfg /tftpboot/

再通过tftp或者其他方式下载到开发板/etc/中,并修改部分配置:


minigui1.6.10在mini2440上的移植及tslib移植_第4张图片

要修改的部分基本就是上图四个框子里面部分。第一个框改成fbcon ,没有异议。第二个框子有的改成cosole或者tslib,在执行测试程序说只有dummy,所以尝试几种后就改成dummy了。第三个框子也有好几种情况,后来查看开发板/dev/input/目录,有mice和event0,后面的文档说填event0. 第三个是因为mini2440开发板用的液晶是T3.5寸的,是竖屏的,分辨率就是240*320了。这个我先写成320*240,后面执行测试程序时,会报错。但是第二三个框填什么不会报错,程序能执行,只是触摸屏不能用,这个后面会解决的。

(3)在/etc/init.d/rcS脚本文件最后添加如下内容:

minigui1.6.10在mini2440上的移植及tslib移植_第5张图片

1)因为要运用minigui,需要关闭qtopia,所以可以kill -9掉,或者如上图直接注释掉,根本不让启动;

2)tty后面的数字代表控制台,有的设为tty0,这里根据rcS文件中前面的部分,所以设为/dev/tty1


(4)运行测试程序(这一步就可以测试需要哪些交叉编译库了)

[root@FriendlyARM /long]# ./helloworld

minigui1.6.10在mini2440上的移植及tslib移植_第6张图片


至此minigui在mini2440上的移植基本完成了,各个测试程序都能正常启动运行,但是有个bug就是触摸屏不能,所以下面就来解决触摸屏的问题。


五minigui1.6.10+tslib触摸屏矫正解决方案

参考链接2:http://blog.csdn.net/canbus/article/details/8624060

(1)交叉编译tslib-1.4.tar.gz

#tar  xvzf   tslib-1.4.tar.gz   -C   /root/minigui/arm/

# cd /root/minigui/arm/tslib/

#./autogen.sh

#./configure  --host=arm-linux   --prefix=/root/minigui/arm/arm_tslib

tslib安装目录不能是当前目录 /root/minigui/arm/tslib/,不然后面make install会报错

#make

出现错误:s_test.c:(.text+0x1e4): undefined reference to `rpl_malloc' 解决办法:vi  config.h 
        注释掉  #define malloc rpl_malloc

再#make 

#make install

  

交叉编译完成,下一步是把tslib拷贝到mini2440 /usr/local中

(2)拷贝结果如下图


(3)配置tslib环境:修改/etc/profile配置文件

vi /etc/profile

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
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

结果如下图


保存完成后,执行下面语句,使其生效。

#source /etc/profile

(4)另外/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,发现触摸屏还是不能用。安装参考链接3尝试,最后可以解决

参考链接3: http://blog.sina.com.cn/s/blog_82665f8c0100yzgd.html

(5)dummy.c重新配置编译libminigui(tslibminigui的链接)

因为MiniGUI自带的IAL 输入引擎中,有一个叫做dummy.c。为了尽可能简单,在这里在其基础上稍作修改,使之符合我们的要求即可,下面为改后的dummy.c文件

/*
** $Id: dummy.c 7335 2007-08-16 03:38:27Z xgwang $
**
** dummy.c: The dummy IAL engine.
** 
** Copyright (C) 2003 ~ 2007 Feynman Software.
** Copyright (C) 2001 ~ 2002 Wei Yongming.
**
** Created by Wei Yongming, 2001/09/13
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include "common.h"
#include "tslib.h"
#ifdef _DUMMY_IAL
#include <sys/ioctl.h>
#include <sys/poll.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <linux/kd.h>
#include "misc.h"
#include "ial.h"
#include "dummy.h"

#ifndef _DEBUG
#define _DEBUG // for debugging
#endif
 
typedef struct {
unsigned short pressure;
unsigned short x;
unsigned short y;
unsigned short pad;
} TS_EVENT;
static unsigned char state [NR_KEYS];
static int mousex = 0;
static int mousey = 0;
static TS_EVENT ts_event;
static struct tsdev *ts;
 
 
static int mouse_update(void)
{
return 1;
}
static void mouse_getxy(int *x, int* y)
{
if (mousex < 0) mousex = 0;
if (mousey < 0) mousey = 0;
if (mousex > 239) mousex = 239;
if (mousey > 319) mousey = 319;
#ifdef _DEBUG
// printf ("mousex = %d, mousey = %d/n", mousex, mousey);
#endif
*x = mousex;
*y = mousey;
}
static int mouse_getbutton(void)
{
return ts_event.pressure;
}
#ifdef _LITE_VERSION
static int wait_event (int which, int maxfd, fd_set *in, fd_set *out, fd_set *except, struct timeval *timeout)
#else
static int wait_event (int which, fd_set *in, fd_set *out, fd_set *except,
struct timeval *timeout)
#endif
{
struct ts_sample sample;
int ret = 0;
int fd;
fd_set rfds;
int e;
if (!in) {
in = &rfds;
 FD_ZERO (in);
}
fd = ts_fd(ts);
if ((which & IAL_MOUSEEVENT) && fd >= 0) {
FD_SET (fd, in);
#ifdef _LITE_VERSION
if (fd > maxfd) maxfd = fd;
#endif
}
#ifdef _LITE_VERSION
e = select (maxfd + 1, in, out, except, timeout) ;
#else
e = select (FD_SETSIZE, in, out, except, timeout) ;
#endif
if (e > 0) {
// input events is coming
if (fd > 0 && FD_ISSET (fd, in)) {
FD_CLR (fd, in);
 ts_event.x=0;
ts_event.y=0;
ret = ts_read(ts, &sample, 1);
if (ret < 0) {
perror("ts_read()");
exit(-1);
}
ts_event.x = sample.x;
ts_event.y = sample.y;
ts_event.pressure = (sample.pressure > 0 ? 4:0);
// if (ts_event.pressure > 0 &&
if((ts_event.x >= 0 && ts_event.x <= 239) &&
 (ts_event.y >= 0 && ts_event.y <= 319)) {
mousex = ts_event.x;
mousey = ts_event.y;
// printf("ts_event.x is %d, ts_event.y is %d------------------------------------->/n",ts_event.x ,ts_event.y);
}
//#ifdef _DEBUG
// if (ts_event.pressure > 0) {
// printf ("mouse down: ts_event.x = %d, ts_event.y = %d,ts_event.pressure = %d/n",ts_event.x,ts_event.y,ts_event.pressure);
// }
//#endif
ret |= IAL_MOUSEEVENT;
return (ret);
}
}
else if (e < 0) {
return -1;
}
return (ret);
}
BOOL InitDummyInput(INPUT* input, const char* mdev, const char* mtype)
{
char *ts_device = NULL;
if ((ts_device = getenv("TSLIB_TSDEVICE")) != NULL) {
// open touch screen event device in blocking mode
ts = ts_open(ts_device, 0);
} else {
#ifdef USE_INPUT_API
ts = ts_open("/dev/input/0raw", 0);
#else
ts = ts_open("/dev/touchscreen/ucb1x00", 0);
#endif
}
#ifdef _DEBUG
printf ("TSLIB_TSDEVICE is open!!!!!!!!!!!/n");
#endif
if (!ts) {
perror("ts_open()");
exit(-1);
}
if (ts_config(ts)) {
perror("ts_config()");
exit(-1);
}
input->update_mouse = mouse_update;
input->get_mouse_xy = mouse_getxy;
input->set_mouse_xy = NULL;
input->get_mouse_button = mouse_getbutton;
input->set_mouse_range = NULL;
input->wait_event = wait_event;
mousex = 0;
mousey = 0;
ts_event.x = ts_event.y = ts_event.pressure = 0;
return TRUE;
}
void TermDummyInput(void)
{
if (ts)
ts_close(ts);
}
#endif 
(6)对minigui重新交叉编译

minigui进行重新编译了,主要是lib库,因为用到了tslib 库,所以必须在编译的时候告诉MiniGUI 到哪里去找到tslib 相关的头文件和共享库文件。
# ./configure --prefix=/root/minigui/arm/target   --host=arm-linux  --target=arm-linux  --build=i386-linux  --with-osname=linux  --with-style=classic  --with-targetname=fbcon  --enable-autoial  --enable-rbf16  --disable-vbfsupport  CC=arm-linux-gcc   CFLAGS="-I/root/minigui/arm/arm_tslib/include -L/root/minigui/arm/arm_tslib/lib -lts"

make

make install

把新的libminigui-1.6.so.10下载到开发板/lib/目录

(7)重新生成arm测试程序

1)#arm-linux-gcc helloworld.c -o helloworld -I/usr/local/arm_zlib/include -L/usr/local/arm_zlib/lib -L/root/minigui/arm/arm_tslib/lib -lminigui -lmgext -lmgext -lm -lpthread -ljpeg  -lpng -lttf -lz -lts

这里添加了两个:-L/root/minigui/arm/arm_tslib/lib还有-lts

2)Makefile重新生成notebook

CC = arm-linux-gcc -I/usr/local/arm_zlib/include -L/usr/local/arm_zlib/lib -L/root/minigui/arm/arm_tslib/lib

LIBS =  -lminigui -lmgext -lmgext -lm -lpthread -ljpeg  -lpng -lttf -lz -lts


(8)测试程序

运行/usr/local/tslib/bin/ts_calibrate 校准触摸屏,再执行notebook,触摸屏就可以用了。minigui1.6.10在mini2440上的移植及tslib移植_第7张图片

你可能感兴趣的:(minigui1.6.10在mini2440上的移植及tslib移植)