用tslib1.4校准mini2440触摸屏

1.git clone https://github.com/kergoth/tslib

得到tslib

clx@Think:/work$ cd tslib

clx@Think:/work/tslib$ ls
acinclude.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库

clx@Think:/work/tslib$ ./autogen.sh
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_calibrate
xres = 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)     //*和(之间有一个空格,导致跟文件系统是只读的,无法生成矫正文件,将空格去掉后即可解决此问题。

这个问题搞了几天很崩溃!!!!!!!!!!


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值