嵌入式开发之tslib-1.4移植

article/2025/1/16 3:35:31

目录

前言

一、下载tslib

二、编译和安装

1.编写编译脚本

2.编译时遇到的问题

三、移植到目标机

1.tslib文件移植

2.修改ts.conf内容

3.配置环境变量

4.测试

总结


前言

tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能。通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。由于使用QT作为上层应用的交互,所以需要移植tslib。

本次移植tslib的软硬件环境环境如下:

主机环境:Ubuntu 18.04.4 LTS

编译环境:arm-linux-gcc-4.3.2

目标机:飞凌-OK6410-A

目标机内核:linux 3.0.1


一、下载tslib

在github下载tslib-1.4 (tslib-1.4下载地址)获取到tslib-1.4.tar.gz安装源文件。

二、编译和安装

1.编写编译脚本

新建自动编译脚本mk_tslib.sh,内容如下:

#!/bin/sh
tar -zxvf tslib-1.4.tar.gz
cd tslib-1.4
./autogen.sh 
mkdir _install
echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$(pwd)/_install
make
make install

2.编译时遇到的问题

问题一、"SYN_MT_REPORT"未声明

详细报错代码如下:

input-raw.c: In function 'check_fd':
input-raw.c:198: error: 'SYN_MT_REPORT' undeclared (first use in this function)
input-raw.c:198: error: (Each undeclared identifier is reported only once
input-raw.c:198: error: for each function it appears in.)
input-raw.c: In function 'ts_input_read_mt':
input-raw.c:484: error: 'SYN_MT_REPORT' undeclared (first use in this function)
Makefile:826: recipe for target 'input-raw.lo' failed
make[1]: *** [input-raw.lo] Error 1
make[1]: Leaving directory '/home/daniel/tool/tslib/tslib-1.4/plugins'
Makefile:481: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1

解决方法:

打开内核源码/include/linux/input.h,复制SYN_MT_REPORT相关代码添加到tslib-1.4/src/tslib.h中,代码如下:

/*
* Synchronization events.
*/
#define SYN_MT_REPORT           2

 问题二、"ABS_MT_SLOT"未声明

详细报错代码如下:

ts_test_mt.c: In function 'main':
ts_test_mt.c:138: error: 'ABS_MT_SLOT' undeclared (first use in this function)
ts_test_mt.c:138: error: (Each undeclared identifier is reported only once
ts_test_mt.c:138: error: for each function it appears in.)
Makefile:517: recipe for target 'ts_test_mt.o' failed
make[2]: *** [ts_test_mt.o] Error 1
make[2]: Leaving directory '/home/daniel/tool/tslib/tslib-1.4/tests'
Makefile:481: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/daniel/tool/tslib/tslib-1.4'
Makefile:390: recipe for target 'all' failed
make: *** [all] Error 2

解决方法:

打开内核源码/include/linux/input.h,复制ABS_MT_XXX相关代码添加到tslib-1.4/src/tslib.h中,代码如下:

 /** Absolute axes*/
#define ABS_MT_SLOT             0x2f    /* MT slot being modified */
#define ABS_MT_TOUCH_MAJOR      0x30    /* Major axis of touching ellipse */
#define ABS_MT_TOUCH_MINOR      0x31    /* Minor axis (omit if circular) */
#define ABS_MT_WIDTH_MAJOR      0x32    /* Major axis of approaching ellipse */
#define ABS_MT_WIDTH_MINOR      0x33    /* Minor axis (omit if circular) */
#define ABS_MT_ORIENTATION      0x34    /* Ellipse orientation */
#define ABS_MT_POSITION_X       0x35    /* Center X ellipse position */
#define ABS_MT_POSITION_Y       0x36    /* Center Y ellipse position */
#define ABS_MT_TOOL_TYPE        0x37    /* Type of touching device */
#define ABS_MT_BLOB_ID          0x38    /* Group a set of packets as a blob      */
#define ABS_MT_TRACKING_ID      0x39    /* Unique ID of initiated contact */
#define ABS_MT_PRESSURE         0x3a    /* Pressure on contact area */
#define ABS_MT_DISTANCE         0x3b    /* Contact hover distance */// adds by yourself
#define ABS_MT_TOOL_X           0x3c    /* Center X tool position */
#define ABS_MT_TOOL_Y           0x3d    /* Center Y tool position */

 编辑mk_tslib.sh,注释“tar -zxvf tslib-1.4.tar.gz”来取消解压操作,代码如下:

