当前位置:首页 >> 信息与通信 >>

tslib 1.4 在ARM板Micro2440上移植


tslib 1.4 在 ARM 板 Micro2440 上移植

作者: 作者:罗毅 邮箱: 邮箱:luoyi07040125@126.com 日期: 日期:2010-12-24 参考: 参考:http://apps.hi.baidu.com/share/detail/16569621
http://www.cnblogs.com/wangtianx

j/archive/2009/05/12/1454729.html

tslib 背景: 背景:
在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪 声的缘故,触摸屏容易存在点击不准确、有抖动等问题。 Tslib 是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校 准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。

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 门槛值为触摸屏 的灵敏指标,一般不需要进行变动,参考参考值即可。

编译 tslib 库
1.首先从网上下载的 tslib-1.4.tar.gz 2.解压 tar xvzf tslib-1.4.tar.gz ; cd tslib 3.生成 configure,这里比一般的开源项目少做一步,要先运行解压目录下的脚本 ./autogen.sh 4.用 configure 生成 Makefile. 生成脚本: ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux ac_cv_func_malloc_0_nonnull=yes --enable-inputapi=no 其中 ac_cv_func_malloc_0_nonnull=yes 是为解决如下编译错误设置的
ts_test.o: In function `main': ts_test.c:(.text+0x1d8): undefined reference to `rpl_malloc' fbutils.o: In function `open_framebuffer': fbutils.c:(.text+0xa20): undefined reference to `rpl_malloc' collect2: ld returned 1 exit status

--enable-inputapi=no. 是为了解决运行中提示 ts_open:Inappropriate ioctol for device,它表示 即不使用 ioctl 来控制触摸屏。但是我在几个板没有碰到这样提示--enable-inputapi=no 5.编译安装 make make install-strip #安装 strip 后的库 #make install #安装没有 strip 库版本. tslib 发布要将 libts.so,以及它的针对各个触摸屏设备的插件,ts.conf ts_calibrate 一同 发布在开发板上,并用前述的环境变量设置相应的值。 tslib1.4 目录下看到相关的应用程序、共享库、配置文件等了,需要说明的是在嵌入 式中,由于触摸屏的种类多样、质量不一,采用 Tslib 的参考配置往往无法获得较好的触 摸屏触摸效果,同样需要经过大量的测试才能得到满意的配置参数,恶劣情况下,甚至需要 对 Tslib 的算法进行进一步的优化。

配置与测试 tslib
tslib 只是应用级的一个程序库, 只是用来封装底层的触摸屏驱动的操作, 以一个统一接 口来给其它应用程序使用.因此 tslib 正常工作的 前提是开发板上的触摸屏驱动能正常工作. 另外触摸屏的效果往往需要在 LCD 上显示,因此 tslib 也需要开发板上的 FrameBuffer 驱动 正常工作.。 ARM 开发板常见的触摸屏驱动分为两大类,一类是模拟 HP 3600 的调用接口.这类驱动 一般使用/dev/h3600_tsraw 的设备结点文件.早期开发板一般都是这一类,

另外一类是采用 Linux 2.6 输入设备接口的驱动。这类驱动会将触摸屏驱动设计成一 个标准输入事件设备(linux input layer event interface),所有事件输入设备结点命名为 /dev/input/eventN (N>=0)。 一般都是/dev/input/event0.而且驱动向应用程序发送标准的 struct event 结构。 ARM 板使用哪种驱动接口.要参考产商的文档或直接查看已经成功的程序使用哪一个。

tslib 运行时需要一个关键的 ts.conf 来设置采用哪一种驱动。另外还需要设定一些环 境变量。 当编译完 tslib 安装后, 在安装目录的 etc 下有一个 ts.conf 的模板。 如果使用 h3600 设备,则使用 module_raw h3600,如果是使用输入设备,则使用 module_raw input.
#ts.conf template module_raw input #module_raw h3600 module pthres pmin=1 module variance delta=30 module dejitter delta=100 module linear

其中 pthres 为 Tslib 提供的触摸屏灵敏度门槛插件; variance 为 Tslib 提供的触摸 屏滤波算法插件;dejitter 为 Tslib 提供的触摸屏去噪算法插件;linear 为 Tslib 提供的 触摸屏坐标变换插件。 注意配置项要顶格写,如果有空格,tslib 将会 u 有段错误。这是它的 bug. 正常运行 tslib 也需要配置一系列环境变量:
#export TSLIB_ROOT=/usr/local/tslib export TSLIB_ROOT=/mnt/hxy/output/arm_linux #取决具体的设备驱动了,事件驱动用 export TSLIB_TSDEVICE=/dev/input/event0 #h3600 用如下配置

# export TSLIB_TSDEVICE=/dev/h3600_tsraw #触摸屏定位文件保存位置 export TSLIB_CALIBFILE=/etc/pointercal #tslib 配置文件内容 export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf #tslib 插件目录 export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts export TSLIB_CONSOLEDEVICE=none #LCD 设备结点 export TSLIB_FBDEVICE=/dev/fb0 #把 libts.so 加入动态搜索路径 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

将其放入 ARM 开发的 Flash 或 NFS 路径下。 可以测试运行安几装目录下的 bin 的几个 测试程序运行 ts_test.将会在屏幕出现如下界面。点击控制台将会有输出。

关于触摸屏定位
软件最常采用是鼠标的坐标体系, 它是采用相对位移来判断位置.但触摸屏采用绝对定 位坐标。为了让程序响应触摸屏的点击,要把触摸屏的坐标换算成软件识别的 相对坐标。 因此要有一组参数来做换算。换算的参数来自于触摸屏定位程序,如果参数不对,最明显的 结果就是定位不准。 每一个使用触摸屏的嵌入式设备通常都带 有这样工具,比如我们使用手 机。(但大规模量产的定位参数都是统一设好). 开发板一般需要自己手动设置,tslib 自带一个 ts_calibrate 有这样功能。Qtopia 也自带 一个。两者界面类似,写的结果通常都是/etc/pointercal 这个文本文件里面。 操作方法也类似,当界面出一个小十字时,点击交叉点即可,设置分别会在左上,左 下,右上,右下和中心依次出现五个小十字。 Qtopia 定位程序界面。

tslib 的定位程序界面


相关文章:
tslib 1.4 在ARM板Micro2440上移植
tslib 1.4 在ARM板Micro2440上移植_信息与通信_工程科技_专业资料。介绍tslib 1.4 在ARM板Micro2440上的移植tslib 1.4 在 ARM 板 Micro2440 上移植 作者: 作者:...
移植tslib1.4到mini2440
移植tslib1.4到mini2440_信息与通信_工程科技_专业资料。移植 tslib1.4 到 mini2440 工作环境: 1, 主机:Ubuntu10.04 2, 开发板:mini2440 3, 交叉编译器:arm-...
Tslib和Qt 4.8.4在mini2440开发板上的移植
Tslib和Qt 4.8.4在mini2440开发板上移植_计算机软件及应用_IT/计算机_专业...cd /usr/local/qt-everywhere-opensource-src-4.8.4/mkspecs/qws/linux-arm-...
tslib1.4移植(个人小结)
Linux Red Hat 9.0 开发板平台: arm TX2440A 二、 移植 1、学习光盘/源码包中tslib1.4源码包,解压,进入tslib目录,执行 #tar xzvf tslib1.4.gz #./autogen...
Minigui+tslib1.4在TQ2440移植文档
Minigui+tslib1.4在TQ2440移植文档_计算机硬件及网络_IT/计算机_专业资料。minigui...MiniGUI-1.6.10+tslib-1... 12页 1下载券 tslib 1.4 在ARM板Micro... 6...
移植TsLib和QT4.8到mini2440
移植TsLib 和 QT4.8 到 mini2440 一、 TsLib移植 1、 获取 tslib-1.4....用 qmake-arm 编译的 程序是在 mini2440 上运行的,用 qmake-x86 编译的是在...
tslib-1.4交叉编译详细笔记
注:在此之前,请确保你的触摸屏驱动已经移植完成。...(2)、硬件平台:mini2440 (3)、交叉编译器:arm-...tslib 1.4 在ARM板Micro... 6页 1下载券 qt4.3...
tslib移植
tslib移植_信息与通信_工程科技_专业资料。对tslib1.4移植,在fl2440开发板上,...tslib 1.4 在ARM板Micro... 6页 1下载券 tslib+Mnigui移植2440... 4页...
Tslib arm 6410 开发板的移植(带源码)
Tslib arm 6410 开发板的移植(带源码)_计算机软件及...1. 首先在网上下载 tslib-1.4.tar..gz 包; 2....QT 4.5.2向2440移植全... 6页 免费©...
Qt4.5.1触摸屏+tslib1.4移植全记录
Qt4.5.1触摸屏+tslib1.4移植全记录_理学_高等教育_...复制在目录/usr/local/arm 下,在终 端中进行如下...成功移植Qt4到mini2440 10页 4下载券 QT4移植过程 ...
更多相关标签:
arm2440usb驱动移植 | tslib1.4移植 | tslib移植 | tslib移植触摸屏驱动 | arm tslib | micro2440 | 友善之臂micro2440 | micro2440sdk |