Chinaunix首页 | 论坛 | 博客
  • 博客访问: 831021
  • 博文数量: 281
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2770
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-02 19:45
个人简介

邮箱:zhuimengcanyang@163.com 痴爱嵌入式技术的蜗牛

文章分类
文章存档

2020年(1)

2018年(1)

2017年(56)

2016年(72)

2015年(151)

分类: 嵌入式

2016-08-04 16:26:52



tslib库的安装及各种错误处理

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

1.准备工作
    确保已安装 autoconf、automake 和 libtool。如果没有安装,或者不确定,可输入下列命令进行安装:

$ sudo apt-get install autoconf
$ sudo apt-get install automake
$ sudo apt-get install libtool

2.下载源码

从网上下载 tslib 源代码,本文以 tslib-1.4.tar.gz 为例。下载后,得到 tslib-1.4.tar.gz,解压缩:

$ tar -zxvf tslib-1.4.tar.gz

3.配置

进入解压的目录,执行如下命令:

$ cd tslib
$ ./autogen.sh
$ ./configure --prefix=/nfsroot/tslib --host=arm-none-linux-gnueabi

ac_cv_func_malloc_0_nonnull=yes

--prefix 指定安装路径,用户可以自行指定 tslib 的安装目录。
--host 指定交叉编译器,如果交叉编译器是 arm-none-linux-guneabi-gcc,则指定arm-none-linux-guneabi

错误3.1 执行./autogen.sh时,出现了如下错误:

./autogen.sh: 4: autoreconf: not found

解决方法:
sudo apt-get install autoconf automake libtool

错误3.2 执行./configure --host=arm-linux --prefix=/usr/local/tslib

提示错误:
ts_test.o(.text+0x218): In function `main':
: undefined reference to `rpl_malloc'
fbutils.o(.text+0x234): In function `open_framebuffer':
: undefined reference to `rpl_malloc'
collect2: ld returned 1 exit status
make[2]: *** [ts_test] Error 1
make[2]: Leaving directory `/home/gfpeak/Desktop/tslib/tests'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/gfpeak/Desktop/tslib'

make: *** [all] Error 2

解决方法:
原因是在 tslib-1.4/config.h 中有一行定义 “#define malloc rpl_malloc”,
直接注释掉这行定义即可,除非你自己实现了一个 malloc 版本。

4.编译

执行make指令:

$ make
错误4.1 执行 make 出错

error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments

解决方法:

修改./tests/ts_calibrate.c文件中的open函数  

修改为cal_fd = open (calfile, O_CREAT | O_RDWR,0);(据说是交叉编译器版本问题)

5.安装

$ make install

编译生成的库,头文件等都拷贝到 prefix 指定的路径中。
如果可以看到该指定的路径下有 4 个文件夹:/bin、/etc、/lib、/include,则表示安装完成。

6.修改 ts.conf 内容
为了在移植开发板的时候,可以制定输入模块,需要修改 ts.conf 文件的内容。
进入安装目录下的/etc/文件夹,修改 ts.conf 文件的内容。

$ vi ts.conf

找到#module_raw input 那一行,去掉注释#。

7.移植到开发板

将安装路径下的 tslib 整个文件夹,下载到开发板上。

8.设置开发板环境

在 /etc/profile文件的末尾添加上如下条目:

export TSLIB_ROOT=/usr/local/tslib                /*  指定 tslib 目录路径  */
export TSLIB_TSDEVICE=/dev/input/event0              /*  指定触摸屏设备  */
export TSLIB_CALIBFILE=/etc/pointercal              /*  指定校准文件的存放位置*/
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf          /*  指定 tslib 配置文件的路径*/
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts            /*  指定 tslib 插件文件的路径*/
export TSLIB_FBDEVICE=/dev/fb0                /*  指定帧缓冲设备  */
export QWS_MOUSE_PROTO=/dev/input/event0            /*  指定鼠标设备  */
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib    /*  添加 tslib 库  */

其中 TSLIB_ROOT 更改为自己实际存放的 tslib 的绝对路径。
TSLIB_TSDEVICE 和 QWS_MOUSE_PROTO 这两项需要查看自己的开发板触摸屏设备对应/dev/input/下的文件。

9.执行测试命令

重新启动开发板,使系统重新读取/etc/profile 的环境变量,进入 tslib/bin 目录,执行如下命令:

# cd /usr/local/tslib/bin
# ./ts_calibrate


阅读(1078) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~