移植tslib 的详细步骤:

原文地址:https://yq.aliyun.com/articles/10526

移植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.hEV_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

你可能感兴趣的:(移植tslib 的详细步骤:)