前段时间让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)上的。

最后附图一张,也算有图有真相了:

(看不到图者可到原始(www.latelee.org)出处查看。)

Tslib测试图片——来自latelee.org

本文首发自:http://www.latelee.org/embedded-linux/120-porting-linux-tslib.html

Linux移植随笔:终于解决Tslib的问题了相关推荐

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

    本文是作者对tslib库的ts_test.c文件进行分析的随笔,其实tslib的几个测试程序结构差不多,譬如ts_print.c和ts_print_raw.c等. 本文并没有涉及太多概念,也没有详细介 ...

  2. Linux移植随笔:终于解决Tslib的问题了【转】

    转自:http://www.latelee.org/embedded-linux/porting-linux-tslib.html 前段时间让Tslib搞晕头了,原来一切都是版本惹的祸.本文只是一个随 ...

  3. Linux移植随笔 tslib

    前段时间让Tslib搞晕头了,原来一切都是版本惹的祸.本文只是一个随笔,随笔者,随意用笔写下心得而已,因此不必较真.正如我所欣赏的"乘兴而来,兴尽而返"一样.--估计当年王子猷是赏 ...

  4. Linux移植随笔:又遇困难

    前段时间没有发表这方面的文章,是因为在搞qtopia-2.2.0,区分QT那几个版本花了一点时间,编译qtopia也花了一点时间.点滴之间,才发现时间悄然逝去. 上次u-boot移植时也遇到困难,这次 ...

  5. u-boot移植随笔:解决引导内核遇到undefined instruction的错误

    前天解决了内核不能引导的问题了.在网上搜索了一些资料,才有点明白这个是怎么回事. 不能引导内核时提示的信息各种各样.像ERROR: can't get kernel image!.Bad Magic ...

  6. Linux移植随笔:git的使用

    昨天搞了一天的yaffs2文件系统挂载,结果还是挂载不上去.收获之一是知道如何使用git下载源代码. 以前下载的yaffs2源代码在新的内核中编译不通过,而又不知道如何下载yaffs2的源代码包,只好 ...

  7. Linux移植随笔:让内核支持nor flash

    内核:linux-2.6.37.3 nor flash芯片:SST39VF6401B 网上有文章说了如何让linux内核支持nor flash.不过那些转载的文章中没有头文件(因为使用了<尖括号 ...

  8. linux移植中出现【can‘t open /dev/ttyO0: No such file or directory】解决方式

    在linux移植过程中,根文件系统过载之后,文件系统运行提示出现错误: can't open /dev/ttyO0: No such file or directory 错误的打印提示如下: 解决方法 ...

  9. 华硕主板运行 linux花屏,deepin2014启动花屏问题终于解决!(HD6410D显卡驱动问题,附解决步骤)...

    自ubuntu13.10发行以来,我似乎就和各种最新的linux发行版无缘了:进入图形界面时都会花屏.最近的各种发行版我试了很多:opensuse13.1.ubuntu14.04.linux mint ...

最新文章

  1. windows串口控制linux,linux及windows下串口的使用.doc
  2. “十四五”要建设的「交通强国」,会让我们都坐上自动驾驶车么?
  3. 思科同时匹配源和目标地址进行策略路由配置测试
  4. nodejs中httpserver的安装和使用
  5. liunx Xwindow下切换输入法命令(im-switch)
  6. Android 获取当前的时间。年月日,时分秒,星期几
  7. 重炉后-文件上传下载
  8. 查询性能优化 in and union
  9. java email 正则 验证
  10. 20191109每日一句
  11. cookie 和session
  12. 重命名DC 以及 域
  13. 《设计心理学》读书摘要
  14. Solidworks二次开发环境搭建(Net)
  15. 解决CentOS7下用ntpdate同步时间问题
  16. 如何修改网页视频播放倍速?(最高16倍速)
  17. 如何打理水果店,夏天水果店怎么打理
  18. opencv读取黑白图片生成凹凸效果图
  19. 九耶丨阁瑞钛伦特-金融软件开发介绍
  20. 插入数据库insert into 出错 unrecognized token:

热门文章

  1. 江苏约谈滴滴、T3出行等6家企业 因疫情防控落实不到位
  2. 京东方期望为iPhone 15高端版供应高刷新率OLED面板
  3. 小米MIX 4屏幕规格曝光:华星光电1080P面板 或支持屏下摄像
  4. 特斯拉宣布在美召回5974辆Model 3和Model Y
  5. 有点贵但卖光了!这款旗舰要火了吗...
  6. 抖音不服诉腾讯管辖权被转至深圳中院 上诉获受理
  7. iPhone 12s新功能曝光:支持天体摄影+息屏显示
  8. 一加9 Pro真机图曝光:哈苏相机联名logo助力影像旗舰
  9. “听话”的苏宁少东家
  10. 奢华还是土嗨?8848新品钛金手机将于3月29日开启预售