转载时请表明原文出处(http://blog.sina.com.cn/wyw1976)及作者邮箱(wyw1976@gmail.com)
本文关注的是tslib的编译和使用。
- 如果想了解触摸屏的校验原理,可以参考:http://blog.sina.com.cn/s/blog_5d9051c00100ee6w.html
- 如果想了解tslib的校验算法实现,可以参考:http://blog.sina.com.cn/s/blog_5d9051c00100eec9.html
1. 下载最新源码 (v1.4)
apt-get source tslib
2. 运行 "autogen.sh"
3. 运行 "./configure --host=arm-linux"
4. 在tslib-1.0中运行make
可能报错“ts_test.c:(.text+0x200): undefined reference to `rpl_malloc'”,原因是在tslib-1.0\config.h中有一行定义“#define malloc rpl_malloc”,直接注释即可,除非你自己实现了一个malloc版本
5.重新make, 成功。
按照上述步骤编译成功后, 相应的binaries存在如下目录中:
tslib-1.0/src/.libs : libts.so
tslib-1.0/plugins/.libs: 所有的plugin odule, 如input.so, pthres.so, linear.so等
tslib-1.0/tests/.libs: 所有的测试实例,ts_calibrate, ts_harvest等。
6. 运行ts_calibrate and ts_test
(1)在运行tslib-1.0/tests/.libs/ts_calibrate之前,需要设计一些环境变量,它们是:
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/test/ts_lib/tslib-1.0/etc/ts.conf
export TSLIB_PLUGINDIR=/test/ts_lib/tslib-1.0/plugins/.libs
export LD_LIBRARY_PATH=/test/ts_lib/tslib-1.0/src/.libs
export TSLIB_CALIBFILE=/test/ts_lib/tslib-1.0/etc/pointercal
后面的目录指向开发板上的目录(如nfs等)
(2)在tslib-1.0/tests 目录下有一个ts_calibrate的程序,这是一个脚本程序,是对tslib-1.0/tests/.libs/ts_calibrate的封装,如果直接运行这个脚本,在我的机器上出现“segmentation Fault"
(3)我选择直接运行tslib-1.0/tests/.libs/ts_calibrate, 报错“No raw modules loaded.”, 原因是缺省时,tslib将etc/ts.conf中所有的raw module 注释掉了,打开第一项“module_raw input”。
(4) 重新运行,应该成功.在屏幕上出现需要校正的“+”,校验后的结果存在在TSLIB_CALIBFILE中。