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 2011-03-31 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

时间: 2024-11-08 23:53:25

Linux移植随笔:终于解决Tslib的问题了【转】的相关文章

Linux移植随笔:对tslib库的ts_test测试程序代码的一点分析【转】

转自:http://www.latelee.org/embedded-linux/porting-linux-tstest-code.html 本文是作者对tslib库的ts_test.c文件进行分析的随笔,其实tslib的几个测试程序结构差不多,譬如ts_print.c和ts_print_raw.c等. 本文并没有涉及太多概念,也没有详细介绍这些概念,但并不代表作者对此不了解,也不代表作者对此很精通.如文中提到的input,虽只出现一个单词,但是相信许多人都知道它在文中指的是Linux操作系统

《嵌入式Linux开发实用教程》——1.5 嵌入式Linux移植常用软件

1.5 嵌入式Linux移植常用软件 在进行嵌入式Linux学习与开发的过程中,需要使用到一些常用的开发工具,熟练使用这些软件,能让学习与开发达到事半功倍的效果. 1.5.1 SecureCRT SecureCRT是可以在Window环境下登录UNIX和Linux服务器主机的软件,它不仅支持SSH1.SSH2,而且支持TeInet和rlogin协议. 在Ubuntu宿主机上安装SSH. zhuzhaoqi@zhuzhaoqi-desktop:~/sudo apt-get install open

linux移植停留在 Starting kernel ...

问题描述 linux移植停留在 Starting kernel ... linux移植停留在Starting kernel ....各种百度谷歌没有找到原因,什么机器码,串口没有设置,等等就是没有出现答案 解决方案 http://blog.csdn.net/liujia2100/article/details/8688810http://www.openedv.com/posts/list/41612.htm

“服务器应用程序不可用”问题终于解决

问题描述 某日,突然发现电脑上的iis中部署的.net网站不能用了,但asp网站正常,于是在网上到处查资料,根据查找的资料1.卸载.net2.0,重新安装2.iis重新注册3.新建应用程序池4.权限分配5.卸载系统更新的程序6.又卸载掉IIS,重新安装--一一照做,问题未解决.放弃了,问题搁置了N久.今天在网站查到了一个方法,终于解决此问题1.用完全卸载.net2.0的软件:cleanup_tool.exe, 彻底卸载掉.net2.02.重新安装.net2.0,解决问题 解决方案 解决方案二:学

Linux有问必答:怎样解决“XXX is not in the sudoers file”错误

Linux有问必答:怎样解决"XXX is not in the sudoers file"错误 问题:我想在我的Linux系统上使用sudo来运行一些特权命令,然而当我试图这么做时,我却得到了"[我的用户名] is not in the sudoers file. This incident will be reported."的错误信息.我该怎么处理这种sudo错误呢? sudo是一个允许特定的用户组用另一个用户(典型的是root)的特权来运行一个命令.sudo

asp页面下的乱码问题终于解决了_应用技巧

乱码问题终于解决了,这个问题不是l-blog的问题,也不是浏览器的问题,更加不是服务器的问题!而是其他程序代码不规范的问题! 在程序的最开始增加 <%@language="vbscript" codepage="936"%>  <%session.codepage=936%>  936是gb2312的代码页,utf-8的是65001  另外一种简单的修改方法  在 footer.asp 的最后添加一行:  session.codepage=9

hdmi输出-Zedboard开发板linaro linux移植的问题

问题描述 Zedboard开发板linaro linux移植的问题 本人新手,初次接触这块开发板.准备移植linaro linux系统.现在linaro在开发板上可以成功启动,但是据说这个是有HDMI输出的图形化界面的,但是我接了显示器却没有任何反应.是哪个过程出现了问题呢?

asp页面下的乱码问题终于解决了

乱码问题终于解决了,这个问题不是l-blog的问题,也不是浏览器的问题,更加不是服务器的问题!而是其他程序代码不规范的问题! 在程序的最开始增加 <%@language="vbscript" codepage="936"%>  <%session.codepage=936%>  936是gb2312的代码页,utf-8的是65001 另外一种简单的修改方法  在 footer.asp 的最后添加一行: session.codepage=936

从Linux移植到FreeBSD

FreeBSD 和各种Linux发行版一样,是一种免费的Unix类操作系统.由于FreeBSD的推出稍晚于Linux,因此国内介绍FreeBSD的文章较少,而且 由于某些煤体不负责任的推波助澜,Linux被过分夸大.神化了.实际上,很多大网站都在用FreeBSD,如Yahoo,甚至包括Microsoft的 Hotmail(Microsoft收购Hotmail 4年了,但直到去年11月Microsoft才宣布Hotmail向Windows/IIS迁移,而且,至今Hotmail主机群中依然包括 Fr