移植tslib1.4到友善之臂的mini2440, 终于搞定了,真是麻烦. tslib

来源:互联网 发布:windows安装光盘 编辑:程序博客网 时间:2024/05/29 07:28

移植真是啰嗦,大部分是参考网上的:

 

1、解压tslib1.4.

2、编译过程:

a、./autogen.sh

b、echo ac_cv_func_malloc_0_nonnull=yes>arm-linux.cache

c、./configure --host=arm-linux --prefix=/root/Desktop/mini2440/tslibinstall
--cache-file=arm-linux.cache --enable-inputapi=no

d、make

编译的时候遇到undefined reference to rpl_malloc这个错误,参考网上的:.在config.h里加上#undef rpl_malloc

e、make install

安装到/root/Desktop/mini2440/tslibinstall,拷贝到开发板时也要同样的目录!!!!!

f、把install的东西拷贝到开发板上。

 

3、设置环境变量

export TSLIB_ROOT=/root/Desktop/mini2440/tslibinstall
export TSLIB_TSDEVICE=/dev/input/event0 #(你的开发板dev下的触摸屏设备节点文件)

export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

 

4、修改ts.conf文件,应该在$TSLIB_ROOT/etc/ts.conf

把module_raw input的#去掉。默认是全部关闭的,导致后来会出现"No raw modules loaded",吐血!!

 

5、现在可以运行tslibinstall/bin下的可执行文件了。

如果有错误,最好跟进去,写几个printf。

 

 

 

这是另一个哥们写的,差不多:

 

http://blog.chinaunix.net/u3/104564/showart_2094901.html

移植触摸屏库tslib

1. 下载相关工具与最新的tslib源码包:
# sudo apt-get install autoconf
# sudo apt-get install automake
# sudo apt-get install libtool

在 
http://blog.chinaunix.net/u2/75270/showart_1793535.html 有tslib 1.4的下载,下载后解压并进入tslib目录。

2. 运行autogen.sh脚本:
# ./autogen.sh

3. 配置:
# ./configure --host=arm-linux --prefix=/opt/tslib

4. 编译:
# make

可能报错 “ts_test.c:(.text+0x200): undefined reference to `rpl_malloc'”
原因是在 tslib-1.4/config.h 中有一行定义 “#define malloc rpl_malloc”
直接注释掉
这行定义即可,除非你自己实现了一个 malloc 版本。

5. 重新编译:
# make

6. 安装:
# make install

安装后, 主机 /opt/tslib 存在如下目录:
bin  etc  include  lib

拷贝主机 /opt/tslib 目录至开发板 /opt/ 目录。

7. 在开发板运行
触摸屏校正
(1) 在运行触摸屏校正之前,需要设置一些环境变量,以下是我的开发板的 /etc/profile 文件的内容:

# Ash profile 
# vim: syntax=sh

# No core files by default
ulimit --c 0 > /dev/null 2>&1

USER="`id -un`"
LOGNAME=$USER
PS1='[/u@/h /W]/# '
PATH=$PATH

HOSTNAME=`/bin/hostname`

export USER LOGNAME PS1 PATH

export TSLIB_ROOT=/opt/tslib
export TSLIB_TSDEVICE=/dev/event0
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
export TS_INFO_FILE=/sys/class/input/input0/uevent

export LD_LIBRARY_PATH=lib:/usr/lib:$TSLIB_ROOT/lib:$LD_LIBRARY_PATH


(2) 运行触摸屏校正:
# cd /opt/tslib/bin
# ./ts_calibrate
      报错 “No raw modules loaded.”, 原因是缺省时,/opt/tslib/etc/ts.conf 中所有的 raw module 都注释掉了,打开第一项 “module_raw input” 即可 。


(3) 重新运行,应该成功;点击屏幕上出现的需要校正的“+”,校正结果存放在 
/etc/pointercal 文件中。

 

//////////////////////////////////一些错误解析、、、、、、、、、、、、、、、、、、、、、、、、、、、、

出现这个错误  Couldnt load module input   No raw modules loaded  tsconfig: Success     第一行告诉tslib从linux的输入设备读取数据,需要用到input这个模块,也就是plugin目录下的input.so文件,  所以你的TSLIB_PLUGINDIR一定要配置正确,让tslib能够找到模块文件。  其他参数分别控制触摸点的连续下压、变化宽度、轨迹变化和线性校准。   也是要把其对应的需要的几个库文件复制到/tslib/plugins中     第二行导致"No raw modules loaded."的原因有两个:  注意:一是你的ts.conf中没有指定module_raw,自带的ts.conf的所有module_raw都被注释掉了,  # Uncomment if you wish to use the linux input layer event interface  # module_raw input     # Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d  # module_raw collie     # Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860  # module_raw corgi     # Uncomment if you're using a device with a UCB1200/1300/1400 TS interface  # module_raw ucb1x00     # Uncomment if you're using an HP iPaq h3600 or similar  #module_raw h3600     # Uncomment if you're using a Hitachi Webpad  # module_raw mk712     # Uncomment if you're using an IBM Arctic II  # module_raw arctic2      你应该打开至少一个module_raw选项,有人就选择了input,去掉了它的注释  得到module_raw input     另一个原因就是你没有正确配置TSLIB_PLUGINDIR,tslib从你指定的目录中没有找到plugin需要的模块文件,  请检查你的路径和文件。