ubuntu之移植tslib

tslib最主要的用途就是可以校准触摸屏,通常可以把它作为触摸屏的一个适配层,为上层的应用程序提供统一的接口。在这里,我们移植tslib,为以后移植和使用QT打下基础。

首先要构建交叉开发环境:

1、工具链和安装

工具链压缩包: arm-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2,安装工具链只需将压缩包进行解压,并设置环境变量即可。解压后生成 arm-2011.03 目录。设置工具链路径,将 arm-2011.03/bin 目录添加到系统 PATH 环境变量中即可,假如工具链 安 装 在 /home/ctools/arm-2011.03 目 录 , 则 需 要 指 定 交 叉 编 译 目 录 到/home/ctools/arm-2011.03/bin。
具体设置方法:修改~/.bashrc (或者/etc/profile)文件,在 PATH 变量中增加交叉编译工具链的安装路径,然后运行~/.bashrc 文件,使设置生效。操作:

vim ~/.bashrc

添加PATH=$PATH:/myTools/crosstools/arm-2011.03/bin//增加交叉编译器安装路径

在终端输入 arm-none-并按 TAB 键, 如果能够看到很多 arm-none-linux-gnueabi-前缀的命令, 则基本可以确定交叉编译器安装正确。
接下来我们下载tslib-1.4.tar.gz,并完成解压、配置、编译和安装操作,命令如下:

tar  -zxvf  tslib-1.4.tar.gz

cd  tslib

先执行./autogen-clean.sh

接下来执行./autogen.sh,会生成许多文件,其中就会有configure
./configure CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ --host=arm-none-linux-gnueabi  --prefix=/opt/tslib ac_cv_func_malloc_0_nonnull=yes

-prefix这里是生成的目录,是你之后生成文件的路径

arm-none-linux-gnueabi-这个是你交叉编译的前缀,可能会有人不一样,你自己去你交叉编译的安装目录看下

如果不一样就将上面的arm-none-linux-gnueabi-替换成你的

成功之后再执行make && make  install

成功之后你就可以在你-prefix指定的目录下看到etc lib include bin目录的生成

../libtool: line 970: arm-linux-gcc: command not found
make[2]: *** [ts_attach.lo] 错误 1
make[2]:正在离开目录 `/opt/tslib'
make[1]: *** [all-recursive] 错误 1
make[1]:正在离开目录 `/opt/tslib'
make: *** [all] 错误 2

说明你交叉编译不对,像我就是arm-none-linux-gnueabi-而我写成了arm-linux-gcc:所以报错

然后再把生成tslib移植到开发板上,也就是复制相应的文件到开发板的根文件系统内,我放的位置是/opt目录下:

/opt/tslib/etc下的ts.conf文件复制到根文件系统的/etc下,并修改其中的内容,下面是ts.conf文件的前两行;

# Uncomment if you wish to use the linuxinput layer event interface

# module_raw input

去掉# module_raw input前面的注释以及空格,也就是module要顶格。该文件内的其他部分无需改动。

最后添加环境变量,把有关tslib的环境变量添加到开发板根文件系统的/etc/profile文件内,添加的内容如下:

export QWS_MOUSE_PROTO=tslib:/dev/input/event0
export TSLIB_ROOT=/opt/tslib

export TSLIB_TSDEVICE=/dev/input/event0

export TSLIB_TSEVEVTTYPE=input

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0


这里每个人都不一样,网上一百度可以看到很多

下面对这些环境变量做一简单的说明:

TSLIB_TSDEVICE——触摸屏设备节点,这个要根据自己开发板的情况填写;

TSLIB_CONFFILE——配置文件名,就是前面复制并修改的ts.conf文件;

TSLIB_PLUGINDIR——插件目录

TSLIB_CALIBFILE——校准的数据文件pointercal。当执行ts_calibrate命令对触摸屏进行校正的时候,会生成一个校准文件,这样在以后使用触摸屏的时候,系统会根据该文件正确判断触点的位置。在这里我把pointercal文件放到temp目录下,因为对于我的系统来说,temp目录是可读写的。如果你选择的pointercal文件所在目录是不可写的,那么是不会生成pointercal文件的,即使执行了ts_calibrate命令,触点的位置也是错误的;

TSLIB_CONSOLEDEVICE——控制台设备文件名;

TSLIB_FBDEVICE——LCD设备节点,也要根据自己开发板的情况填写。

这样开发板的根文件系统就添加了tslib,重新编译根文件系统,并把它烧写进开发板内,启动开发板后,到/opt/bin/下执行ts_calibrate命令,用来进行校验触摸屏;执行ts_test命令可以对触摸屏进行测试。

如果你运行ts_calibrate碰到了while loading shared libraries:/opt/lib/libts-0.0.so.0:file too short,可以

重建 libts.so 和 libts.so.0 连接

ln -s lib-0.0.so.0.1.1 libts.so.0
ln -s lib-0.0.so.0.1.1 libts.so


再次启动脚本
这样就行了!!

其他问题:

1、如果是新板子10分钟会黑屏,可以先设置setblank=0,不进入待机模式

2、如果以后你运行qt程序的时候,提示了你一句No such plugin for spec "tslib",那是因为你qt的插件环境变量指定了tslib,去/etc/profile里面将这句话屏蔽或删除就好啦/

3、如果出现了ts_config() failed (No such file or directory),就在/etc/profile下添加

export  LD_PRELOAD=$TSLIB_ROOT/lib/libts.so 

4、 Segmentation fault 
ts.conf没修改,或者修改后前边的空格没有删除掉 vi /opt/ts.conf 最后内容如下: 

module_raw input 
module pthres pmin=1 
module variance delta=30 
module dejitter delta=100 
module linear 

5、ts_open: No such file or directory 
导出触摸屏的环境变量:

export TSLIB_TSDEVICE=/dev/input/event0/

6、open tty:No such file or directory 
KDSETMODE:Bad file descriptor 
导出控制台环境变量:

export TSLIB_CONSOLEDEVICE=none


7、Couldnt load module pthres 
No raw modules loaded. 
ts_config: Success 
解决办法: 

export TSLIB_PLUGINDIR=$T_ROOT/lib/ts/

8、Couldnt open tslib config file: No such file or directory 
ts_config: Illegalseek 
解决办法: 

export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf

9、 不要在pointercal对应的目录下,建立一个空的pointercal文件,否则在运行ts_calibrate时,也可能会出现Segmentation fault

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值