`
l241002209
  • 浏览: 88491 次
文章分类
社区版块
存档分类
最新评论

Ubuntu下交叉编译tslib-1.4记录

 
阅读更多

转载:http://blog.csdn.net/yihui8/article/details/5753270

Ubuntu下交叉编译tslib-1.4记录

782人阅读 评论(1)收藏 举报
在移植好触摸屏的驱动后,一般都要移植一个tslib来配合,在用户层对触摸屏的数据进行滤波和矫正,同时也可以给应用程序一个统一的接口,很多GUI都支持tslib的接口。对于tslib的基础知识和移植,网上google一下就是一大把,在这里我提供一些较好的网页,这些已是我此次移植的参考。

http://blog.chinaunix.net/u1/33412/showart_282396.html
http://blog.chinaunix.net/u2/61322/showart.php?id=1357736
http://www.mangbar.com/document/8a80809d19bd3a240119ccd45b90399e
http://www.shengfang.org/blog/p/20070912tslibdownload.php
http://www.directfb.com.cn/viewthread.php?tid=388&extra=page%3D1
http://blog.csdn.net/mzl626/archive/2008/04/18/2304169.aspx
http://ccoolloorr.blogspot.com/2008/06/tslib-13-touch-screen-lib.html
http://weibing.blogbus.com/logs/4723645.html

下面简要地介绍一下我的交叉编译过程:
(1)下载最新版本的tslib,目前最新的是1.4版,下载方法是通过CVS下载:

$ mkdir-m777 cvs
$ cd cvs
$ export CVSROOT=:pserver:anoncvs@cvs.handhelds.org:/cvs
$ cvs login
Logging in to :pserver:anoncvs@cvs.handhelds.org:2401/cvs
CVS password: anoncvs
cvs login: CVS password file /home/daiq/.cvspass doesnot exist - creating anew file
$ cvs co apps/tslib

这样会在你的$PWD/cvs下建立一个apps文件夹,其中的tslib就是我们下载下来的源码。
(2)产生configure文件。
这里要先安装一些工具,我使用ubuntu9.10就不用安装,但是还是用新立得安装:autoconf、automake和 libtool等软件包(新立得会自动添加其他需要的软件包)。

sudo apt-get install m4 autoconf automake libtool

先设置好交叉编译环境:

$ export PATH=$PATH:/work/cross/toolchain/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin
$ export CC=arm-softfloat-linux-gnu-gcc
$ export CXX=arm-softfloat-linux-gnu-g++

执行./autogen.sh

daiq@daiq-desktop:/work/cvs/apps/tslib$./autogen.sh
Libtoolize...libtoolize: putting auxiliary files in `.'.
libtoolize: copying file `./ltmain.sh'

libtoolize: You should add the contents of the following files to `aclocal.m4':
libtoolize: `/usr/share/aclocal/libtool.m4'

libtoolize: `/usr/share/aclocal/ltoptions.m4'
libtoolize: `/usr/share/aclocal/ltversion.m4'

libtoolize: `/usr/share/aclocal/ltsugar.m4'
libtoolize: `/usr/share/aclocal/lt~obsolete.m4'

libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize: Consider adding `-I m4'
to ACLOCAL_AMFLAGS in Makefile.am.
Done.
Aclocal...Done.
Autoheader...Done.
Automake...configure.ac:21: installing `./config.guess'
configure.ac:21: installing `./config.sub'

configure.ac:7: installing `./install-sh'
configure.ac:7: installing `./missing'

plugins/Makefile.am: installing `./depcomp

Done.
Autoconf...Done.
Now you can do ./configure, make, make install.


(3)产生缓冲文件和配置。

直接运行configure 脚本相关的代码,会出现交叉编译错误: undefined reference to `rpl_malloc',这是由ac_cv_func_malloc_0_nonnull检查引起的,为了不让它检查,产生一个cache文件daiq_tslib.cache,欺骗configure再执行:

$ export TSLIB_ROOT=/work/fs/rootfsln/usr/tslib

$ echo "ac_cv_func_malloc_0_nonnull=yes" >daiq_tslib.cache
$ ./configure--host=arm-softfloat-linux-gnu--prefix=${TSLIB_ROOT}
--target=arm-softfloat-linux-gnu--enable-h3600--disable-arctic2--disable-mk712--disable-collie--disable-ucb1x00--disable-linear--cache-file=daiq_tslib.cache--enable-input=no

