打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
编译tslib1.4
来源: ChinaUnix博客  日期: 2009.07.01 22:46 (共有条评论)我要评论
参考了网上各位高手的资料,谢谢分享,具体网址我没保存,不好意思拉
Tslib1.4编译
在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。
Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准
等 功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。在Qtopia
4.*版本中,默认的Tslib版本为Tslib
1.4。在Qtopia
2.*版本中,默认的Tslib版本为Tslib
1.3。
1
通过CVS方式下载tslib,不过在ubuntu8.10下要先下载CVS,sudo
apt-get install cvs
$export
CVSROOT=:pserver:anoncvs@cvs.handhelds.org:/cvs
$cvs login
Logging
in to :pserver:anoncvs@cvs.handhelds.org:2401/cvs
CVS password:
anoncvs
cvs login: CVS password file /home/tekkaman/.cvspass does
not exist - creating a new file
$cvs co apps/tslib
在当前的目录下会有一个apps文件夹,其中的tslib目录就是我们需要的。
2
产生configure文件,在tslib目录下执行autogen.sh,但执行时提示autoconf等出错,这也是因为ubuntu没有安装这些工具,sudo
apt-get install autoconf automake libtool等终端会自动将其它的依赖包也下载过来。
tangcong@tangcong-laptop:~/apps/tslib$
export CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
tangcong@tangcong-laptop:~/apps/tslib$
export CXX=/usr/local/arm/3.4.1/bin/arm-linux-g++
tangcong@tangcong-laptop:~/apps/tslib$
./autogen.sh
Libtoolize...libtoolize:
putting auxiliary files in `.'.
libtoolize:
copying file `./ltmain.sh'
libtoolize:
Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
libtoolize:
rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize:
Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
Done.
Aclocal...Done.
Autoheader...Done.
Automake...configure.ac:21:
installing `./config.guess'
configure.ac:21:
installing `./config.sub'
Done.
Autoconf...Done.
Now
you can do ./configure, make, make install.
3帧缓冲文件以及配置
~/working/tslib$
echo "ac_cv_func_malloc_0_nonnull=yes" >$ARCH_tslib.cache
避免检查ac_cv_func_malloc_0_nonnull,如果不写这句,在Make时候会出现undefined
reference to `rpl_malloc' 的错误。
~/working/tslib$
./configure --prefix=home/tangcong/working/share/usr/tslib
--host=arm-linux --cache-file=$ARCH_tslib.cache
--enable-inputapi=no
/configure
--host=$ARCH-linux --prefix=/usr/local --cache-file=$ARCH-linux.cache
--enable-inputapi=no
--enable-inputapi=no:看你的触摸屏驱动是否支持ioctl操作,如果支持就不用写上,不支持就要添上,如果不添加会有
ts_open:Inappropriate
ioctol for device
ts_open: No such file or
directory
等错误(网上别人的文档是这么说的,我没有试过不加这个参数会怎样,感兴趣的试一下)
生成的文件在Build目录中。我添加了enable-inputapi这个选项,但是提示ts_open
no such file错误,那么我就要将这个选项去掉。
4
如果一切顺利,就可以执行make,这是又提示出错。在ts_calibrate.c中,open_missing类似的错误。
#include
if
((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {
cal_fd
= open (calfile, O_CREAT | O_RDWR,S_IRUSR | S_IWUSR | S_IRGRP |
S_IROTH);
}
else {
/*cal_fd
= open ("/etc/pointercal", O_CREAT | O_RDWR);*/
cal_fd
= open ("/etc/pointercal", O_CREAT | O_RDWR,S_IRUSR |
S_IWUSR | S_IRGRP | S_IROTH);
}
sprintf
(cal_buffer,"%d %d %d %d %d %d %d",
在make,make
install.得到了Build文件夹后,将其移到文件系统的Lib目录下,为了方便起见,将其更名为tslib.
Mv build tslib.
注意tslib依赖的动态链接库文件,记得要拷贝到根文件系统的/lib里,并修改/etc/porfile就好了
在profile文件中添加如下代码:
echo
"Set ENV for tslib......"
export
TSLIB_ROOT=/lib/tslib
export
TSLIB_TSDEVICE=/dev/event0
export
TSLIB_CALIBFILE=/etc/pointercal
export
TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export
TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export
TSLIB_CONSOLEDEVICE=none
export
TSLIB_FBDEVICE=/dev/fb0
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
下面就Tslib的环境变量、配置文件等进行简要的介绍。
1. 环境变量
为了实现Tslib的正确运行,需要对如下的Tslib的环境变量进行配置:
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  //设备名
Default: /dev/fb0
以上环境变量在实际开发中的实际配置可以根据实际情况决定。
2. 配置文件
除了环境变量以外,Tslib的配置文件ts.conf同样是个十分重要的部分,在ts.conf中配置了需要加载的插件、插件加载顺序以及插件的一些约束参数,这些配置参数对触摸屏的触摸效果具有十分重要的影响。
下面是Tslib
1.4中的ts.conf的参考配置:
# Uncomment if you wish to use
the linux input layer event interface
# module_raw input
# Uncomment if you're using a
Sharp Zaurus SL-5500/SL-5000d
# module_raw collie
# Uncomment if you're using a
Sharp Zaurus SL-C700/C750/C760/C860
# module_raw corgi
# Uncomment if you're using a
device with a UCB1200/1300/1400 TS interface
# module_raw ucb1x00
# Uncomment if you're using an
HP iPaq h3600 or similar
# module_raw h3600
# Uncomment if you're using a
Hitachi Webpad
# module_raw mk712
# Uncomment if you're using an
IBM Arctic II
# module_raw arctic2
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
其中pthres
为Tslib提供的触摸屏灵敏度门槛插件;variance
为Tslib提供的触摸屏滤波算法插件;dejitter
为Tslib提供的触摸屏去噪算法插件;linear为Tslib提供的触摸屏坐标变换插件。
在Qtopia中,就触摸屏的调试问题主要涉及到以下三个部分:触摸屏驱动、Tslib、QTslibTPanelHandlerPrivate封装。
触摸屏驱动为与硬件直接接触部分,为上层的Tslib提供最原始的设备坐标数据,并可以配置采样间隔、屏幕灵敏度等。采样间隔决定了单位时间内的采样数
量,在其他参数不变的情况下,采样间隔越小意味着单位时间内的采样数量越多,也就意味着采样越逼真、越不容易出现采样信息丢失如输入法书写时丢笔划的情
况,但因为噪声的影响,采样间隔越小同时也意味着显示出来的图形的效果越差。
Tslib为触摸屏驱动和应用层之间的适配层,其从驱动处获得原始的设备坐标数据,通过一系列的去噪、去抖、坐标变换等操作,来去除噪声并将原始的设备坐标转换为相应的屏幕坐标。
在tslib中为应用层提供了2个主要的接口ts_read()和ts_read_raw(),其中ts_read()为正常情况下的借口,ts_read_raw()为校准情况下的接口。
正常情况下,tslib对驱动采样到的设备坐标进行处理的一般过程如下:
raw device --> variance -->
dejitter --> linear --> application
module module module
校准情况下,tslib对驱动采样到的数据进行处理的一般过程如下:
raw device--> Calibrate
QTslibTPanelHandlerPrivate为tslib提供了应用层封装,为tslib与应用层的接口部分。
在触摸屏调试过程中,涉及到的参数主要有采样间隔(驱动)、灵敏度(驱动)、去噪算法及约束(tslib)、去抖算法及约束(tslib)、ts门槛值(tslib)。
由于各种相关期间的影响,在不同的硬件平台上,相关参数可能需要调整。以上参数的相互关系为:采样间隔越大,采样点越少,采样越失真,但因为信息量少,容
易出现丢笔划等丢失信息情况,但表现出来的图形效果将会越好;去噪算法跟采样间隔应密切互动,采样间隔越大,去噪约束应越小,反之采样间隔越小,去噪约束
应越大。去抖算法为相对独立的部分,去抖算法越复杂,带来的计算量将会变大,系统负载将会变重,但良好的去抖算法可以更好的去除抖动,在进行图形绘制时将
会得到更好的效果;灵敏度和ts门槛值为触摸屏的灵敏指标,一般不需要进行变动,参考参考值即可
编译tslib1.4
来源: ChinaUnix博客  日期: 2009.07.01 22:46 (共有条评论)我要评论
参考了网上各位高手的资料,谢谢分享,具体网址我没保存,不好意思拉
Tslib1.4编译
在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。
Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准
等 功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。在Qtopia
4.*版本中,默认的Tslib版本为Tslib
1.4。在Qtopia
2.*版本中,默认的Tslib版本为Tslib
1.3。
1
通过CVS方式下载tslib,不过在ubuntu8.10下要先下载CVS,sudo
apt-get install cvs
$export
CVSROOT=:pserver:anoncvs@cvs.handhelds.org:/cvs
$cvs login
Logging
in to :pserver:anoncvs@cvs.handhelds.org:2401/cvs
CVS password:
anoncvs
cvs login: CVS password file /home/tekkaman/.cvspass does
not exist - creating a new file
$cvs co apps/tslib
在当前的目录下会有一个apps文件夹,其中的tslib目录就是我们需要的。
2
产生configure文件,在tslib目录下执行autogen.sh,但执行时提示autoconf等出错,这也是因为ubuntu没有安装这些工具,sudo
apt-get install autoconf automake libtool等终端会自动将其它的依赖包也下载过来。
tangcong@tangcong-laptop:~/apps/tslib$
export CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
tangcong@tangcong-laptop:~/apps/tslib$
export CXX=/usr/local/arm/3.4.1/bin/arm-linux-g++
tangcong@tangcong-laptop:~/apps/tslib$
./autogen.sh
Libtoolize...libtoolize:
putting auxiliary files in `.'.
libtoolize:
copying file `./ltmain.sh'
libtoolize:
Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
libtoolize:
rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize:
Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
Done.
Aclocal...Done.
Autoheader...Done.
Automake...configure.ac:21:
installing `./config.guess'
configure.ac:21:
installing `./config.sub'
Done.
Autoconf...Done.
Now
you can do ./configure, make, make install.
3帧缓冲文件以及配置
~/working/tslib$
echo "ac_cv_func_malloc_0_nonnull=yes" >$ARCH_tslib.cache
避免检查ac_cv_func_malloc_0_nonnull,如果不写这句,在Make时候会出现undefined
reference to `rpl_malloc' 的错误。
~/working/tslib$
./configure --prefix=home/tangcong/working/share/usr/tslib
--host=arm-linux --cache-file=$ARCH_tslib.cache
--enable-inputapi=no
/configure
--host=$ARCH-linux --prefix=/usr/local --cache-file=$ARCH-linux.cache
--enable-inputapi=no
--enable-inputapi=no:看你的触摸屏驱动是否支持ioctl操作,如果支持就不用写上,不支持就要添上,如果不添加会有
ts_open:Inappropriate
ioctol for device
ts_open: No such file or
directory
等错误(网上别人的文档是这么说的,我没有试过不加这个参数会怎样,感兴趣的试一下)
生成的文件在Build目录中。我添加了enable-inputapi这个选项,但是提示ts_open
no such file错误,那么我就要将这个选项去掉。
4
如果一切顺利,就可以执行make,这是又提示出错。在ts_calibrate.c中,open_missing类似的错误。
#include
if
((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {
cal_fd
= open (calfile, O_CREAT | O_RDWR,S_IRUSR | S_IWUSR | S_IRGRP |
S_IROTH);
}
else {
/*cal_fd
= open ("/etc/pointercal", O_CREAT | O_RDWR);*/
cal_fd
= open ("/etc/pointercal", O_CREAT | O_RDWR,S_IRUSR |
S_IWUSR | S_IRGRP | S_IROTH);
}
sprintf
(cal_buffer,"%d %d %d %d %d %d %d",
在make,make
install.得到了Build文件夹后,将其移到文件系统的Lib目录下,为了方便起见,将其更名为tslib.
Mv build tslib.
注意tslib依赖的动态链接库文件,记得要拷贝到根文件系统的/lib里,并修改/etc/porfile就好了
在profile文件中添加如下代码:
echo
"Set ENV for tslib......"
export
TSLIB_ROOT=/lib/tslib
export
TSLIB_TSDEVICE=/dev/event0
export
TSLIB_CALIBFILE=/etc/pointercal
export
TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export
TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export
TSLIB_CONSOLEDEVICE=none
export
TSLIB_FBDEVICE=/dev/fb0
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
下面就Tslib的环境变量、配置文件等进行简要的介绍。
1. 环境变量
为了实现Tslib的正确运行,需要对如下的Tslib的环境变量进行配置:
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  //设备名
Default: /dev/fb0
以上环境变量在实际开发中的实际配置可以根据实际情况决定。
2. 配置文件
除了环境变量以外,Tslib的配置文件ts.conf同样是个十分重要的部分,在ts.conf中配置了需要加载的插件、插件加载顺序以及插件的一些约束参数,这些配置参数对触摸屏的触摸效果具有十分重要的影响。
下面是Tslib
1.4中的ts.conf的参考配置:
# Uncomment if you wish to use
the linux input layer event interface
# module_raw input
# Uncomment if you're using a
Sharp Zaurus SL-5500/SL-5000d
# module_raw collie
# Uncomment if you're using a
Sharp Zaurus SL-C700/C750/C760/C860
# module_raw corgi
# Uncomment if you're using a
device with a UCB1200/1300/1400 TS interface
# module_raw ucb1x00
# Uncomment if you're using an
HP iPaq h3600 or similar
# module_raw h3600
# Uncomment if you're using a
Hitachi Webpad
# module_raw mk712
# Uncomment if you're using an
IBM Arctic II
# module_raw arctic2
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
其中pthres
为Tslib提供的触摸屏灵敏度门槛插件;variance
为Tslib提供的触摸屏滤波算法插件;dejitter
为Tslib提供的触摸屏去噪算法插件;linear为Tslib提供的触摸屏坐标变换插件。
在Qtopia中,就触摸屏的调试问题主要涉及到以下三个部分:触摸屏驱动、Tslib、QTslibTPanelHandlerPrivate封装。
触摸屏驱动为与硬件直接接触部分,为上层的Tslib提供最原始的设备坐标数据,并可以配置采样间隔、屏幕灵敏度等。采样间隔决定了单位时间内的采样数
量,在其他参数不变的情况下,采样间隔越小意味着单位时间内的采样数量越多,也就意味着采样越逼真、越不容易出现采样信息丢失如输入法书写时丢笔划的情
况,但因为噪声的影响,采样间隔越小同时也意味着显示出来的图形的效果越差。
Tslib为触摸屏驱动和应用层之间的适配层,其从驱动处获得原始的设备坐标数据,通过一系列的去噪、去抖、坐标变换等操作,来去除噪声并将原始的设备坐标转换为相应的屏幕坐标。
在tslib中为应用层提供了2个主要的接口ts_read()和ts_read_raw(),其中ts_read()为正常情况下的借口,ts_read_raw()为校准情况下的接口。
正常情况下,tslib对驱动采样到的设备坐标进行处理的一般过程如下:
raw device --> variance -->
dejitter --> linear --> application
module module module
校准情况下,tslib对驱动采样到的数据进行处理的一般过程如下:
raw device--> Calibrate
QTslibTPanelHandlerPrivate为tslib提供了应用层封装,为tslib与应用层的接口部分。
在触摸屏调试过程中,涉及到的参数主要有采样间隔(驱动)、灵敏度(驱动)、去噪算法及约束(tslib)、去抖算法及约束(tslib)、ts门槛值(tslib)。
由于各种相关期间的影响,在不同的硬件平台上,相关参数可能需要调整。以上参数的相互关系为:采样间隔越大,采样点越少,采样越失真,但因为信息量少,容
易出现丢笔划等丢失信息情况,但表现出来的图形效果将会越好;去噪算法跟采样间隔应密切互动,采样间隔越大,去噪约束应越小,反之采样间隔越小,去噪约束
应越大。去抖算法为相对独立的部分,去抖算法越复杂,带来的计算量将会变大,系统负载将会变重,但良好的去抖算法可以更好的去除抖动,在进行图形绘制时将
会得到更好的效果;灵敏度和ts门槛值为触摸屏的灵敏指标,一般不需要进行变动,参考参考值即可
http://linux.chinaunix.net/techdoc/develop/2009/07/01/1121310.shtml
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
基于s3c2410的tslib1.4的编译与移植
tslib-1.4的交叉编译安装
tslib-1.4在OMAP3530(Cortex-A8)上的移植过程详解
移植触摸屏校正Tslib1.4
qt-embedded-3.1.1 tslib触摸屏校正+qte3移植+触摸屏支持+中文显示
Linux 2.6.37内核移植到Mini2440(六)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服