#!/bin/sh
#tar -zxvf tslib-1.4.tar.gz
cd tslib-1.4
./autogen.sh 
mkdir _install
echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$(pwd)/_install
make
make install

 重新运行mk_tslib.sh,将在tslib-1.4/_install目录下生成bin、etc、include和lib文件夹,查询_install文件夹如下:

root@ubuntu:~/tool/tslib# ls tslib-1.4/_install/ -all
total 24
drwxr-xr-x  6 root root 4096 Jun  2 14:57 .
drwxrwxr-x 11 root root 4096 Jun  2 14:57 ..
drwxr-xr-x  2 root root 4096 Jun  2 14:57 bin
drwxr-xr-x  2 root root 4096 Jun  2 14:57 etc
drwxr-xr-x  2 root root 4096 Jun  2 14:57 include
drwxr-xr-x  3 root root 4096 Jun  2 14:57 lib

三、移植到目标机

1.tslib文件移植

将_install文件夹复制到目标机的/usr/local下,将_install重命名为tslib,tslib移植完成。

2.修改ts.conf内容

打开文件/etc/ts.conf,定位至#module_raw input,把行首的注释符去掉,且行首不要留有空格。

如下图:

# Uncomment if you wish to use the linux input layer event interface
module_raw input

3.配置环境变量

打开文件/etc/profile,添加tslib配置信息,如下图:

export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

4.测试

重启系统,进入/usr/local/tslib/bin目录,执行触摸屏校准程序ts_calibrate,生成/etc/pointercal。

./ts_calibrate

在/usr/local/tslib/bin目录,执行触摸屏测试程序ts_test,可在屏幕上拖动十字架或画画,如下图:


总结

移植tslib后需要配置环境变量使tslib生效,通过执行触摸屏校准和测试程序来检验移植成功与否。


http://chatgpt.dhexx.cn/article/6NmbI1JA.shtml

相关文章

QT tslib安装编译

1.下载源码 git clone https://github.com/libts/tslib.git 2.安装其他工具 sudo apt-get install automake sudo apt-get install autogen autoconf sudo apt install automake libtool m4 autoconf 3.进入目录,配置 ubuntuubuntu:~/Downloads/tslib$ ./auto…

QT和tslib的移植

QT(5.12.9)和tslib(1.4)的移植 前提条件: 添加交叉编译工具链到环境变量中 vim ~/.bashrc export PATHtoolchain_absolute_dir:$PATH # 保存退出source ~/.bashrc# 验证 echo $PATHTSlib移植 1、tslib源码获取 # …

tslib-1.21 ts_setup详解

几个月前买了Imx6ull的开发板,跟着韦东山老师的课程,把linux应用,驱动基础学完了,紧跟着课程又完成了第一个linux项目-电子量产工具。 虽然做完了项目,但毕竟不是完全靠自己编写的,所以决定重头看一下项目的…

tslib库编译与移植

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

tslib安装以及使用

tslib的一些小问题:https://blog.csdn.net/xiaodingqq/article/details/80807362 1.先在网上下载 tslib-1.4.tar.gz压缩包 2.然后在ubuntu编译: tar xzf tslib-1.4.tar.gzcd tslib./autogen.sh      mkdir tmp          //创建安…

使用 tslib 库

tslib 是专门为触摸屏设备所开发的 Linux 应用层函数库,并且是开源。 tslib 为触摸屏驱动和应用层之间的适配层, 它把应用程序中读取触摸屏 struct input_event 类型数据(这是输入设备上报给应用层的原始数据)并进行解析的操作过程…

tslib 的安装与使用

5 tslib 需要安装好触摸屏驱动 tslib 是一个触摸屏的开源库,可以使用它来访问触摸屏设备,可以给输入设备添加各种“filter”(过滤器,就是各种处理),地址是:http://www.tslib.org/。 编译 tslib 后,可以得到…

第三方库介绍——tslib库

文章目录 tslib 简介tslib 框架分析tslib 的框架 交叉编译、测试 tslibtslib应用程序 tslib 简介 tslib 是一个触摸屏的开源库,可以使用它来访问触摸屏设备,可以给输入设备添加各种“ filter ”( 过滤器,就是各种处理) 编译 tslib 后&#…

tslib框架分析

