0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

tslib库编译与移植

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-11-26 09:14 次阅读

1.tslib库简介

  tslib 是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口

2 相关工具安装

  安装必要工具libtool、automake、autoconf

$ sudo apt-get install libtool
$ sudo apt-get install automake
$ sudo apt-get install autoconf

3 tslib安装步骤

系统环境

开发环境: Ubuntu18.04
目标开发板: Tiny4412
交叉编译器: arm-linux-gcc
Linux内核: Linux3.5

  1.下载tslib库源码包,将源码解压到用户目录下。

tslib源码下载地址:https://github.com/libts/tslib/releases

[wbyq@wbyq soft_work]$ tar xvf /mnt/hgfs/ubuntu/soft_pack/tslib-master.tar.gz  #解压
[wbyq@wbyq soft_work]$cd tslib-master/tslib-master/    #进入到源码目录下
[wbyq@wbyq tslib-master]$ ls
pYYBAGOBaI6AG2iBAACfFzUyPlM220.png#pic_center

  2.configure配置,生成Makefile文件。

[wbyq@wbyq tslib-master]$ ./autogen.sh
[wbyq@wbyq tslib-master]$ ./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache --prefix=$PWD/_install

- -host=arm-linux - - -指定编译器
- -prefix=$PWD/_install - - -指定安装目录

  3.编译安装。

[wbyq@wbyq tslib-master]$ make && make install  

  编译安装好后会生成 _install 文件夹。

poYBAGOBaI-AZgBjAAFoTBCxuFI230.png#pic_center

  生成的文件信息

[wbyq@wbyq tslib-master]$ cd _install/
[wbyq@wbyq _install]$ tree
.
├── bin
│   ├── ts_calibrate
│   ├── ts_harvest
│   ├── ts_print
│   ├── ts_print_raw
│   └── ts_test
├── etc
│   └── ts.conf
├── include
│   └── tslib.h
└── lib
    ├── libts-1.0.so.0 -> libts-1.0.so.0.0.0
    ├── libts-1.0.so.0.0.0
    ├── libts.la
    ├── libts.so -> libts-1.0.so.0.0.0
    ├── pkgconfig
    │   ├── tslib-1.0.pc
    │   └── tslib.pc
    └── ts
        ├── arctic2.la
        ├── arctic2.so
        ├── collie.la
        ├── collie.so
        ├── corgi.la
        ├── corgi.so
        ├── dejitter.la
        ├── dejitter.so
        ├── dmc.la
        ├── dmc.so
        ├── galax.la
        ├── galax.so
        ├── h3600.la
        ├── h3600.so
        ├── input.la
        ├── input.so
        ├── linear_h2200.la
        ├── linear_h2200.so
        ├── linear.la
        ├── linear.so
        ├── mk712.la
        ├── mk712.so
        ├── pthres.la
        ├── pthres.so
        ├── tatung.la
        ├── tatung.so
        ├── touchkit.la
        ├── touchkit.so
        ├── ucb1x00.la
        ├── ucb1x00.so
        ├── variance.la
        └── variance.so

6 directories, 45 files

 4.拷贝bin目录下的文件到开发板/bin目录下。

[wbyq@wbyq _install]$ cp bin/* /home/wbyq/soft_work/rootfs/bin/

 5.拷贝lib目录下的.so文件到开发板的/lib目录下。

[wbyq@wbyq _install]$ cp lib/*.so* /home/wbyq/soft_work/rootfs/lib/ -rfdv
[wbyq@wbyq _install]$ cp lib/ts/ /home/wbyq/soft_work/rootfs/lib/ -rfdv

  6.拷贝etc/ts.conf文件到开发板的/etc目录下。

[wbyq@wbyq _install]$ cp etc/ts.conf /home/wbyq/soft_work/rootfs/etc/ 

  7.修改配置文件。
  如果希望使用linux输入层事件接口,需要取消module_raw input 注释。

[wbyq@wbyq _install]$ vim /home/wbyq/soft_work/rootfs/etc/ts.conf
pYYBAGOBaI-ABCi9AAHWuXgb7IM175.png#pic_center

  8.配置开发板的的启动文件 profile。

[wbyq@wbyq _install]$ vim /home/wbyq/soft_work/rootfs/etc/profile 
poYBAGOBaJCAZ7O-AAJsvZrzwU8084.png#pic_center
export set TSLIB_TSDEVICE=/dev/input/event2 #设置触摸屏设备节点
export set TSLIB_CONFFILE=/etc/ts.conf #配置文件环境变量
export set TSLIB_PLUGINDIR=/lib/ts #指定tslib插件目录
export set TSLIB_CALIBFILE=/etc/pointercal  #指定校准之后,信息保存的位置(会自动生成)
export set TSLIB_CONSOLEDEVICE=none  #指定控制台设备文件名字,默认没有。填none
export set TSLIB_FBDEVICE=/dev/fb0 #屏幕设备节点

注意: 设置完环境变量之后,需要重启开发板生效,或者使用 source 命令立即生效。

4 开发板运行效果

  安装触摸屏驱动,检查触摸屏设备节点是否为上面设置的event2,运行ts_test。

[root@wbyq code]# insmod ft5x06_dev.ko 
[  759.390000] IIC子系统:设备层注册成功
[root@wbyq code]# insmod ft5x06_drv.ko 
[  762.175000] IIC子系统:驱动层注册成功
[  762.175000] 资源匹配成功
[  762.175000] input: Unspecified device as /devices/virtual/input/input3
[root@wbyq code]# ts_test 
874.277420:    388    354      1
874.322712:    384    352      1
874.337917:    369    348      1
874.353162:    355    346      1
874.368397:    332    343      1
874.383524:    304    339      1
874.398664:    277    337      1
874.413889:    258    336      1
874.429156:    243    335      1
874.444247:    234    334      1
874.474649:    230    333      1
874.489914:    236    330      1
874.504974:    248    328      1
pYYBAGOBaJCASifKAAHqG0EDMJE024.png#pic_centerpYYBAGOBaJGAWONQAAKXZO7A0lc832.png#pic_center

  tslib中提供的测试命令,是通过ts.config文件读取相应的触摸屏配置信息和LCD屏配置信息。

5 调用tslib库获取触摸屏坐标

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include "tslib.h"
int main(int argc,char *argv[])
{
	struct tsdev *ts;
	char *tsdevice=NULL;
	/*打开触摸屏设备节点*/
	if( (tsdevice = getenv("TSLIB_TSDEVICE")) != NULL ) {
		ts = ts_open(tsdevice,0);
	} 
	else {
		ts = ts_open("/dev/input/event2",0);
	}
	if(ts==NULL)
	{
		perror("ts_open");
		exit(1);
	}
	if (ts_config(ts)) {
		perror("ts_config");
		exit(1);
	}
	struct ts_sample samp;
	int ret;
	printf("   时间    t X坐标   t Y坐标t压力值 n");
	while (1) {
		ret = ts_read(ts, &samp, 1);
		if (ret < 0) {
			perror("ts_read");
			exit(1);
		}
		if (ret != 1)
			continue;
		printf("[%ld.%06ld] %6d %6d %6dn", samp.tv.tv_sec, samp.tv.tv_usec,
											samp.x, samp.y, samp.pressure);
	}
	return 0;	
}

程序编译:

cflags=-I/home/wbyq/soft_work/tslib-master/tslib-master/_install/include  #指定头文件
cflags+=-L/home/wbyq/soft_work/tslib-master/tslib-master/_install/lib  #指定库文件路径
cflags+=-lts  #指定库
app:
	arm-linux-gcc app.c -o app $(cflags)

运行效果:

[root@wbyq code]# ./app 
   时间       X坐标   Y坐标   压力值 
[4591.061816]    337    369      1
[4591.124190]    337    369      0
[4592.426659]    512    399      1
[4592.502302]    507    400      1
[4592.517474]    503    401      1
[4592.532512]    500    403      1
[4592.547776]    494    405      1
[4592.562922]    489    408      1
[4592.578111]    483    410      1
[4592.593260]    479    412      1
[4592.624739]    475    415      1
[4592.655903]    472    417      0
[4592.972564]    442    402      1
[4593.063510]    445    402      1
[4593.078637]    449    402      1
[4593.093764]    452    403      1
[4593.109025]    459    404      1
[4593.124148]    465    404      1
pYYBAGOBaJKAc582AAD3OU0pxnc494.png#pic_center

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5082

    文章

    19118

    浏览量

    305010
  • 触摸屏
    +关注

    关注

    42

    文章

    2304

    浏览量

    116171
  • 移植
    +关注

    关注

    1

    文章

    379

    浏览量

    28128
  • 编译器
    +关注

    关注

    1

    文章

    1634

    浏览量

    49124
  • 编译
    +关注

    关注

    0

    文章

    657

    浏览量

    32868
