基于tiny210的四线触摸屏驱动修改(三)

对文件系统的配置比较麻烦,主要是对触摸屏的校准问题,也就是如何获取/etc/pointercal的问题。

关于tslib的交叉编译我就不多讲了,网上很多。我就不多讲了,我们要采用我们自己交叉编译的tslib来进行校准,但又不能删除了文件系统本身自带的校准程序。因为我采用了以下方法实现。

修改/etc/ts.conf如下:

module_raw input

module pthres pmin=1

module variance delta=30

module dejitter delta=100

module linear

先将文件系统自带的校准程序包括可执行程序以及lib库拷贝出来,因为后面我们还要再拷贝回来。然后我们将我们交叉编译好的tslib校准程序拷贝到文件系统进行屏幕的校准。

我把我的程序拷贝到了文件系统自带的校准程序位置。

修改/etc/profile文件,添加:

export TSLIB_TSDEVICE=/dev/input/event0

export TSLIB_CONFFILE=/etc/ts.conf

export TSLIB_PLUGINDIR=/usr/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_FBDEVICE=/dev/fb0

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

因为在开机启动的时候要调用/bin/qtopia来启动qt,该程序也使用了校准程序的相关参数,因为我们要对其进行修改,如下:

#!/bin/sh

export TSLIB_TSDEVICE=/dev/input/event0

export TSLIB_CONFFILE=/etc/ts.conf

export TSLIB_PLUGINDIR=/usr/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_FBDEVICE=/dev/fb0

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/video3

if [ -c ${TSLIB_TSDEVICE} ]; then

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

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

                rm /etc/pointercal

        fi

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

                grep -Ei "\" /proc/cmdline >/dev/null && {

                        echo "-27 13757 -2071768 -9105 -32 34531248 65536 800 480" \

                                        >/etc/pointercal

                        sync

                }

        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

如果要使用qt4的系统,需要在/etc/init.d/rcS文件修改/bin/qtopia为/bin/qtopia4,并修改/bin/qtopia4的代码如下:

#!/bin/sh

export TSLIB_TSDEVICE=/dev/input/event0

export TSLIB_CONFFILE=/etc/ts.conf

export TSLIB_PLUGINDIR=/usr/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal

export QTDIR=/opt/Qtopia4.4.3

export QPEDIR=/opt/Qtopia4.4.3

export PATH=$QTDIR/bin:$PATH

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

if [ -c ${TSLIB_TSDEVICE} ]; then

        export QWS_MOUSE_PROTO="Tslib:${TSLIB_TSDEVICE}"

        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 QWS_DISPLAY="Transformed:mmWidth66:mmHeight114:Rot90:0"

FB_SIZE=$(cat /sys/class/graphics/fb0/virtual_size)

case "$FB_SIZE" in

800,480)

export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"

;;

480,272)

export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"

;;

320,240)

export QWS_DISPLAY="LinuxFb:mmWidth70:mmHeight52:1"

;;

*)

export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"

;;

esac

export LANG="en_US"

export HOME=/root/Qtopia4Home

if [ ! -e $HOME ]; then mkdir -p $HOME; fi

if [ ! -e /usr/share ]; then mkdir /usr/share; fi

if [ ! -e /usr/share/zoneinfo ]; then ln -s /opt/Qtopia/etc/zoneinfo /usr/share/; fi

if [ ! -e $HOME/Settings/Trolltech/qpe.conf ]; then

    mkdir -p $HOME/Settings/Trolltech/

    cp $QPEDIR/etc/default/Trolltech/qpe.conf $HOME/Settings/Trolltech/qpe.conf -f

fi

export QTOPIA_PHONE_DUMMY=1

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

修改完成后,如果系统中有/etc/pointercal,将其删除,重启系统后会进入校准界面要先进行校准。校准成功后,将文件系统自带的校准程序拷贝回去即可。



你可能感兴趣的:(Linux驱动开发)