tslib时一个触摸屏的开源库,可以使用它来访问触摸屏设备,可以输入给设备添加各种"filter",地址这里 编译tslib后,可以得到libts库,还可以得到各种工具:校准工具、测试工具 一、tslib框架分析 …

暑假实训成果及心得

暑假实训成果及心得 本次暑假实训主要从大数据的现况及前景出发,通过大数据发展的趋势及鲲鹏云大数据对大数据有了一个全新的认识。 自我介绍 本着对大数据热爱,我毅然决然的踏上了这条大数据的不归路。第一次接触大数据是在高三的语文试卷里&#xf…

大学生mysql实训心得_大学生实训心得体会范文(精选3篇)

大学生实训心得体会范文(精选3篇) 当在某些事情上我们有很深的体会时,往往会写一篇心得体会,这样可以帮助我们总结以往思想、工作和学习。一起来学习心得体会是如何写的吧,以下是小编为大家收集的大学生实训心得体会范文(精选3篇),仅供参考,欢迎大家阅读。 大学生实训心得…

谈谈我的实习感受~

写在前面 有粉丝私信说,让我出一篇关于工作感受的文章,今天他来了。 初来乍到 刚入职的时候,一个词形容——一脸懵逼,不过有人带着会好很多,他会告诉你需要做什么,当然了刚来的一两周一般都是熟悉公司业务&…

c语言实验报告总结通用版,大学生实训心得体会(通用11篇)

大学生实训心得体会(通用11篇) 我们心里有一些收获后,好好地写一份心得体会,这样能够培养人思考的习惯。很多人都十分头疼怎么写一篇精彩的心得体会,以下是小编精心整理的大学生实训心得体会(通用11篇),欢迎大家分享。 大学生实训心得体会1 在我们过去的读书生涯中,有一个…

云计算实训报告总结_实训报告心得体会(通用5篇)

实训报告心得体会(通用5篇) 我们在一些事情上受到启发后,马上将其记录下来,这样就可以总结出具体的经验和想法。那么如何写心得体会才能更有感染力呢?以下是小编帮大家整理的实训报告心得体会(通用5篇),欢迎阅读,希望大家能够喜欢。 实训报告心得体会1 我对于visualbasic的…

大学生html5实训报告,大学生实训心得体会范文(精选5篇)

大学生实训心得体会范文(精选5篇) 当我们积累了新的体会时,应该马上记录下来,写一篇心得体会,如此就可以提升我们写作能力了。你想好怎么写心得体会了吗?下面是小编整理的大学生实训心得体会范文(精选5篇),仅供参考,大家一起来看看吧。 大学生实训心得体会1 五月,在各种…

html5实训总结200字,实训心得体会范文200字(通用5篇)

实训心得体会范文200字(通用5篇) 当我们心中积累了不少感想和见解时,写心得体会是一个不错的选择,这样就可以通过不断总结,丰富我们的思想。那么心得体会怎么写才恰当呢?下面是小编收集整理的实训心得体会范文200字(通用5篇),仅供参考,大家一起来看看吧。 实训心得体会1 …

大学生html5实训心得体会,实训心得体会600字(精选5篇)

实训心得体会600字(精选5篇) 当我们心中积累了不少感想和见解时,写一篇心得体会,记录下来,这样我们就可以提高对思维的训练。但是心得体会有什么要求呢?下面是小编帮大家整理的实训心得体会600字(精选5篇),欢迎阅读,希望大家能够喜欢。 实训心得体会600字1 时间过的真快,…

上第一次实训课感想

上第一次Java实训课感想 第一天开始实训,有点担心自己不会做,但第一天分配的任务比我想象的要简单一点,是用navicat创建数据表,用到了mysql的知识。 比较麻烦的就是给表导入数据,因为数据比较多,所以比较麻烦,但总体来说还好。 然后用百度脑图创建了一张思维导图,如下…

html怎么制作表单,HTML如何制作表单

制作表单的方法:首先使用form标签创建表单,搭建表单框架;然后使用input标签创建文本输入框和提交按钮;接着使用select和option标签创建下拉列表;最后使用textarea标签创建文本区域即可。 本教程操作环境:wi…

HTML 什么是表单

什么是表单 HTML 表单的主要作用是接收用户的输入,当用户提交表单时,浏览器将用户在表单中输入的数据打包,并发送给服务器,从而实现用户与Web服务器的交互。 表单是控件的容器,一个表单由form元素、表单控件和表单按…