Linux移植随笔:终于解决Tslib的问题了【转】
转自:http://www.latelee.org/embedded-linux/porting-linux-tslib.html
前段时间让Tslib搞晕头了,原来一切都是版本惹的祸。本文只是一个随笔,随笔者,随意用笔写下心得而已,因此不必较真。正如我所欣赏的“乘兴而来,兴尽而返”一样。——估计当年王子猷是赏完了夜景,兴致也完了,就回家了。
闲话少提。
搞tslib时,出现了许多错误,像
No raw modules loaded.
ts_config: Success
selected device is not a touchscreen I understand
ts_read: Invalid argument
等等错误,在网上找了很多资料,可惜都没有适合我的。
现在用的tslib是使用git下载的。注意,最好使用Linux平台下载,因为tslib中包括了脚本文件(如autogen.sh),而Windows与Linux处理一行的结束字符是不相同的,因此请在Linux中下载,当然,使用编辑器转换结束字符也无所谓。
命令如下:
$ git clone https://github.com/kergoth/tslib
在Linux下安装git可参考:Linux移植随笔:git的使用。
编译过程如下:
$ ./autogen.sh
$ ./configure –host=arm-linux –prefix=/home/latelee/lib/tslib
$ make
$ make install
网上流行的编译方法如下:
$ ./autogen.sh
$ echo “ac_cv_func_malloc_0_nonnull=yes”> tmp.cache
$ ./configure –host=arm-linux –cache-file=tmp.cache –enable-inputapi=no –prefix=/home/latelee/lib/tslib
$ make
$ make install
有两点不同:
一,没有“ac_cv_func_malloc_0_nonnull=yes”,编译过程没有报错;
二,去掉“–enable-inputapi=no”,网上说法不在此处提及,单看README文件的描述:
TSLIB_TSDEVICE TS device file name.
Default (non inputapi): /dev/touchscreen/ucb1x00
Default (inputapi): /dev/input/event0
板子的触摸屏设备文件正是/dev/input/event0(默认值,可以在配置文件ts.conf中设置这个环境变量)。
make install后,会在/home/latelee/lib/tslib目录生成4个子目录:
include lib etc bin
生成的库位于lib中,该目录下还有一个子目录ts,它包含了许多校准用到的库(如input.so等)。etc下的ts.conf为配置文件,bin目录下为校准、测试工具(如校准的ts_calibrate,测试用的ts_test)。
配置文件如下:
# Late Lee -- for touchscreen test export TSLIB_ROOT=/usr/local/tslib export TSLIB_TSDEVICE=/dev/input/event0 export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts export TSLIB_CALIBFILE=/etc/pointercal export TSLIB_CONSOLEDEVICE=none export TSLIB_FBDEVICE=/dev/fb0 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
(该文件的日期为上个月最后一天,离今已十余天,为了这个花费的时日可不少。)
使用TSLIB_ROOT这个变量比较好,因为只要将编译生成后的tslib文件夹复制到某个位置,再修改这个变量即可,其它的不用修改。
配置文件ts.conf内容如下:
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
module_raw有许多种,这里只使用input(即Linux的input子系统,设备文件名称为/dev/input/event0),其它的删除掉。后面的几个module还没有深入了解,它们使用的库就在tslib/lib/ts中,最后三个模块的字面意思是“方差(滤波)”、“去抖动(去噪)”、“线性(坐标变换)”,对这些东西不了解,不发表意见。
运行校准程序,触摸屏依次出现5个点,依次点击之:
# ./ts_calibrate
xres = 240, yres = 320
Took 14 samples…
Top left : X = 276 Y = 795
Took 12 samples…
Top right : X = 736 Y = 796
Took 11 samples…
Bot right : X = 735 Y = 248
Took 7 samples…
Bot left : X = 274 Y = 247
Took 7 samples…
Center : X = 505 Y = 524
-33.156189 0.304019 -0.000832
369.119629 0.000871 -0.401456
Calibration constants: -2172924 19924 -54 24190624 57 -26309 65536
生成的校准文件名为pointercal,位于/etc目录下。
如果想运行ts的测试程序,在tslib/bin目录下输入
./ts_test
即可。
屏幕最上方会出现三个按钮,分别为“Drag”、“Draw”和“Quit”,默认是第一个,因此,用触摸笔点击任何一处,十字光标便会到那里。
下面是点击“Draw”按钮并用触摸笔写字的提示信息的一小部分:
1302603922.770286: 98 302 1
1302603922.800295: 107 300 1
1302603922.815277: 118 297 1
1302603922.830291: 130 294 1
1302603922.845288: 143 290 1
1302603922.845288: 151 288 1
1302603922.875166: 168 284 0
第一列为timeval结构体的两个成员:tv_sec和tv_usec,中间两列分别是X和Y的坐标,最后为pressure,这里可以理解成“触摸事件”,为1表示触摸笔点击了(接触)屏幕,为0表示触摸笔离开了屏幕(这里出现很多的1是正常的,因为写字过程中笔没有离开触摸屏——这是废话,请无视之)。
点击屏幕上“Quit”或按Ctrl+C可退出该程序。
文中前面安装Tslib的路径是主机(又称开发主机、服务器、host)上的,后面与Tslib环境变量有关的是开发板(又称目标板、板子、target)上的。
最后附图一张,也算有图有真相了:

