当前位置: 首页 > 工具软件 > Tslib > 使用案例 >

tslib 移植与使用

章鸿光
2023-12-01

tslib 是一个开源的第三方库,用于触摸屏性能调试,使用电阻屏的时候一般使用 tslib 进行校准。虽然电容屏不需要校准,但是由于电容屏加工的原因,有的时候其不一定精准,因此有时候也需要进行校准。最主要的是 tslib 提供了一些其他软件,我们可以通过这些软件来测试触摸屏工作是否正常。最新版本的 tslib 已经支持了多点电容触摸屏,因此可以通过 tslib 来直观的测试多点电容触摸屏驱动,这个要比观看 eventX 原始数据方便的多。
tslib 的移植很简单,步骤如下:

1 、获取 tslib 源码
官网源码

2.拷贝到ubuntu

root@ubuntu:~/tslib# ls
test  tslib-1.21  tslib-1.21.tar.xz

解压得到:tslib-1.21源码

3.交叉编译、测试 tslib
先配置工具链:

  1. 查看交叉编译器的路径。
root@ubuntu:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin# ls
arm-linux-gnueabihf-addr2line   arm-linux-gnueabihf-gfortran
arm-linux-gnueabihf-ar          arm-linux-gnueabihf-gprof
arm-linux-gnueabihf-as          arm-linux-gnueabihf-ld
arm-linux-gnueabihf-c++         arm-linux-gnueabihf-ld.bfd
arm-linux-gnueabihf-c++filt     arm-linux-gnueabihf-nm
arm-linux-gnueabihf-cpp         arm-linux-gnueabihf-objcopy
arm-linux-gnueabihf-elfedit     arm-linux-gnueabihf-objdump
arm-linux-gnueabihf-g++         arm-linux-gnueabihf-ranlib
arm-linux-gnueabihf-gcc         arm-linux-gnueabihf-readelf
arm-linux-gnueabihf-gcc-4.9.4   arm-linux-gnueabihf-size
arm-linux-gnueabihf-gcc-ar      arm-linux-gnueabihf-strings
arm-linux-gnueabihf-gcc-nm      arm-linux-gnueabihf-strip
arm-linux-gnueabihf-gcc-ranlib  gdbserver
arm-linux-gnueabihf-gcov        runtest
arm-linux-gnueabihf-gdb

2.配置环境变量PATH



//1/更改.bashrc
vi .bashrc

//2.添加以下内容:
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

//3.更新.bashrc
source .bashrc

//4.查看是否成效
gec@ubuntu:~$ arm-linux-gnueabihf-gcc -v

3.交叉编译 tslib:


//0.正点原子要安装这三个东东,感觉没必要,出错时就安装吧
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool

//1.--prefix=/确保了宏TS_CONF为/etc/ts.conf
./configure --host=arm-buildroot-linux-gnueabihf --prefix=/
make

//2.make install安装时出错,一定要加上DESTDIR=$PWD/tmp
make install DESTDIR=$PWD/tmp


//3.安装成功
gec@ubuntu:~/tslib/tslib-1.21/tmp$ ls
bin  etc  include  lib  share

4.拷贝到开发板实验
使用nfs服务或者tftp把tmp目录的所有文件拷贝到/tmp中

//1.tmp为我们想要的目标
root@ATK-IMX6U:/mnt# ls
HZK16                 freetype_show_font_angle  show_file   untitled
MSYH.TTF              item                      show_line   utf8.txt
chrdevbase.ko         main                      show_pixel
freetype_show_font    show_ascii                simsun.ttc
freetype_show_font.c  show_chinese              tmp

