触摸屏tslib库交叉编译并移植ARM校准测试

本文介绍:触摸屏tslib库交叉编译并移植ARM,校准及测试。

下载tslib:Tags · libts/tslib · GitHub

在tslib的官方github上选择一个版本下载即可。

本实验版本为:tslib-1.12.tar.gz。

1. 配置

1.1 安装依赖库:

$ sudo apt-get install autoconf automake libtool

1.2 解压

将tslib-1.20.tar.gz放于ubuntu某目录入,解压并进入:

$ tar zxf tslib-1.12.tar.gz
$ cd tslib-1.12

1.3 配置编译选项

生成config文件:

$ ./autogen.sh

输出如下:

zengzr@ubuntu:/data/open_source/tslib-1.12$ ./autogen.sh 
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4/internal'.
libtoolize: copying file 'm4/internal/libtool.m4'
libtoolize: copying file 'm4/internal/ltoptions.m4'
libtoolize: copying file 'm4/internal/ltsugar.m4'
libtoolize: copying file 'm4/internal/ltversion.m4'
libtoolize: copying file 'm4/internal/lt~obsolete.m4'
configure.ac:58: installing './compile'
configure.ac:24: installing './config.guess'
configure.ac:24: installing './config.sub'
configure.ac:7: installing './install-sh'
configure.ac:7: installing './missing'
Makefile.am: installing './INSTALL'
plugins/Makefile.am: installing './depcomp'

configure配置选项:

configure配置:

$ ./configure --host=arm-linux --prefix=/data/arm-linux/libs/tslib-1.12-arm

上面的配置可能会出错,最终运用的是下面的:

$ ./configure --host=arm-linux --prefix=/data/arm-linux/libs/tslib-1.12-arm ac_cv_func_malloc_0_nonnull=yes

配置后,生成的Makefile中可验证相关配置,如下:

2. 编译

2.1 编译

$ make

2.2 错误处理

错误信息如下:

  CC       fbutils-linux.o
  CCLD     ts_test
fbutils-linux.o: In function `open_framebuffer':
fbutils-linux.c:(.text+0x288): undefined reference to `rpl_malloc'
collect2: ld returned 1 exit status
Makefile:584: recipe for target 'ts_test' failed
make[2]: *** [ts_test] Error 1
make[2]: Leaving directory '/data/open_source/tslib-1.12/tests'
Makefile:489: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/data/open_source/tslib-1.12'
Makefile:398: recipe for target 'all' failed
make: *** [all] Error 2

重新执行configure配置,加上ac_cv_func_malloc_0_nonnull=yes项:

$ ./configure --host=arm-linux --prefix=/data/arm-linux/libs/tslib-1.12-arm ac_cv_func_malloc_0_nonnull=yes

配置完再重新make即可。

2.2 安装

执行安装命令:

$ make install

即可在指定的安装目录下生成相关库文件,如下:

zengzr@ubuntu:/data/arm-linux/libs/tslib-1.12-arm$ ls
bin  etc  include  lib  share

3. 测试

3.1 移植到ARM

编译出来的库在安装路径tslib-1.12-arm下,如下:

zengzr@ubuntu:/data/arm-linux/libs/tslib-1.12-arm$ ls lib/
libts.la  libts.so  libts.so.0  libts.so.0.7.2  pkgconfig  ts

将tslib-1.12-arm复制到开发板的/lib目录下,并命名为tslib-1.12,路径为/lib/tslib-1.12。

配置环境变量,终端输入:

$ export LD_LIBRARY_PATH=/lib/tslib-1.12/lib:$LD_LIBRARY_PATH

3.2 运行校准程序

Tslib库的bin目录下还有个触摸屏校准程序ts_calibrate,可在ARM上运行的:

 [root@GEC210 ~]#/lib/tslib-1.12/bin/ts_calibrate 
Couldn't open tslib config file: No such file or directory
ts_config: No such file or directory
ts_setup: No such file or directory

可见,不能顺利运行,报错了!

这是因为开发板的环境还没配置好,解决见下节。

3.3 配置运行环境

在tslib库的READ.md上有相关环境变量的介绍,如下:

由上可见,tslib也是依赖fb(LCD驱动)、input/event(触摸屏驱动)等的,请保证开发板的相关驱动已移植好。

根据上述环境变量,配置如下:

# tslib environment variables
export TS_ROOT=/lib/tslib-1.12
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TS_ROOT/lib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FDDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=$TS_ROOT/etc/pointercal
export TSLIB_CONFFILE=$TS_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TS_ROOT/lib/ts

特别说明:

如何确定触摸屏设备?

触摸屏设备通常为/dev/input/event*,若有多个event,可用以下方法:

在开发板串口上输入:#cat /dev/input/event0 (逐个event尝试)

然后触摸屏幕,串口上有输出的则为触摸屏设备。

 

3.4 问题处理

调试中遇到问题记录如下:

问题1

Couldn't open tslib config file: No such file or directory
ts_config: No such file or directory
ts_setup: No such file or directory

解决1

#export TSLIB_CONFFILE=/lib/tslib-1.12/etc/ts.conf

问题2

Couldnt load module input
No raw modules loaded.
ts_config: No such file or directory
ts_setup: No such file or directory

解决2

#export TSLIB_PLUGINDIR=/lib/tslib-1.12/lib/ts

最终,成功运行,在开发板LCD上显示有个“+”号,追着它点5次即可完成校准。

输出如下:

[root@GEC210 ~]#/lib/tslib-1.12/bin/ts_calibrate

xres = 800, yres = 480

Took 1 samples...

Top left : X =   65 Y =   50

Took 1 samples...

Top right : X =  774 Y =   27

Took 1 samples...

Bot right : X =  775 Y =  419

Took 4 samples...

Bot left : X =   65 Y =  425

Took 1 samples...

Center : X =  402 Y =  248

-10.503601 0.986122 0.000340

0.225342 0.020684 0.988734

Calibration constants: -688364 64626 22 14768 1355 64797 65536

bin目录下的其他几个测试程序,如:(ts_calibrate ts_harvest ts_print ts_print_raw  ts_test)也可以跑来试下。

注:若出现更多其他问题,请参考:

Ubuntu下交叉编译tslib库并移植到ARM板上_曾哥zengzr的博客-CSDN博客_linux内核编译移植到arm板


版权声明:本文为myQQ_914404940原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。