收藏 人收藏

    评论

    相关推荐

    Linux系统中tslib的基本原理与实现方法

    今天主要和大家聊一聊,如何使用tslib来完成对应的功能。
    发表于 11-14 09:57 2724次阅读

    飞凌嵌入式ElfBoard ELF 1板卡-交叉编译移植tslib

    tslib是专门为触摸屏设备所开发的Linux应用层函数。1、下载源码。https://github.com/libts/tslib/releases2、拷贝源码到开发环境/home/elf
    发表于 07-24 10:47

    【OK210试用体验】之qt移植tslib编译和配置

    解决了,其他移植前首先需要tslib,该是触摸屏校准时需要的文件,如对触摸屏的数据进行过滤、去抖动等,qt的
    发表于 09-28 12:46

    tslib1.4的编译与安装

    tslib1.4 是触摸屏用于校准的一个软件,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。因此这里先
    发表于 10-13 10:22

    移植tslib后,ts_calibrate测试屏幕黑屏

    移植tslib后,执行ts_calibrate或ts_test,屏幕立马黑屏,是什么原因呢?
    发表于 10-14 10:14

    移植TSLIB后测试TSLIB带的程序,触摸测试程序时界面下面的图标也会被点开

    我在OK6410上移植tslib后,配置好环境变量等,运行 tslib/bin/下面的几个测试程序,如ts_test ts_print,以及触摸屏校准,这时会弹出个黑色界面,上面有十
    发表于 05-18 17:30

    【创龙AM4379 Cortex-A9试用体验】之移植QT5.4.1与tslib1.4到TL-4379开发板

    移植。1.交叉编译tslib1.4当前,对触摸屏信号的获取、校正、滤波处理,均采用开源的tslib,我们采用tslib1.4.首先到网上下
    发表于 06-26 15:56

    【Rico Board试用体验】之编译触摸屏驱动Tslib

    PC上的不太一样,需要先对Tslib进行移植,其中也要保证交叉编译器一致,这里我们选用官方提供的交叉编译器即可。具体搭建环境参考前面帖子,下面说下具体
    发表于 12-28 09:04

    移植tslib出现selected device is not a touchscreen I understand的解决方法

    本帖最后由 weidongshan 于 2018-1-23 16:10 编辑 首发平台:微信公众号baiwenkeji很多人在做触摸屏驱动实验,移植tslib时,可能会出现错误提示
    发表于 01-23 15:51

    LINUX tslib1.4 移植全过程

    --enable-inputapi=no--prefix=/usr/local/arm-linux/tslib1.4注意,prefix选项更换为你的安装路径。 4.编译 # make 5.安装
    发表于 07-03 01:22

    迅为IMX6ULL开发板Linux下电容触摸屏实验-Tslib移植和使用

    54.5 Tslib移植和使用ft5426 触摸驱动添加成功后,发现触摸可能不太准确,这时可以使用一个第三方开源 tslib 来调试触摸屏。下面来看一下
    发表于 12-07 10:18

    如何获取tslib源码?

    Tslib移植和使用获取tslib源码编译tslib测试tslib使用Linux内核自带的ft5
    发表于 12-28 07:45

    imx6ull buildroot构建根文件系统移植tslib1.21无法运行是为什么?

    本人使用IMX6ULL开发板,用buildroot构建了一个根文件系统,还未添加Qt,根文件系统可以烧写到板子上正常运行,在移植tslib1.21把相应的交叉编译后的文件拷贝到主板根目录,设置了
    发表于 01-07 06:06

    RK1808移植tslib的过程是怎样的?

    RK1808移植tslib的过程是怎样的?
    发表于 02-16 06:37

    嵌入式数据Sqlite移植教程

    嵌入式数据Sqlite移植教程 sqlite-3.3.6编译安装与交叉编译全过程详细记录
    发表于 03-11 09:57 3719次阅读