这里由于驱动是使用input子系统,所以很多都可以禁用,那些是针对别的特殊输出格式的驱动的。但是--enable-inputapi=no或者 --enable-inputapi=no一定要加(是哪一个要查看configure文件,上面的选项也是要根据自己下载下来后产生的configure文件作参考)

执行./configure脚本错误时需执行,才能再次执行./configure

$ rm daiq_tslib.cache
$ echo "ac_cv_func_malloc_0_nonnull=yes" >daiq_tslib.cache

(4)以上都顺利通过的话就可以make、make install了。

用以上的配置得到的编译好的代码在${TSLIB_ROOT}目录下。这由--prefix=决定,可以通过预先设定变量TSLIB_ROOT的值来改变

之后就是将代码拷贝到根文件系统中(注意tslib依赖的动态链接库文件,记得要拷贝到根文件系统的/lib里),并修改/etc/porfile就好了。这些在我提供的网页里都有,我就不在这重复了,如果像我一样设置好开发板的根目录路径存放tslib(/work/fs/rootfsln/usr/tslib)就不用拷贝了。

如果忘了拷贝动态库,就会出现以下提示:

errorwhile loading shared libraries: libdl.so.2: cannotopen shared object file: No such file or directory

事实上,根目录、tslib和qt的交叉编译器应该一致才对,这样动态库就不会有冲突问题。

(5)$TSLIB_ROOT/etc/ts.conf配置

module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear

注意:如果使用了带滤波的触摸屏驱动,在ts.conf文件中可以屏蔽

#module pthres pmin=1
#module variance delta=30
#module dejitter delta=100

这三行,因使用内核滤波也可以保障稳定。但是再加上tslib的滤波也可以,效果更好。

(6)在开发板的/work/fs/rootfsln/etc/profile文件里添加运行tslib的环境变量(一定要放到/etc/profile,放到/etc/init.d/rcS里就没有作用,原因是export只能在当前shell和它的子shell有用,不能影响登录的shell)

#Set TSLIB

echo "Set ENV for tslib......"
export QWS_MOUSE_PROTO=TPanel:/dev/event0
export TSLIB_ROOT=/usr/tslib
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_CALIBFILE=$TSLIB_ROOT/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

(这句我注释掉的原因是:有一种说法是使用 LD_LIBRARY_PATH这样设置不安全,我的做法是把路径添加到/work/fs/rootfsln/etc/ld.so.conf文件中,然后执行ldconfig命令,这样就可以了。ldconfig在你的交叉编译工具里就有)

下面就Tslib的环境变量、配置文件等进行简要的介绍。

1. 环境变量

为了实现Tslib的正确运行,需要对如下的Tslib的环境变量进行配置:

TSLIB_TSDEVICE//触摸屏设备文件名。
Default (no inputapi):/dev/touchscreen/ucb1x00
Default (inputapi):/dev/input/event0

TSLIB_CALIBFILE
//校准的数据文件,由ts_calibrate校准程序生成。
Default: ${sysconfdir}/pointercal


TSLIB_CONFFILE
//配置文件名。
Default: ${sysconfdir}/ts.conf

TSLIB_PLUGINDIR
//插件目录
Default: ${datadir}/plugins

TSLIB_CONSOLEDEVICE
//控制台设备文件名
Default: /dev/tty

TSLIB_FBDEVICE
//设备名
Default:/dev/fb0

以上环境变量在实际开发中的实际配置可以根据实际情况决定。

这样大概就差不多了,运行./ts_calibrate如果还提示ts_open: No such file or directory,用env命令看一下,当前系统是否有你设置的tslib环境变量,
没有的话会提示这个错误的,我在第一次设置/etc/profile文件就没有好使,修改了一下,重启系统就好用了。

(7)运行校准程序校准屏幕(5点校准)

cd $T_ROOT/tests

./ts_calibrate //板子上陆续出现5个光标,点击完毕后会生成校准文件pintercal存放在$T_ROOT/etc/下面

********************************************

ts_calibrate是一个应用程序,在屏幕上画几个按钮,将用户点击后从ts驱动获得的数据和

屏上的坐标位置通过一套算法来获得校准数据写到一个校准文件里。

******************************************

(7)可能遇到的错误分析:

运行./ts_test

No raw modules loaded.
ts_config: No such file or directory

ts.conf文件中应该有一行
module_raw input

/nand1/tslib-1.4/lib/ts目录下应该有个文件叫
input.so

在测试的时候,运行./ts_calibrate又出现了令人十分之郁闷的错误:

ts_config: Success

追查后应该是在打开ts_config中出现了错误(居然报Success,无欲至极)

在网上发现多是这个错误(这是1.4版本的错):

Couldnt load module input

No raw modules loaded

tsconfig: Success

我没有上面那两行的错误,不过应该是一样的错误原因

那么错误就定位在 ts_config 里。并且可以进一步确定是在加载插件模块时出的错

查询了ts_load_module.c这个文件发现网上和自己的不太一样(网上公布的源码是1.4或者是0.1.1的吧)我的是1.3的

我下载了tslib-0.1.1的后重新实验 就发现错误的是这样子的(第一个错误是由ts.conf所决定的)

Couldnt load module pthres

No raw modules loaded

tsconfig: Success

阅读了tslib 的原代码,知道了cstdlib 库里的一个函数: getenv

是用来得到指定系统环境变量的值。是为了测试 tslib 是否得到正确的环境变量。

其环境变量默认的值在readme中有注明。

加载插件模块时出出错分析:

ts_calibrate会打开ts_config

ts_config函数里首先会读取 tslib 配置文件(ts.conf,由 TSLIB_CONFFILE环境变量指定,在tslib/etc下面),

然后根据这个文件逐个加载插件库,1.3版本的ts.conf内容为:

module mousebuts

moudle variance xlimit=50 ylimit=50 pthreshold=3

moudle dejitter xdelta=1 ydelta=1 pthreshold=3

moudle linear

ts_config又会调用ts_load_module加载库。从这个函数里,程序先是得到配置文件中指定加载的模块名,

然后根据模块名构造了一个 so 文件文件名,然后调用了系统函数 dlopen 加载库!

Linux 下的加载dlopen 类似于 Windows 下动态链接库的函数:dlopen

错误就应该出在构造的库文件名是错误的---其指定的文件不存在

---从而导致 dlopen无法加载。所以才提示找不到文件或目录!

那么这样就是应该把需要的mousebuts.so variance.so dejitter.so linear.so应该复制到/tslib/plugins中(上面修正后作了这一步,就可以拉,就不会出现错误拉)

以上文档是在参考很多网上的帖子并经过实践后写的,感谢这些帖子的作者和帮助过我的人,谢谢了!

