最近调试通了一块三星Tiny6410的4.3寸LCD触摸屏,开机后进入系统桌面环境,想接着在BBB中搭建一个Qt的嵌入式开发环境,本文主要记录tslib的移植过程。
tslib是用于在Qt的界面程序中支持对于触摸屏的操作,所以需要移植tslib库到ARM板上。
操作环境:
(1)所用开发板为Beaglebone Black A5C板,运行系统为官方Debian 7.5 20140514。
(2)tslib源码来自于git clone https://github.com/kergoth/tslib.git。
(3)PC机运行Ubuntu 12.04.
(4)交叉编译工具链来自于http://releases.linaro.org/13.04/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux.tar.xz。
注意:原来PC中我使用的交叉编译工具链是通过sudo apt-get install g++-arm-linux-gnueabihf安装的,但是编译tslib放到BBB板上运行后发现一个错误./ts_calibrate libc.so.6. version 2.15 not found, request byts_calibrate,原因是BBB上面的glibc版本为2.13,而PC中g++-arm-linux-gnueabihf依赖的glibc版本为2.15,两者不匹配。所以换成了这个linaro牌的编译器,之后运行完美!
操作步骤:
(1)在编译之前先安装辅助工具,避免出现错误,sudo apt-get install autoconf automake libtool。
(2)在~/software/QT/目录下下载tslib源码git clone https://github.com/kergoth/tslib.git。源码目录为/home/<user>/software/QT/tslib-master。
(3)进入tslib-master源码目录后运行./autogen.sh。如果出现意外可能是漏掉了步骤(1),此时应先运行./autogen-clean.sh,再来继续./autogen.sh。
(4)./configure --host=arm-linux-gnueabihf --prefix=/home/<user>/software/QT/tslib。第一个参数指定了使用我所安装的交叉编译工具。第二个参数指定了编译之后的安装目录,注意此目录一定不要和源码目录一致,否则后面安装时会出现错误。
(5)make
(6)make install。接下来会在前面--prefix=/home/<user>/software/QT/tslib指定的目录众发现bin/、etc/、lib/、include/四个子目录,这个就是最后编译得到的结果了。
(7)将bin/、etc/、lib/三个目录分别拷贝到BBB的根目录下(此处网上很多教程都是拷贝到/usr/tslib下)。注意,etc/ts.conf文件需要进行修改,否则会出现错误。将ts.conf中的第二行module_raw input的注释符号去掉,行前一定不能留空格。
(8)文件拷贝到BBB之后,还要做一些配置,vi /etc/profile,添加如下的环境变量:
export TSLIB_ROOT=/
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CALIBFILE=/etc/pointercal
export LD_LIBRARY_PATH=lib
export TSLIB_PLUGINDIR=/lib/ts
注意:以上环境变量的名字不变,但是值可能需要根据自己的情况进行修改。比如开始我按照别人使用/dev/input/event0,结果运行程序出现selected device is not a touchscreen......如果不知道对应自己的触摸屏到底是哪一个,可以打开/dev/input下面发现by-path event0 event1 mice mouse0,运行cat event1,此时用手触摸屏幕,如果终端上传来数据,则说明event1就是你的触摸屏输入接口。
(9)以上修改完后source /etc/profile更新环境变量,在运行env,看看输出的环境变量中刚刚的设置有没有生效。
(10)由于tslib/bin下的可执行程序直接放到了BBB的/bin中,所以此时运行ts_calibrate即可对触摸屏进行校准,如果此时屏幕上进入了校准界面则说明BBB上tslib的安装成功了!