Tslib使用

Tslib安装编译过程

1.下载TsLib 1.4

2.安装编译所需文件
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool

3.编译:
tar xzf 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 –cache-file=arm-linux.cache –prefix=$(pwd)/tmp
修改 tslib/etc/ts.conf第1行(去掉#号和第一个空格):
module_raw input
改为:
module_raw input

make
make install

4.安装:
①将编译生成的.so库文件复制到开发板/lib目录下
cd tmp
cp * -rf /nfsroof/lib
②为了方便以后使用“-lts”时,交叉编译工具arm-linux-gcc能够找到对应的.so文件,应该讲生成的库文件也复制一份到交叉编译工具安装目录下的/lib目录,同时将/include目录也复制一份到对应的工具链的/include下。
但是貌似一般网上编译好的工具链里面都自带tslib动态库,除非版本不一致,这时候这一步是可以省略的。

5.配置环境变量
在开发板终端中修改profile文件:
vim /etc/profile
添加:
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0

安装完毕重新启动开发板,使环境变量生效

使用过程

1.先安装lcd与touchscreen模块:
insmod cfbfillrect.ko
insmod cfbcopyarea.ko
insmod cfbimgblt.ko
insmod lcd.ko
insmod touchscreen.ko

2.运行ts_calibrate

常见问题

运行ts_calibrate很可能终端显示:
selected device is not a touchscreen I understand
此时点击屏幕没有反应

在tslib源码中搜索这个打印信息提示
在/plugins/input-raw.c文件中的check_fd(),找到判断条件:

if (! ((ioctl(ts->fd, EVIOCGVERSION, &version) >= 0) &&
   (version == EV_VERSION) &&
   (ioctl(ts->fd, EVIOCGBIT(0, sizeof(bit)*8), &bit) >= 0) &&
   (bit & (1 << EV_ABS)) &&
   (ioctl(ts->fd, EVIOCGBIT(EV_ABS, sizeof(absbit)*8), &absbit) >= 0) &&
   (absbit & (1 << ABS_X)) &&
   (absbit & (1 << ABS_Y)) && (absbit & (1 << ABS_PRESSURE)))) 
{
      fprintf(stderr, "selected device is not a touchscreen I understand\n");
      return -1;
}

在这里可以添加一些打印语句,找到具体是哪一个参数导致错误:

fprintf(stderr,"EV_VERSION=0x%x\r\n", EV_VERSION);
fprintf(stderr,"version=0x%x\r\n\n", version);
fprintf(stderr,"EV_ABS=%d\r\n",EV_ABS);
fprintf(stderr,"bit=0x%x\r\n",bit);
fprintf(stderr,"bit & (1 << EV_ABS)=0x%x\r\n\n", (bit & (1 << EV_ABS)));
fprintf(stderr,"absbit=0x%x\r\n",absbit);
fprintf(stderr,"ABS_X=%d\r\n", ABS_X);
fprintf(stderr,"ABS_Y=%d\r\n", ABS_Y);
fprintf(stderr,"ABS_PRESSURE=%d\r\n", ABS_PRESSURE);
fprintf(stderr,"absbit & (1 << ABS_X)=0x%x\r\n", (absbit & (1 << ABS_X)));
fprintf(stderr,"absbit & (1 << ABS_Y)=0x%x\r\n", (absbit & (1 << ABS_Y)));
fprintf(stderr,"absbit & (1 << ABS_PRESSURE)=0x%x\r\n\n",(absbit & (1 << ABS_PRESSURE)));

通常导致失败的原因都是版本号不对导致,可以在linux内核源码中搜索EV_VERSION,可以在include/linux/input.h中找到这个宏定义,与tslib保持一致即可!

引用:D:\Linux-4.9.88.tar\Linux-4.9.88\include\uapi\linux input.h 。 引用:cp -d lib/*so* /home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/../arm-linux-gnueabihf/libc/usr/lib/ (2)板子上测试编译 。 引用:1,上网搞个源码库,如果你可爱到不会用百度,没关系,戳我下载( http://download.csdn.net/detail/vincent040/9662825 )。 2,将源代码丢到Ubuntu,并通过以下命令解压到Ubuntu的家目录下: tar xjvf tslib-1.4.tar.bz2 -C ~ 3,进入源码顶层目录,依次执行如下命令: mkdir ~/tslib ./configure --prefix=/home/xxx/tslib --host=arm-none-linux-gnueabi make make install A) --prefix= 后面的路径就是你要安装 tslib 库的路径,墙裂建议设置为家目录下的空目录(比如~/tslib),因为如果设置系统其它目录的话,后期 make install 的时候会让你解决权限的问题,当你自作聪明地使用sudo的时候,系统却又可能会抱怨找不到工具链,因此除非你是 Ubuntu科学家,对系统环境变量了如指掌,否则不要用小白的身份去作死,乖乖将 --prefix 指定为 ~/tslib 即可。 根据提供的引用内容,可以看出tslib是一个Linux上的触摸屏输入子系统库。它提供了在嵌入式系统中处理触摸屏输入的功能和接口。要安装tslib库,可以按照以下步骤进行操作:首先,下载源码库并将源代码解压到Ubuntu的家目录下;接着进入源码顶层目录,创建一个空目录(比如~/tslib)作为安装路径,并执行configure命令来配置安装参数;然后使用make命令编译源代码;最后使用make install命令安装tslib库到指定的安装路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值