首页 > 其他分享 >tslib库编译与移植

tslib库编译与移植

时间:2022-11-20 16:00:32浏览次数:80  
标签:编译 la ts wbyq so install tslib 移植

tslib库编译与移植

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

tslib库编译与移植_触摸屏

  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 文件夹。

tslib库编译与移植_FT5X06_02

  生成的文件信息:

[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

tslib库编译与移植_FT5X06_03

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

[wbyq@wbyq _install]$ vim /home/wbyq/soft_work/rootfs/etc/profile 

tslib库编译与移植_Tiny4412_04

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

tslib库编译与移植_FT5X06_05

tslib库编译与移植_tslib_06

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

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

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

#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 %6d\n", 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

tslib库编译与移植_Tiny4412_07

  触摸屏驱动参考示例:​​​https://blog.51cto.com/u_15688123/5870443​



标签:编译,la,ts,wbyq,so,install,tslib,移植
From: https://blog.51cto.com/u_15688123/5871584

相关文章

  • 【Unity3D】Unity 脚本 ② ( Visual Studio 2019 中的 Unity 编译环境配置 | Unity 编
    文章目录​​一、VisualStudio2019中的Unity编译问题​​​​二、Unity编辑器中关联外部C#脚本编辑器​​​​三、设置游戏运行时脚本更新行为​​一、Visual......
  • 【Unity3D】Unity 脚本 ① ( 创建 C# 脚本 | Visual Studio 2019 中打开 C# 脚本 | 编
    文章目录​​一、创建Unity脚本​​​​二、VisualStudio2019中打开C#脚本​​​​三、编译C#脚本​​​​四、挂载C#脚本到游戏物体GameObject​​​​1、添加......
  • Android 编译C++
    Android编译C++项目​​前言​​​​正文​​​​一、基本知识​​​​①要做什么?​​​​②JNI是什么?​​​​③NDK是什么?​​​​二、配置NDK​​​​三、创建新工程......
  • 使用Gradle编译Spring源码
    最近想研究下spring的源码,决定先把源码跑起来,在此记录一下本次遇到的问题。本次使用的工具有:git、IDEA2021社区版、jdk17、gradle7.5.1从BuildfromSource得知,需要git和......
  • 智能合约全栈(三)- 设置路径并编译
     设置paths参数使编译后的文件在指定路径下module.exports={solidity:"0.8.17",paths:{artifacts:"./src/artifacts",},networks:{......
  • openjdk15源码编译调试
    前言之前使用的openjdk11调试JVM源码和Java源码是分开的,而且各自都有不足之处openjdk在Clion引入头文件飘红Java源码换行注释导致class和src对应不上因此重新使用ope......
  • Centos7编译安装mysql8.0.20
    相关下载地址:gcchttps://ftp.mpi-inf.mpg.de/mirrors/gnu/mirror/gcc.gnu.org/pub/gcc/releases/cmakehttps://cmake.org/files/mysqlhttps://downloads......
  • win10+vs2019 编译webrtc m108
    不能访问外网途径的捷径已经下载好的资源,可以直接生成工程:https://pan.baidu.com/s/14plvXZD_qX9nn441RbsCwA?pwd=ww8c该资源可以跳过的步骤步骤1,depot_tools下载步......
  • go 编译dll 易语言调用
    //编译命令gobuild-ldflags"-s-w"-buildmode=c-shared-omain.dllmain.go导出函数编写packagemain/*#include<stdlib.h>*/import"C"import( "un......
  • [Linux ] 编译 ffmpeg 使用 AV1 编码
    编译带AV1编码器的ffmpeg安装aomgitclone--depth1https://aomedia.googlesource.com/aommkbuildcmake-G"UnixMakefiles"-DENABLE_TESTS=OFF-DENABLE_N......