最近想移植一下tslib,来用于校准触摸屏,参照一些大侠的经验,终于移植成功了,所以想赶快记录下来。
环境:
宿主机:
系统: redhat9
交叉编译工具: cross-3.3.2
运行机:
fs2410
内核:linux-2.6.8.1
tslib-1.3
解压tslib-1.3.tar.bz2,
# tar jxvf tslib-1.3.tar.bz2
# cd tslib.1.3
指定交叉编译器:
#export CC=/usr/local/arm/3.3.2/bin/arm-linux-gcc
生成configure文件
#./autogen.sh
#export PATH=/usr/local/arm/3.3.2/bin:$PATH
#echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
#./configure --host=arm-linux --prefix=$PWD/build --cache-file=arm-linux.cache --enable-inputapi=no
注意,上面中的 --prefix 选项,这个选项是在tslib-1.3的目录下生成一个build目录,把安装的文件拷贝到这个目录下,这个build下的文件很重要,以后的移植,就跟这个文件夹密切相关。
# vi src/ts_read_raw.c
修改内容,把 defaulttseventtype变量改为自己的触摸屏程序数据结构,
- char *defaulttseventtype="UCB1x00";
+ char *defaulttseventtype="H3600";
保存退出,
make
make install
这样应该就可以在 tslib-1.3目录下生成一个 build目录,用命令cp 把build目录下的整个文件拷贝到目标机的文件系统中,在目标机的文件系统中先创建一个目录,
# mkdir ts
把build下的所有文件拷贝到这个 ts 目录下,更改ts的访问属性为 777 ,
# chmod 777 ts
重新压缩成cramfs,烧写运行,
下面的命令是在目标机上运行的:
# export TSLIB_FBDEVICE=/dev/fb0
# export TSLIB_TSDEVICE=/dev/touchscreen/0
# export TSLIB_CALIBFILE=/etc/pointercal
# export TSLIB_CONFFILE=/ts/etc/ts.conf
# export TSLIB_PLUGINDIR=/ts/share/ts/plugins
# export LD_LIBRARY_PATH=/ts/lib
# cd /ts/bin
# ./ts_calibrate
可以测试5点校准了。