tslib编译使用方法(selected device is not a touchscreen I understand)

简介:

出现这个问题花了我两个小时的时间才去解决掉,原因修改版本后忘了重新编译LCD。


下面是我一直tslib 的详细步骤:

tslib-1.4.tar.gz源码下载地址:tslib-1.4.tar.gz

# tar -xzvf tslib-1.4.tar.gz 

# cd tslib

# ./autogen.sh
mkdir tmp
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache    (必须加,具体原因看文章最后)
./configure --host=arm-linux --enable-inputapi=no --cache-file=arm-linux.cache --prefix=$(pwd)/tmp

make && make install


make install后,会在tmp目录生成4个子目录:
include  lib  etc  bin
生成的库位于lib中,该目录下还有一个子目录ts,它包含了许多校准用到的库(如input.so等)。

etc下的ts.conf为配置文件,bin目录下为校准、测试工具(如校准的ts_calibrate,测试用的ts_test)。

然后把这个四个文件复制到根文件系统的根目录下。


配置文件ts.conf内容如下:
module_raw input     (去掉前面的# 和空格,其他的保持不变)
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
module_raw有许多种,这里只使用input(即Linux的input子系统,设备文件名称为/dev/event1)/dev/event0为触模屏的设备节点

vi /etc/profile 中添加如下命令

export TSLIB_TSDEVICE=/dev/event0         指定触屏设备
export TSLIB_CALIBFILE=/etc/pointercal    指定触摸屏校准文件 pintercal 的存放位置 
export TSLIB_CONFFILE=/etc/ts.conf         指定 TSLIB 配置文件的位置
export TSLIB_PLUGINDIR=/lib/ts/               指定触摸屏插件所在路径
export TSLIB_CONSOLEDEVICE=/dev/tty1 设定控制台设备为 none ,否则默认为 /dev/tty ,这样可以避免出现open consoledevice: No such file or directory KDSETMODE: Bad file descriptor  的错误 
export TSLIB_FBDEVICE=/dev/fb0             指定帧缓冲设备 


当我执行 ts_calibrate 出现了如下错误:

selected device is not a touchscreen I understand

在网上找了找到文章后发现原因是内核用的EV_VERSION为0x0100001,交叉编译工具EV_VERSION为0x0100000

把这两个修改成一样就可以了。(其实正解也是这样

方法一:

我修改# vi include/linux/input.h  EV_VERSION为0x0100000,重新编译内核还是出现相同的错误,这儿花了我大把的时间,后来才发现我这个 EV_VERSION宏改变了,而我的LCD驱动程序却没有重新编译,我就在lcd驱动程序中随便移动一下,就是为了网编译器检测到我这个驱动是修改过的,然后lcd驱动也重新编译了,再次测试就OK了,心碎啊,花了两个小时时间才解决掉。

方法二:

交叉编译中修改/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include/linux/input.h中EV_VERSIN为0x0100001

提示下这个交叉编译下的input.h有可能你的路径跟我的不一样,你可以在你交叉编译路径下用如下命令搜索:

find -name "input.h"


在make时候可能出现如下错误:

ts_test.o(.text 0x218): In function `main':
: undefined reference to `rpl_malloc'
在当前目录查找了rpl_malloc,发现configure里有#define malloc rpl_malloc一行。分析configure 脚本相关的代码,原来是ac_cv_func_malloc_0_nonnull引起的,OK我们不让它检查了,产生一个cache文件arm-linux.cache,欺骗configure:

解决办法:

echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache


目录
相关文章
|
存储 C语言
向函数传递结构体: C语言中的结构体参数传递详解
向函数传递结构体: C语言中的结构体参数传递详解
1238 0
|
网络安全 数据安全/隐私保护
荔枝派Zero(全志V3S)开启 SSH 实现远程连接和文件传输
本文将在 Buildroot 根文件系统开启 ssh 功能。
464 0
|
NoSQL Linux 编译器
Linux下交叉编译gdb,gdbserver+gdb的使用以及通过gdb调试core文件
交叉编译gdb和gdbserver 1、下载gdb:下载地址为:http://ftp.gnu.org/gnu/gdb/按照一般的想法,最新版本越好,因此下载7.2这个版本。当然,凡事无绝对。我们以gdb-7.2.tar.bz2 这个文件为例。
7739 1
|
Ubuntu Linux 开发工具
ubuntu linux搭建lvgl
ubuntu linux搭建lvgl
559 6
|
存储 关系型数据库 MySQL
MySQL数据库的表中 NULL 和 空值 到底有什么区别呢?
一篇短文让你明白MySQL数据库的表中 NULL 和 空值之间的区别!
5169 0
MySQL数据库的表中 NULL 和 空值 到底有什么区别呢?
|
Ubuntu 安全 网络协议
|
安全 C++
C++ QT 单例模式
C++ QT 单例模式
317 0
|
编解码 算法 Linux
Linux系统中如何使用tslib库实现触摸功能
大家好,今天主要和大家聊一聊,如何使用tslib库来完成对应的功能。
1575 1
Linux系统中如何使用tslib库实现触摸功能
|
存储 数据中心 数据安全/隐私保护
|
Shell

热门文章

最新文章