Qt学习之路(一)——移植tslib库到开发板

一、下载tslib源码:
这里的安装包是已经解压的直接
cd tslib
在这之前需要安装软件:如 automake、 libtool、autoconf(或autoconf2.13)。
否则会出现一些问题:如:
autoreconf :command not found
erro:  possibly undefined macro: AC_DISABLE_STATI...
一些未定义的错误。
如果还出现了以外的问题大家只能百度了,或者把问题发我也可以,一起探讨一下。
下面执行命令:
. /configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes CC=/opt/xtools/arm920t/bin/arm-linux-gcc

解释一下:
--prefix=/usr/local/tslib/  指定tslib的安装路径
ac_cv_func_malloc_0_nonnull=yes  //在tslib中可能会用到malloc,所以让它执行


然后在执行
make && make install
然后在安装目录下tslib会看到生成的五个文件

将图中bin etc include lib 四个文件打包成,我命名为tslib.tar.gz
然后将压缩包下载到开发板app目录下。
cd /apps/
tftp -gr tslib.tar.gz 192.168.1.20     //下载到开发板上。
下一步在profile文件中添加环境变量
vi /etc/profile
export TSLIB_ROOT=/apps/tslib           // (解压出四个文件夹所在的目录)
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf     // (tslib模块配置文件)
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/pointercal     //  (告诉QTOPIA,pointercal文件在哪里)
export TSLIB_TSDEVICE=/dev/input/event1      //  (触摸屏设备节点文件)(因为每个设备的功能不同,所以选择的设备不同,我这里的触摸屏设备是event1)
export TSLIB_CONSOLEDEVICE=none      // (tslib运行需要的控制台,这里是LCD屏幕,设定的控制台设备为none,默认为/dev/tty)
export TSLIB_FBDEVICE=/dev/fb0     //  (framebuffer设备文件)
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts    // (tslib插件库目录)

export LD_LIBRARY_PATH=/lib:/usr/lib:/apps/tslib/lib    // (设置你tslib下lib的路径,让系统能够找到)
然后在ts.conf文件中修改并添加代码(如果源文件有就不用添加了)
#module_raw input    将这里的#号去掉,然后将代码紧靠左边,前面什么都不能有,否则会出错
module_raw input

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

添加:
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
接下来运行程序校检
进入到/apps/tslib/bin下 ( (这是我的目录,你们看着自己的目录来)
执行./ts_calibrate(建议还是重新赋予其执行权限比较好,因为可能在移动的时候,文件有些变动)
然后出现了如图错误:

这是因为我在linux内核文件中缺少对触屏驱动的支持,所以需要对其做出修改:


修改完毕之后重新烧录内核,之后就可以了。
切换到bin目录下
cd /apps/tslib/bin/
执行校准文件
/ts_calibrate

但是这里的校准并不是很精准,随便点击屏幕,光标仍然显示校准成功。(后面有时间分析)
程序中,触摸屏设备 TSLIB_TSDEVICE 校准文件 TSLIB_CALIBFILE 都是从环境变量中获取的,在配置tslib库中应该指定。 TSLIB_TSDEVICE 一般是/dev/input/event0文件,这个跟触屏设备有关,可以用cat /proc/bus/input/devices命令查看确认,或者直接在终端用cat /dev/input/event0命令,然后点击触摸屏,会有数据打印出。 TSLIB_TSCALIBFILE 一般是/etc/pointercal文件,文件中记录了计算后的校准值。通过ts_open()、ts_config()函数打开和初始化触摸屏设备后,在get_sample()函数中通过put_cross()函数显示光标,然后通过getxy()函数等待用户点击触屏上的光标,获取触点数据,然后存在cal结构体中。获取完5个校准点(左上、右上、右下、左下、中间)数据后,通过perform_calibration()进行计算,把校准值写入到/etc/pointercal文件中。  
再次校准前,需要把pointercal文件删掉,否则它的值仍然是错误的。
后来校准过后,屏幕采集数据正确后,测试效果正确
执行
./ts_rest
如图:

测试如图(画得丑,随便看看.haha)






猜你喜欢

转载自blog.csdn.net/buhuiguowang/article/details/79997443
今日推荐