[~#]./ts_calibrate.sh
此时会加载tslib中的插件模块input.so,且会抛出Segement fault的错误。仔细分析tslib的源码之后,得知在加载

input.so时,ts_attach.c中__ts_attach_raw()函数中使用NULL指针,导致Segement fault产生。经过修改过,重新

编译tslib,再运行ts_calibrate.sh,一切正常。ts_attach.c中__ts_attach_raw()中的修改如下:
#if 0
for(next = ts->list, prev=next; next != NULL && next != prev_list; next = prev->next, prev =

next)
{
DEBUG("LIUHAO:: %s %s:count=%d prev_list=%x prev=%x next=%x prev->next=%x/n",

__FILE__, __FUNCTION__, count++, prev_list, prev, next, prev->next);
;
}
#else
for(next = ts->list, prev=next; next != NULL && next != prev_list;)
{
DEBUG("LIUHAO:: %s %s:count=%d prev_list=%x prev=%x next=%x prev->next=%x/n",

__FILE__, __FUNCTION__, count++, prev_list, prev, next, prev->next);
next = prev->next;
if(next == NULL)
break;
else
prev = next;
}
#endif
至此,tslib所有工作已经完成,ts_calibrate会在~/ts-release/etc/目录下生成pointercal文件。pointercal为触

摸屏校准后生成的文件,确保QT运行时,触摸屏工作正常。


在移植好触摸屏的驱动后,一般都要移植一个tslib来配合,在用户层对触摸屏的数据进行滤波和矫正,同时也可以给应用程序一个统一的接口,很多GUI都支持tslib的接口。对于tslib的基础知识和移植,网上google一下就是一大把,在这里我提供一些较好的网页,这些已是我此次移植的参考。

http://blog.chinaunix.net/u1/33412/showart_282396.html
http://blog.chinaunix.net/u2/61322/showart.php?id=1357736
http://www.mangbar.com/document/8a80809d19bd3a240119ccd45b90399e
http://www.shengfang.org/blog/p/20070912tslibdownload.php
http://www.directfb.com.cn/viewthread.php?tid=388&extra=page%3D1
http://blog.csdn.net/mzl626/archive/2008/04/18/2304169.aspx
http://ccoolloorr.blogspot.com/2008/06/tslib-13-touch-screen-lib.html
http://weibing.blogbus.com/logs/4723645.html

下面简要地介绍一下我的交叉编译过程:
(1)下载最新版本的tslib,目前最新的是1.4版,下载方法是通过CVS下载:

$ mkdir-m777 cvs
$ cd cvs
$ export CVSROOT=:pserver:anoncvs@cvs.handhelds.org:/cvs
$ cvs login
Logging in to :pserver:anoncvs@cvs.handhelds.org:2401/cvs
CVS password: anoncvs
cvs login: CVS password file /home/daiq/.cvspass doesnot exist - creating anew file
$ cvs co apps/tslib

这样会在你的$PWD/cvs下建立一个apps文件夹,其中的tslib就是我们下载下来的源码。
(2)产生configure文件。
这里要先安装一些工具,我使用ubuntu9.10就不用安装,但是还是用新立得安装:autoconf、automake和 libtool等软件包(新立得会自动添加其他需要的软件包)。

sudo apt-get install m4 autoconf automake libtool

先设置好交叉编译环境:

$ export PATH=$PATH:/work/cross/toolchain/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin
$ export CC=arm-softfloat-linux-gnu-gcc
$ export CXX=arm-softfloat-linux-gnu-g++

执行./autogen.sh

daiq@daiq-desktop:/work/cvs/apps/tslib$./autogen.sh
Libtoolize...libtoolize: putting auxiliary files in `.'.
libtoolize: copying file `./ltmain.sh'

libtoolize: You should add the contents of the following files to `aclocal.m4':
libtoolize: `/usr/share/aclocal/libtool.m4'

libtoolize: `/usr/share/aclocal/ltoptions.m4'
libtoolize: `/usr/share/aclocal/ltversion.m4'

libtoolize: `/usr/share/aclocal/ltsugar.m4'
libtoolize: `/usr/share/aclocal/lt~obsolete.m4'

libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize: Consider adding `-I m4'
to ACLOCAL_AMFLAGS in Makefile.am.
Done.
Aclocal...Done.
Autoheader...Done.
Automake...configure.ac:21: installing `./config.guess'
configure.ac:21: installing `./config.sub'

configure.ac:7: installing `./install-sh'
configure.ac:7: installing `./missing'

plugins/Makefile.am: installing `./depcomp

Done.
Autoconf...Done.
Now you can do ./configure, make, make install.


(3)产生缓冲文件和配置。

直接运行configure 脚本相关的代码,会出现交叉编译错误: undefined reference to `rpl_malloc',这是由ac_cv_func_malloc_0_nonnull检查引起的,为了不让它检查,产生一个cache文件daiq_tslib.cache,欺骗configure再执行:

$ export TSLIB_ROOT=/work/fs/rootfsln/usr/tslib

$ echo "ac_cv_func_malloc_0_nonnull=yes" >daiq_tslib.cache
$ ./configure--host=arm-softfloat-linux-gnu--prefix=${TSLIB_ROOT}
--target=arm-softfloat-linux-gnu--enable-h3600--disable-arctic2--disable-mk712--disable-collie--disable-ucb1x00--disable-linear--cache-file=daiq_tslib.cache--enable-input=no

这里由于驱动是使用input子系统,所以很多都可以禁用,那些是针对别的特殊输出格式的驱动的。但是--enable-inputapi=no或者 --enable-inputapi=no一定要加(是哪一个要查看configure文件,上面的选项也是要根据自己下载下来后产生的configure文件作参考)

执行./configure脚本错误时需执行,才能再次执行./configure

$ rm daiq_tslib.cache
$ echo "ac_cv_func_malloc_0_nonnull=yes" >daiq_tslib.cache

(4)以上都顺利通过的话就可以make、make install了。

用以上的配置得到的编译好的代码在${TSLIB_ROOT}目录下。这由--prefix=决定,可以通过预先设定变量TSLIB_ROOT的值来改变

之后就是将代码拷贝到根文件系统中(注意tslib依赖的动态链接库文件,记得要拷贝到根文件系统的/lib里),并修改/etc/porfile就好了。这些在我提供的网页里都有,我就不在这重复了,如果像我一样设置好开发板的根目录路径存放tslib(/work/fs/rootfsln/usr/tslib)就不用拷贝了。

如果忘了拷贝动态库,就会出现以下提示:

errorwhile loading shared libraries: libdl.so.2: cannotopen shared object file: No such file or directory

事实上,根目录、tslib和qt的交叉编译器应该一致才对,这样动态库就不会有冲突问题。

(5)$TSLIB_ROOT/etc/ts.conf配置

module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear

注意:如果使用了带滤波的触摸屏驱动,在ts.conf文件中可以屏蔽

#module pthres pmin=1
#module variance delta=30
#module dejitter delta=100

这三行,因使用内核滤波也可以保障稳定。但是再加上tslib的滤波也可以,效果更好。

(6)在开发板的/work/fs/rootfsln/etc/profile文件里添加运行tslib的环境变量(一定要放到/etc/profile,放到/etc/init.d/rcS里就没有作用,原因是export只能在当前shell和它的子shell有用,不能影响登录的shell)

#Set TSLIB

echo "Set ENV for tslib......"
export QWS_MOUSE_PROTO=TPanel:/dev/event0
export TSLIB_ROOT=/usr/tslib
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_CALIBFILE=$TSLIB_ROOT/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

(这句我注释掉的原因是:有一种说法是使用 LD_LIBRARY_PATH这样设置不安全,我的做法是把路径添加到/work/fs/rootfsln/etc/ld.so.conf文件中,然后执行ldconfig命令,这样就可以了。ldconfig在你的交叉编译工具里就有)

下面就Tslib的环境变量、配置文件等进行简要的介绍。

1. 环境变量

为了实现Tslib的正确运行,需要对如下的Tslib的环境变量进行配置:

TSLIB_TSDEVICE//触摸屏设备文件名。
Default (no inputapi):/dev/touchscreen/ucb1x00
Default (inputapi):/dev/input/event0

TSLIB_CALIBFILE
//校准的数据文件,由ts_calibrate校准程序生成。
Default: ${sysconfdir}/pointercal


TSLIB_CONFFILE
//配置文件名。
Default: ${sysconfdir}/ts.conf

TSLIB_PLUGINDIR
//插件目录
Default: ${datadir}/plugins

TSLIB_CONSOLEDEVICE
//控制台设备文件名
Default: /dev/tty

TSLIB_FBDEVICE
//设备名
Default:/dev/fb0

以上环境变量在实际开发中的实际配置可以根据实际情况决定。

这样大概就差不多了,运行./ts_calibrate如果还提示ts_open: No such file or directory,用env命令看一下,当前系统是否有你设置的tslib环境变量,
没有的话会提示这个错误的,我在第一次设置/etc/profile文件就没有好使,修改了一下,重启系统就好用了。

(7)运行校准程序校准屏幕(5点校准)

cd $T_ROOT/tests

./ts_calibrate //板子上陆续出现5个光标,点击完毕后会生成校准文件pintercal存放在$T_ROOT/etc/下面

********************************************

ts_calibrate是一个应用程序,在屏幕上画几个按钮,将用户点击后从ts驱动获得的数据和

屏上的坐标位置通过一套算法来获得校准数据写到一个校准文件里。

******************************************

(7)可能遇到的错误分析:

运行./ts_test

No raw modules loaded.
ts_config: No such file or directory

ts.conf文件中应该有一行
module_raw input

/nand1/tslib-1.4/lib/ts目录下应该有个文件叫
input.so

在测试的时候,运行./ts_calibrate又出现了令人十分之郁闷的错误:

ts_config: Success

追查后应该是在打开ts_config中出现了错误(居然报Success,无欲至极)

在网上发现多是这个错误(这是1.4版本的错):

Couldnt load module input

No raw modules loaded

tsconfig: Success

我没有上面那两行的错误,不过应该是一样的错误原因

那么错误就定位在 ts_config 里。并且可以进一步确定是在加载插件模块时出的错

查询了ts_load_module.c这个文件发现网上和自己的不太一样(网上公布的源码是1.4或者是0.1.1的吧)我的是1.3的

我下载了tslib-0.1.1的后重新实验 就发现错误的是这样子的(第一个错误是由ts.conf所决定的)

Couldnt load module pthres

No raw modules loaded

tsconfig: Success

阅读了tslib 的原代码,知道了cstdlib 库里的一个函数: getenv

是用来得到指定系统环境变量的值。是为了测试 tslib 是否得到正确的环境变量。

其环境变量默认的值在readme中有注明。

加载插件模块时出出错分析:

ts_calibrate会打开ts_config

ts_config函数里首先会读取 tslib 配置文件(ts.conf,由 TSLIB_CONFFILE环境变量指定,在tslib/etc下面),

然后根据这个文件逐个加载插件库,1.3版本的ts.conf内容为:

module mousebuts

moudle variance xlimit=50 ylimit=50 pthreshold=3

moudle dejitter xdelta=1 ydelta=1 pthreshold=3

moudle linear

ts_config又会调用ts_load_module加载库。从这个函数里,程序先是得到配置文件中指定加载的模块名,

然后根据模块名构造了一个 so 文件文件名,然后调用了系统函数 dlopen 加载库!

Linux 下的加载dlopen 类似于 Windows 下动态链接库的函数:dlopen

错误就应该出在构造的库文件名是错误的---其指定的文件不存在

---从而导致 dlopen无法加载。所以才提示找不到文件或目录!

那么这样就是应该把需要的mousebuts.so variance.so dejitter.so linear.so应该复制到/tslib/plugins中(上面修正后作了这一步,就可以拉,就不会出现错误拉)

以上文档是在参考很多网上的帖子并经过实践后写的,感谢这些帖子的作者和帮助过我的人,谢谢了!

[~#]./ts_calibrate.sh
此时会加载tslib中的插件模块input.so,且会抛出Segement fault的错误。仔细分析tslib的源码之后,得知在加载

input.so时,ts_attach.c中__ts_attach_raw()函数中使用NULL指针,导致Segement fault产生。经过修改过,重新

编译tslib,再运行ts_calibrate.sh,一切正常。ts_attach.c中__ts_attach_raw()中的修改如下:
#if 0
for(next = ts->list, prev=next; next != NULL && next != prev_list; next = prev->next, prev =

next)
{
DEBUG("LIUHAO:: %s %s:count=%d prev_list=%x prev=%x next=%x prev->next=%x/n",

__FILE__, __FUNCTION__, count++, prev_list, prev, next, prev->next);
;
}
#else
for(next = ts->list, prev=next; next != NULL && next != prev_list;)
{
DEBUG("LIUHAO:: %s %s:count=%d prev_list=%x prev=%x next=%x prev->next=%x/n",

__FILE__, __FUNCTION__, count++, prev_list, prev, next, prev->next);
next = prev->next;
if(next == NULL)
break;
else
prev = next;
}
#endif
至此,tslib所有工作已经完成,ts_calibrate会在~/ts-release/etc/目录下生成pointercal文件。pointercal为触

摸屏校准后生成的文件,确保QT运行时,触摸屏工作正常。

分享到:
评论

相关推荐

    tslib-1.4安装包.7z

    tslib-1.4安装包.7z

    tslib-1.4.tar.gz

    tslib-1.4.tar.gz的下载,对应的是我发布qt5移植所对应的工具

    tslib-1.4.tar.gz-安装包

    在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一...Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口

    tslib-1.4.tar

    tslib-1.4此包真的不好找啊! 这里提供的为tslib-1.4.tar.bz2包, 此包的解压方法: shell> bzip2 -d tslib-1.4.tar.bz2 shell> tar xvf tslib-1.4.tar shell> cd tslib-1.4 即可完成.

    tslib-1.4.tar.bz2

    触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。校准等等作用

    tslib-1.4.zip

    一个触摸屏驱动

    移植tslib-1.4.doc

    移 植 tslib-1.4.doc

    Qtopia tslib-1.4

    tslib-1.4,tslib是一个开源程序,能够为触摸屏驱动获得的采样提供滤波,去抖,校准等功能

    tslib-1.4交叉编译和分析

    关于tslib1.4的交叉编译,转的一位兄弟的博客文章

    tslib-1.4的移植

    本文主要目的为编译、安装、移植tslib-1.4到fl2440开发板;并执行tslib提供的ts_calibrate生成触摸屏校准数据;建立tslib应用程序接口的调用环境(包括:库文件、头文件、校准数据、配置文件在开发环境及开发板上得...

    MiniGUI-1[1].6.10+tslib-1.4移植到s3c2410+linux2.6.33.2.doc

    MiniGUI-1[1].6.10+tslib-1.4移植到s3c2410+linux2.6.33.2.doc

    tslib-1.4_aarch64.tar.gz

    tslib_1.4 64位版本。 已经修改好,可以直接直接使用。 64位系统与32位系统的 某些变量定义占用的空间不同。

    tslib-1.4触摸屏库

    触摸屏校正,嵌入式开发移植需要的一个文件

    tslib1.4下载

    tslib1.4版本库资源,本人亲测可用,如有不足,还望指正

Global site tag (gtag.js) - Google Analytics