基于ARMEasy6410的TSLIB1.4的移植

硬件平台:ARMEasy6410开发板

操作系统:Linux

版    本:TSLIB1.4

第一步:在网上下载TSLIB1.4的版本源代码,推荐下载地址:

http://armembed.5d6d.com/ 

【嵌入式交流网/ARM开发工具DIY/TSLIB1.3 & TSLIB1.4】

第二步:安装tslib-1.4.tar.gz

1. 解压tslib-1.4.tar.gz:

tar zxvf tslib-1.4.tar.gz

2. 在TSLIB1.4下:

./autogen.sh

这时会生成configure配置文件

3. 配置TSLIB1.4的编译环境:

./configure --prefix=/usr/local/lib/ --host=arm-none-linux-gnueabi ac_cv_func_malloc_0_nonnull=yes

4. make

5. make install

这时,在/usr/local目录下将会生成lib目录,目录下生成有etc,include,bin,lib四个文件夹。

6. 打包生成的TSLIB文件:

cd /usr/local/lib

tar zcvf tslib.tgz etc include bin lib

7. 将打包好的tslib.tgz拷到开发板文件系统的/usr/local目录,解压该文件

8. 编辑/usr/local/etc下的ts.conf文件,编译内容如下:

module_raw input 

module pthres pmin=1 

module variance delta=30 

module dejitter delta=10000

module linear 

注意,确保module_raw前面没有空格,否则会弹出Segmentation fault的错误。

9. 编辑/etc/profile文件,在后面添加如下环境变量:

export TSLIB_ROOT=/usr/local

export LD_LIBRARY_PATH=/usr/local/lib #指定tslib

export TSLIB_TSDEVICE=/dev/input/event0 #指定触摸屏设备节点为event0.在进入文件系统后可以在/dev下查到有input文件夹,里面有event0这个文件。

export TSLIB_CONFFILE=/usr/local/etc/ts.conf #指定配置文件为ts.conf

export TSLIB_PLUGINDIR=/usr/local/lib/ts #指定模块文件

export TSLIB_CONSOLEDEVICE=none #控制台设为none

export TSLIB_CALIBFILE=/etc/pointercal #指定触摸屏校准文件pointercal的存放位置

export TSLIB_FBDEVICE=/dev/fb0 #指定帧缓存设备节点为fb0

注意:TSLIB_TSDEVICE根据不同板子这里设置可能会有差异,具体在开发板进入文件系统后查询dev下的文件,通常在input下会有触摸屏的驱动程序文件。我这里是event0,因此对应设备节点填/dev/input/event0.

10. 测试TSLIB

cd /usr/local/bin

./ts_calibrate

./ts_test

 

在调试过程中遇到了很多问题,如出现没有这个目录的错误提示,通常为TSLIB_TSDEVICE路径没有设置正确。出现Segmentation fault的错误,通常为ts.conf中格式不对,如前面多加了空格等。值得注意的是,如果在/etc目录下存在pointercal这个校准文件,如果执行./ts_calibrate或是./ts_test,也会出现这个错误。解决办法:将/etc下的校准文件pointercal删掉即可。

另外,还遇到一个特别奇怪的问题,执行./ts_calibrate和./ts_test都正常,但是就是进入QT后无法正常工作,发现/etc下的pointercal文件为0字节,手动执行./ts_calibrate校准后,pointercal文件确实正常了,但是没有立即生效。重启开发板,发现/etc下的pointercal文件又变为0字节了。原来在文件系统的脚本中也要做修改。在ARMEasy6410开发平台上需要修改rootfs_qtopia_qt4/bin下的qt4和qtopia两个文件,qt4修改后脚本指令如下:

#!/bin/sh

 

if [ -e /etc/ARMEasy6410-ts-input.conf ] ; then

. /etc/ARMEasy6410-ts-input.conf

fi

 

true ${TSLIB_TSDEVICE:=/dev/input/event0}

 

TSLIB_CONFFILE=/usr/local/etc/ts.conf

 

export TSLIB_TSDEVICE

export TSLIB_CONFFILE

 

export TSLIB_PLUGINDIR=/usr/local/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal

 

export QWS_DISPLAY=:1

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

export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/bin

 

if [ -c /dev/input/event0 ]; then

export QWS_MOUSE_PROTO="Tslib"

if [ ! -s /etc/pointercal ] ; then

rm /etc/pointercal

/usr/local/bin/ts_calibrate

fi

else

export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice"

fi

 

export QWS_KEYBOARD=TTY:/dev/tty1

 

export HOME=/root

 

#cd /usr/local/Trolltech/QtEmbedded-4.6.3-arm/demos/embedded/fluidlauncher

#lqm changed for QT4.7.

cd /usr/local/Trolltech/QtEmbedded-4.7.0-arm/demos/embedded/fluidlauncher

./fluidlauncher -qws

hotplug

qtopia文件修改后的脚本文件如下:

#!/bin/sh

 

if [ -e /etc/ARMEasy6410-ts-input.conf ] ; then

. /etc/ARMEasy6410-ts-input.conf

fi

 

true ${TSLIB_TSDEVICE:=/dev/input/event0}

 

TSLIB_CONFFILE=/usr/local/etc/ts.conf

 

export TSLIB_TSDEVICE

export TSLIB_CONFFILE

 

export TSLIB_PLUGINDIR=/usr/local/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal

export QTDIR=/opt/Qtopia

export QPEDIR=/opt/Qtopia

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH

export CAMERA_DEVICE=/dev/video2

 

 

if [ -c /dev/input/event0 ]; then

export QWS_MOUSE_PROTO="TPanel"

if [ -e /etc/pointercal -a ! -s /etc/pointercal ] ; then

rm /etc/pointercal

fi

else

export QWS_MOUSE_PROTO="USB:/dev/input/mice"

>/etc/pointercal

fi

 

export QWS_KEYBOARD=TTY:/dev/tty1

export KDEDIR=/opt/kde

 

export HOME=/root

 

exec $QPEDIR/bin/qpe 1>/dev/null 2>/dev/null

在rootfs_qtopia_qt4/etc下的ARMEasy6410-ts-input.conf文件内容修改如下:

TSLIB_TSDEVICE=/dev/input/event0

    整个TSLIB的移植,花了差不多两个星期的时间。在这里留下记录供后来者分享,少走些弯路。另外,TSLIB默认的校屏顺序是左上,右上,右下,左下,中间。这一顺序和WINCE下是截然相反的。这里可以通过修改TSLIB源代码将顺序反过来。校屏的十字架,上面的提示文字等都可以自定义。ARMEasy6410 出货默认和WINCE的校屏顺序一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值