//2.拷贝库文件和可执行文件到到系统的默认路径下,当然也可以用export 临时成效
cp tmp/lib/*so* -d /lib
cp tmp/bin/* /bin
cp tmp/etc/ts.conf -d /etc


5.配置 tslib
打开/etc/ts.conf 文件,找到下面这一行:

module_raw input

如果上面这句前面有“#”的话就删除掉“#”。
打开/etc/profile 文件,在里面加入如下内容:

 export TSLIB_TSDEVICE=/dev/input/event1
 export TSLIB_CALIBFILE=/etc/pointercal
 export TSLIB_CONFFILE=/etc/ts.conf
 export TSLIB_PLUGINDIR=/lib/ts
 export TSLIB_CONSOLEDEVICE=none
 export TSLIB_FBDEVICE=/dev/fb0

第 1 行,TSLIB_TSDEVICE 表示触摸设备文件,这里设置为/dev/input/event1,这个要根据具体情况设置,如果你的触摸设备文件为event2那么就应该设置为/dev/input/event2,以此类推。
第 2 行,TSLIB_CALIBFILE 表示校准文件,如果进行屏幕校准的话校准结果就保存在这个文件中,这里设置校准文件为/etc/pointercal,此文件可以不存在,校准的时候会自动生成。
第 3 行,TSLIB_CONFFILE 表示触摸配置文件,文件为/etc/ts.conf,此文件在移植 tslib 的时候会生成。
第 4 行,TSLIB_PLUGINDIR 表示 tslib 插件目录位置,目录为/lib/ts。
第 5 行,TSLIB_CONSOLEDEVICE 表示控制台设置,这里不设置,因此为 none。
第 6 行,TSLIB_FBDEVICE 表示 FB 设备,也就是屏幕,根据实际情况配置,我的屏幕文件为/dev/fb0,因此这里设置为/dev/fb0。
全部配置好以后重启开发板,然后就可以进行测试了。

6.tslib测试
电容屏可以不用校准,如果是电阻屏就要先进行校准!校准的话输入如下命令:

ts_calibrate

校准完成以后如果不满意,或者不小心对电容屏做了校准,那么直接删除掉/etc/pointercal文件即可。

最后我们使用 ts_test_mt 这个软件来测试触摸屏工作是否正常,以及多点触摸是否有效,执行如下所示命令:

ts_test_mt

这时出错:

root@ATK-IMX6U:/lib/modules# ts_test_mt
Couldn't load module input
No raw modules loaded.
ts_config: Success
ts_setup: Success

原因找不到module input插件:

root@ATK-IMX6U:/mnt# ls /mnt/tmp/lib/ts/
debounce.la   iir.la        linear.la     pthres.la     variance.la
debounce.so   iir.so        linear.so     pthres.so     variance.so
dejitter.la   input.la      lowpass.la    skip.la       waveshare.la
dejitter.so   input.so      lowpass.so    skip.so       waveshare.so
evthres.la    invert.la     median.la     touchkit.la
evthres.so    invert.so     median.so     touchkit.so

插件是放在/tmp/lib/ts目录下。拷贝到lib目录了,执行以下命令:

cp tmp/lib/ts /lib -fr

查看:

root@ATK-IMX6U:/mnt# ls /lib/ts/
debounce.la   iir.la        linear.la     pthres.la     variance.la
debounce.so   iir.so        linear.so     pthres.so     variance.so
dejitter.la   input.la      lowpass.la    skip.la       waveshare.la
dejitter.so   input.so      lowpass.so    skip.so       waveshare.so
evthres.la    invert.la     median.la     touchkit.la
evthres.so    invert.so     median.so     touchkit.so

OK,重新执行ts_test_mt命即可。(移植成功)

附上正点原子的关闭qt默认程序(如果测试tslib不行的话可考虑这个原因):

Starting crond: OK
Running local boot scripts (/etc/rc.local)/etc/profile: line 35: syntax error ne                                                                                     ar unexpected token `fi'
error

-sh: /etc/profile: line 35: syntax error near unexpected token `fi'
-sh: /etc/profile: line 35: `fi'

根据内核打印出的消息。到/etc/rc.local

//配置qt环境
echo 30000 >  /proc/sys/vm/min_free_kbytes
echo "0" > /sys/class/graphics/fb0/blank
source /etc/profile
//注释qt程序即可
#/opt/qt5.5.1/apps/QDesktop/QDesktop >/dev/null 2>&1 &
exit 0

 类似资料: