1.git clone https://github.com/kergoth/tslib
得到tslib
clx@Think:/work$ cd tslib
clx@Think:/work/tslib$ lsacinclude.m4 autom4te.cache CVS NEWS tslib.pc.in
aclocal.m4 ChangeLog etc plugins
AUTHORS configure INSTALL README
autogen-clean.sh configure.ac m4 src
autogen.sh COPYING Makefile.am tests
2.编译tslib库
Can't exec "libtoolize": No such file or directory at /usr/bin/autoreconf line 189.
Use of uninitialized value in pattern match (m//) at /usr/bin/autoreconf line 189.
configure.ac:25: error: possibly undefined macro: AC_DISABLE_STATIC
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.ac:26: error: possibly undefined macro: AC_ENABLE_SHARED
configure.ac:27: error: possibly undefined macro: AC_LIBTOOL_DLOPEN
configure.ac:28: error: possibly undefined macro: AC_PROG_LIBTOOL
autoreconf: /usr/bin/autoconf failed with exit status: 1
需要安装clx@Think:/work/tslib$ sudo apt-get install libtool
clx@Think:/work/tslib$./configure --prefix=/rootfs/opt/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes 直接安装到跟文件系统下
clx@Think:/work/tslib$make
clx@Think:/work/tslib$make install
在tslib目录下将生成如下文件
clx@Think:/rootfs/opt/tslib$ ls
bin etc include lib
3.配置开发板环境,指定环境变量
设置环境变量脚本tslib.sh,将其放在opt/tslib目录下
#!/bin/sh
export TSLIB_ROOT=/opt/tslib 目录
export TSLIB_TSDEVICE=/dev/input/event0 触摸屏设备文件
export TSLIB_CALIBFILE=/etc/pointercal 或者(ln -s /opt/tslib/etc/pointercal /etc/pointercal)
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=/dev/tty
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
解释: TSLIB_TSDEVICE //触摸屏设备文件名
Default (no inputapi): /dev/touchscreen/ucb1x00
Default (inputapi): /dev/input/event0
TSLIB_CALIBFILE //校准的数据文件,由ts_calibrate 校准程序生成
Default: ${sysconfdir}/pointercal
TSLIB_CONFFILE //配置文件名
Default: ${sysconfdir}/ts.conf
TSLIB_PLUGINDIR //插件目录 Default: ${datadir}/plugins
TSLIB_CONSOLEDEVICE //控制台设备文件名 Default: /dev/tty
TSLIB_FBDEVICE //FrameBuffer设备名
Default: /dev/fb0
以上环境变量在实际开发中的实际配置可以根据实际情况决定。
修改跟文件系统etc/profile文件,使在系统启动的时候就设置好触摸屏设备节点和环境变量
增加如下内容:
#/etc/profile
echo "Processing /etc/profile"
echo "set user path"
PATH=/bin:/sbin:/usr/bin:/usr/sbin
echo "set search library path"
LD_LIBRARY_PATH=/lib:/usr/lib
echo "set PS1"
PS1='[\u@\h:\w]\$'
#PS1='[$USER@\h:\w]\$'
HOSTNAME='/bin/hostname'
export PATH LD_LIBRARY_PATH HOSTNAME PS1
#建立触摸屏设备节点
echo "set touchscreen device node"
mkdir /dev/input
mknod /dev/input/event0 c 13 64
echo 8 > /proc/sys/kernel/printk
#设置触摸屏环境变量
echo "set touchscreen environmeng"
source /opt/tslib/tslib.sh
4.修改/opt/tslib/etc/ts.conf 文件,删除其中内容,改为
module_raw input(前面不能有空格)
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
第一行是tslib从linux的输入设备读取数据时需要用到的模块,这里指定的模块为input,具体需要用到哪个模块,需要参考其他数据。
第二行的pthres为Tslib提供的触摸屏灵敏度门槛插件。
第三行的variance为Tslib提供的触摸屏滤波算法插件。
第四行的dejitter为Tslib 提供的触摸屏去噪算法插件。
第五行linear为Tslib提供的触摸屏坐标变换插件。
否则会出现下面的错误
[root@MINI2440:/opt/tslib/bin]#./ts_calibrate
No raw modules loaded.
ts_config: No such file or directory
5.执行测试命令
运行校准程序
[root@MINI2440:/opt/tslib/bin]#./ts_calibratexres = 240, yres = 320
Took 8 samples...
Top left : X = 790 Y = 260
Took 6 samples...
Top right : X = 775 Y = 758
Took 6 samples...
Bot right : X = 211 Y = 755
Took 11 samples...
Bot left : X = 220 Y = 256
Took 9 samples...
Center : X = 500 Y = 508
-21.611938 -0.001735 0.280800
358.395020 -0.387937 -0.009336
Calibration constants: -1416360 -113 18402 23487776 -25423 -611 65536
注:1.在移植触摸屏驱动的时候浪费了很多时间,最后找到是因为自己的触摸屏驱动有问题,网上所说的cat /dev/input/event0有乱码出现不能确定触摸屏驱动是没问题的,后来更换了mini2440指南上的驱动就好了,之前是运行./ts_calibrate程序,触摸屏矫正图标没有反应。
2.使用strace ./ts_calibrate可以跟踪程序的运行状态。
1.官网下载
http://sourceforge.net/projects/strace/
版本strace-4.8.tar.xz
2.解压
xz -d strace-4.8.tar.xz
tar -xvf strace-4.8.tar
3../configure --host=arm-linux CC=arm-none-linux-gnueabi-gcc LD=arm-none-linux-gnueabi-ld
配置生成makefile
4.make
5.生产stace文件
将其拷贝到bin目录下即可使用
3.因为配置nfs时/nfsboot/rootfs 192.168.1.* (rw,sync,no_root_squash) //*和(之间有一个空格,导致跟文件系统是只读的,无法生成矫正文件,将空格去掉后即可解决此问题。
这个问题搞了几天很崩溃!!!!!!!!!!