本文固定链接: http://www.latelee.org/embedded-linux/porting-linux-tslib.html
Linux移植随笔:终于解决Tslib的问题了【转】的更多相关文章
- Linux移植随笔:对tslib库的ts_test测试程序代码的一点分析【转】
转自:http://www.latelee.org/embedded-linux/porting-linux-tstest-code.html 本文是作者对tslib库的ts_test.c文件进行分析 ...
- 终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误
终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误 http://blog.csdn.net ...
- linux移植问题汇总(一)
linux移植问题汇总(一) 在此记录移植linux过程中出现的问题以及解决方法. 项目GitHub地址 linux3.0.80:https://github.com/numbqq/linux-3.0 ...
- CH02基于ZYNQ的嵌入式LINUX移植
CH02基于ZYNQ的嵌入式LINUX移植 1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx ...
- linux 百度ping不通解决
很长时间没有使用Liunx了,上来发现linux上面没有办法ping百度了.(这样的问题>>..ping:www.baidu.com:Temporaryfailureinnameresol ...
- 被Spring坑了一把,查看源码终于解决了DataFlow部署K8s应用的问题
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Docker & Kubernetes相关文章:容器技术 基于各种原因,团队的Kubernetes被加了限制,必须在 ...
- ZYNQ Linux 移植:包含petalinux移植和手动移植debian9
参考: https://electronut.in/workflow-for-using-linux-on-xilinx-zynq/ https://blog.csdn.net/m0_37545528 ...
- Linux移植实际操作一
@ 目录 *前言 目前看了很多关于"Linux移植"的的各种教程.书籍,看完发现不过是对已有板子.已有驱动进行启用.禁用.参数修改.只能叫做"Linux配置". ...
- PhpStorm 2016.3 For Mac 重大里程碑更新 -- 终于解决了不能输入中文标点符号的重大bug
PhpStorm 2016.3 For Mac 重大里程碑更新 1.[终于解决了]不能输入中文标点符号的重大bug,如 逗号“,”.“.”: 2.可以在一个窗体中,同时打开多个项目: 3.其他... ...
随机推荐
- P1110 [ZJOI2007]报表统计
题目描述 Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工作,作为她的生日礼物之一. 经过仔细观察,小Q发现统计一张报表实际上是维护一个非负整数数列,并 ...
- MT【160】格点
(2017年清华大学 THUSSAT) 把不超过实数 $x$ 最大整数记为 $[x]$,任取互质且不小于 3 的正奇数 $m,n$,令$$I=\sum_{i=1}^{\frac{m-1}{2}}\l ...
- 【刷题】BZOJ 5091 [Lydsy1711月赛]摘苹果
Description 小Q的工作是采摘花园里的苹果.在花园中有n棵苹果树以及m条双向道路,苹果树编号依次为1到n,每条道路的两端连接着两棵不同的苹果树.假设第i棵苹果树连接着d_i条道路.小Q将会按 ...
- SpringBoot之mongoTemplate的使用
springboot的版本1.5.17.RELEASE. 1.mongo的IP和端口 在resources下的application.properties中加入如下内容 spring.data.mon ...
- Android Support Palette使用详解
使用Palette API选择颜色 良好的视觉设计是app成功所必不可少的, 而色彩设计体系是设计的基础构成. Palette包是支持包, 能够从图片中解析出突出的颜色, 从而帮助你创建出视觉迷人的应 ...
- C++运算符重载形式——成员函数or友元函数
运算符重载是C++多态的重要实现手段之一.通过运算符重载对运算符功能进行特殊定制,使其支持特定类型对象的运算,执行特定的功能,增强C++的扩展功能. 运算符重载的我们需要坚持四项基本原则: (1)不可 ...
- 解题:USACO12FEB Nearby Cows
题面 比较简单的树形dp(递推?) 设$dp[i][j]$表示距离$i$距离为$j$的点的数目,先预处理$g[i][j]$表示点$i$的子树中距离这个点距离为$j$的点的数目(猫老师讲过,用一个栈维护 ...
- [APIO2009]采油区域
题目描述 Siruseri 政府决定将石油资源丰富的 Navalur 省的土地拍卖给私人承包商以 建立油井.被拍卖的整块土地为一个矩形区域,被划分为 M×N 个小块. Siruseri 地质调查局有关 ...
- 转:Launch Screen在iOS7/8中的实现
目前项目中需要解决的问题是: 兼容iOS7和iOS8,之前的版本不需要支持了 实现兼容3.5.4.4.7和5.5寸屏幕,竖屏的Lauch Screen 创建所需的PNG图片 有关iPhone6/6+相 ...
- Linux部署node环境
# wget https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar.xz# tar -axvf node-v8.11.4-linux-x ...