tslib的交叉编译
Tslib的官方下载地址为一个CVS服务器,下载方法为:
[root@localhost]#export CVSROOT=:pserver:cvs@pubcvs.arm.linux.org.uk:/mnt/src/cvsroot
[root@localhost]#cvs login
[root@localhost]#cvs co tslib
获得Tslib的源代码后,需要首先进行编译,下面以Tslib 1.3为例介绍Tslib的编译过程:
[root@localhost]#cd ../tslib1.3
//指定交叉编译工具
[root@localhost tslib-1.3]# export CC= /opt/host/armv4l/bin/armv4l-unknown-linux-gcc
//生成config文件
[root@localhost tslib-1.3]#./autogen.sh
[root@localhost tslib-1.3]#export PATH=/opt/host/armv4l/armv4l-unknown-linux
//避免检查ac_cv_func_malloc_0_nonnull
[root@localhost tslib-1.3]#echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
//配置目标机、缓冲、安装路径
[root@localhost tslib-1.3]# ./configure --host=armv4l-unknown-linux --cache-file=arm-linux.cache --prefix=/opt/host/armv4l/armv4l-unknown-linux/tslib --sysconfdir=/etc
****************************************************
在make之前,为了支持触 摸屏,打开src/ts_read_raw.c文件,查看触摸屏驱动程序数据结构,看与ts_read_raw.c结构中的哪个一样,就将代码中的 char *defaulttseventtype="UCB1x00"; 修改为 自己板子上对应的驱动结构。
因为我的驱动对应的是h3600_ts_event结构
typedef struct {
unsigned short pressure;
unsigned short x;
unsigned short y;
unsigned short pad;
} TS_RET;
所以修改为:
char *defaulttseventtype="H3600";
************************************
如果不修改源代码,也可以在后面的测试中重新指定环境变量
export TSLIB_TSEVENTTYPE=H3600 //通过这个对tslib中的设备结构体定义
*****************************************************
如果你触摸屏驱动程序支持ioctl操作,上面的configure操作中的--enable-inputapi=no你可以删除。
然后就可以make了
*************************************************
[root@localhost tslib-1.3]# make
[root@localhost tslib-1.3]# make install
make 时候在fc6下出现的错误信息如下:
only absolute run-paths are allowed错误
解决办法:要修改/tslib/plugins/Makefile里面找rpath
将LDFLAGS :=$(LDFLAGS) -rpath $(PLUGIN_DIR)
修改为:
LDFLAGS :=$(LDFLAGS) -rpath `cd $(PLUGIN_DIR) && pwd`
这样就可以在/opt/host/armv4l/armv4l-unknown-linux/tslib目录下看到相关的应用程序、共享库、配置文 件等了,需要说明的是在嵌入式中,由于触摸屏的种类多样、质量不一,采用Tslib的参考配置往往无法获得较好的触摸屏触摸效果,同样需要经过大量的测试 才能得到满意的配置参数,恶劣情况下,甚至需要对Tslib的算法进行进一步的优化。
转载注明出处:http://hi.baidu.com/luv%5Fresplendent/modify/blog/248690ada8cd270f4b36d6ff