1. tslib,其实从他的名字就可以看出它的,它是touchscreen的lib,其实这样还不够具体,其实它开始确实是为了touchscreen的鼠标驱动而发展起来的,且只是一个中间处理库,即将原始数据进行调整,比如触摸屏定位。只不过后来不知道什么原因,它火了,其他图形都支持这种方式,像高级版本的minigui,qt等成熟嵌入式图形系统。正因为如此,它也就不再局限于touchsrceen,只要是输入设备,只需在tslib里实现,标准的图形系统只需调用tslib的函数即可。
它将其他的输入设备数据处理后成为一个虚拟设备的数据,其他的图形系统只需使用这个虚拟的设备即可实现输入设备的读写操作了。后来发现tslib只不过是一个应用级软件,其他的图形系统使用的是tslib的函数,因此需要依赖这个库.
2. 开发环境:
Ubuntu 10.0.4
开发板 A10
交叉编译器 android平台的arm-none-linux-gnueabi
3. tslib 源码所在位置
https://github.com/kergoth/tslib
下载压缩包,解压,将文件夹拷贝到Ubuntn任意位置
4. 进入文件夹
生成configure
./autogen.sh
如果报错:
http://blog.csdn.net/ypoflyer/article/details/5765012
安装tslib中遇到的错误:./autogen.sh: 4: autoreconf: not found
是因为在不同版本的 tslib 下执行 autogen.sh 产生。它们产生的原因一样,是
因为没有安装 automake 工具, (ubuntu 10.04)用下面的命令安装好就可以了。
sudo apt-get install autoconf automake libtool
配置的时候
确保你已经配置了android平台的交叉编译器arm-none-linux-gnueabi
./configure --host=arm-none-linux-gnueabi --prefix=/home/macro/tslib/mytslib ac_cv_func_malloc_0_nonnull=yes --enable-inputapi=no -static
注意要写绝对路径(指定文件夹的绝对路径),将来拷贝的时候,在开发板上面也要是/home/macro/tslib/mytslib这个路径才行哦!不懂的可以继续往下看
make
make install
那么在mytslib文件夹中会出现如下四个文件夹
btn etc include lib
将etc/ts.conf 的参考配置:
# module_raw input
把#去掉 说明使用的是input 子系统的驱动模式到时候可以查看开发板上面的/dev/input/eventN (N>=0)
5. 将这四个文件夹中的内容,分别全部拷贝开发板的/home/macro/tslib/mytslib对应文件夹中,如果开发板没有这个文件夹的话,你就创建一个,然后将etc,bin,include,lib内容拷贝进去
如何使用NFS的方式挂载进行拷贝的没有什么问题,
有问题的是我用的U盘进行拷贝 造成/lib软链接失效,需从新link
进入/home/macro/tslib/mytslib /lib
#busybox rm -rf libts.so
# busybox rm -rf libts-1.0.so.0
# busybox ln -s libts-1.0.so.0.0.0 libts.so
# busybox ln -s libts-1.0.so.0.0.0 libts-1.0.so.0
6. 在进行测试之前要在开发板上配置如下操作
mkdir /data -----你可以先查看一下/目录有没有data,如果有的话就不用这条命令
touch /data/pointercal -----你可以查看一下如果有/data/ pointercal文件的话不用这条命令
7. 配置环境变量,使tslib可以在开发板上面运行
export TSLIB_ROOT=/home/macro/tslib/mytslib #我在编译tslib的时候指定的文件夹
export TSLIB_FBDEVICE=/dev/fb0 #触摸屏的效果往往需要在LCD屏幕上显示,LCD设备节点
export TSLIB_TSDEVICE=/dev/input/event1 #取决于具体的驱动设备了,事件驱动
export TSLIB_CALIBFILE=/data/pointercal #校准数据存储位置
export TSLIB_CONFFILE=$TSLIB_ROOT /etc/ts.conf #配置文件存储使用哪种驱动模块input或h3600
export TSLIB_PLUGINDIR=$TSLIB_ROOT /lib/ts #tslib的插件目录(滤波,去抖,校准)
export TSLIB_CONSOLEDEVICE=none #据本人猜测是 不对LED进行控制
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib #把libts.so加入动态搜索路径
8. 然后可以进行测试了进入开发板的/home/macro/tslib/mytslib/bin文件夹中
先运行ts_calibrate进行校准
运行ts_test进行测试
参考文献:
http://www.cnblogs.com/uvsjoh/archive/2011/08/25/2152947.html
http://www.360doc.com/content/12/0616/11/6828497_218489666.shtml