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-08-01 10:43:59

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

linux移植问题汇总(一)

linux移植问题汇总(一) 在此记录移植linux过程中出现的问题以及解决方法. 项目GitHub地址 linux3.0.80:https://github.com/numbqq/linux-3.0.80_for_tiny210linux3.3.5:https://github.com/numbqq/linux-3.3.5_for_tiny210uboot2014.04:https://github.com/numbqq/uboot201404_for_tiny210 1.移植linux ke

[ASP.NET 5]终于解决:Unable to load DLL 'api-ms-win-core-localization-obsolete-l1-2-0.dll'

11月12日,惊喜地发现SqlClient(System.Data.SqlClient.dll)跨平台了(对应的nuget包包是runtime.unix.System.Data.SqlClient),终于可以在Linux上基于.NET Core运行ASP.NET 5程序访问SQL Server数据库了. 于是,立马更新dnx至rc2,用之前已经写好的.用EF7访问SQL Server数据库的ASP.NET 5示例程序,分别在2台Linux服务器上进行测试.但测试时遇到了一个非常奇怪的问题:其中1

PowerPC平台 Linux移植二

继PowerPC平台 Linux移植一,制作busybox文件系统,目的实现单板挂载nfs文件系统. 1.制作busybox文件系统 (1)交叉编译busybox a.make menuconfig 配置Cross Compile prefix 位powerpc-linux-gnu- Installation Options 路径指定为/home/freescale/work/source/fs_mini b.make DOC     busybox.pod DOC     BusyBox.tx

PowerPC平台 Linux移植三

继PowerPC平台 Linux移植二,实现单板挂载nfs网络文件系统. 1.ubuntu安装 配置 启动nfs服务 详细过程见 http://blog.csdn.net/u010216127/article/details/8825735 => nfs 0x3000000 10.3.56.9:/home/freescale/work/nfs_root/hello Speed: 100, full duplex Using eTSEC2 device File transfer via NFS

pcDuino的linux移植四简单驱动开发

开发环境系统:ubuntu 10.04.4单板:pcDuino(全志A10)编译器:arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 搭建开发环境详见ubuntu 10.04.4开发环境配置. 目标1.配置 编译linux-3.0.62内核,串口正常输出2.配置内核,支持nfs挂载,启动文件系统3.最简单内核驱动开发 这个是在pcDuino linux移植一.二.三的基础上写的,重点介绍内核驱动开发,其它具体移植过程不再

hadoop学习;大数据集在HDFS中存为单个文件;安装linux下eclipse出错解决;查看.class文件插件

sudo apt-get install eclipse 安装后打开eclipse,提示出错 An error has occurred. See the log file /home/pengeorge/.eclipse/org.eclipse.platform_3.7.0_155965261/configuration/1342406790169.log. 查看错误日志然后解决 打开log文件,看到以下的错误 !SESSION 2012-07-16 10:46:29.992 --------

u-boot移植随笔(7):u-boot启动流程简图【转】

转自:http://www.latelee.org/porting-uboot/u-boot-porting-bootstrap.html u-boot移植随笔:u-boot启动流程简图 画上面这张图也花了点时间.虽然很简洁,但对于理解u-boot,从一个较高角度府视u-boot,很有帮助.——其实网上有很多分析教程.资料,相信大多都是大同小异的.因此,山人无谓再写一次了. (小技巧: 如何将上面的图占为已有? 木草山人心地善良,好心地将图片的背景做成白色的,最简单的方法是使用windows系统

linux移植u-boot(一)——U-Boot详解+自定义命令实战

linux移植u-boot(一)--U-Boot详解+自定义命令实战 2015-02-07 一.Bootloader ????简单地说:Bootloader主要功能就是 在系统上电时开始执行,初始化硬件和设备,准备好软件环境,最后调用操作系统. ????具体的包含:关闭你看门狗WATCHDOG,改变系统时钟,初始化存储控制器 ,将操作系统内核代码复制到内存中去运行. ????为了开发方便,可以增加网络功能,从PC上通过串口或者网络下载文件,烧写文件,将flash上的内核代码解压后运行等. Boo

freescale-sdk linux移植一搭建编译环境脚本host-prepare.sh分析

接下来使用自己的课外休息时间,对基于PowerPC架构freescale-sdk,进行linux移植和分析.主要参考官方文档freescale linux sdk START_HERE.html,首先对搭建编译环境脚本host-prepare.sh分析.在移植系统之前,需要搭建编译环境,安装必要的包,为后期编译系统做准备.很多人看到脚本就头疼,下面是我的分析过程,分析不好的地方可以在下面留言,一起讨论. 一.搭建编译环境脚本分析./scripts/host-prepare.sh [email p