本小节主要介绍Tslib-1.4库的编译与移植,下节主要Qt5.8的移植,以及Qt5.8与Tslib-1.4的对接,实现在Qt上的触摸功能; 一、开发环境以及工具 PC系统:Linux version 4.10.0-38-generic (buildd@lgw01-amd64-059) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #42~16.04.1-Ubuntu SMP Tue Oct 10 16:32:20 UTC 2017 交叉编译器:arm-xilinx-linux-gnueabi-gcc 硬件平台:赛灵思(XILINX)ZYNQ-7000开发板 二、前言 首先介绍下交叉编译器的使用方法,gcc(编译c语言——.c程序)、g++编译器(编译c++——.cpp程序)在PC Linux系统上一般是装好的,用他们编译好的程序只能在X86平台(32位系统,如Windows、Linux)、或者X64平台(64位PC系统)上运行,PC的CPU一般是Intel架构或者AMD架构;而Linux的嵌入式平台,CPU一般是ARM架构;如果需要在嵌入式平台上运行程序,那么就需要用该ARM平台所对应的交叉编译器(arm-linux-gcc或者arm-linux-g++)编译程序源码,然后拷贝到ARM开发板上运行。如果该应用程序还需要依赖某些库文件(比如动态库.So),那么就需要把该库的绝对路径添加到环境变量$LD_LIBRARY_PATH中,程序运行时就会链接到该.So库正常运行了。以上纯属个人在工作中的理解,有错误的地方请大家指正。 工具链下载:https://download.csdn.net/download/psy6653/10493762?utm_source=bbsseo 交叉编译器安装、使用的演示: 原理都一样,我就随便下载一个交叉编译重新安装;cross_compilers.tar.gz(交叉编译器源码包,一般是arm-linux-xxx的压缩包,我的是自己压缩的,再解压演示的) 解压该源码包(我是在/opt目录下解压的) tar -zxvf cross_compilers.tar.gz 然后进入解压目录的bin目录下,我们可以看到该交叉编译器的许多工具 如何使用该交叉编译器呢?我习惯vim /etc/profile文件,在$PATH路径下增加该交叉编译器bin路径
让刚所修改的环境变量立即生效 source /etc/profile 让后我们在终端terminal中输入arm后,再按Tab键(自动补齐功能),我们就可以看到以arm开头的一些交叉编译器工具的文件,意思是环境变量设置成功,交叉编译器已经成功安装,并能使用。 或者输入命令查看交叉编译器的版本
三、Tslib库的安装与编译 在编译Tslib-1.4库文件前,需要添加 解压tslib-1.4库源码 unzip tslib-master.zip 进入解压的tslib-master目录:首先清除源码并运行autogen.sh脚本
但提示./autogen.sh: 3: ./autogen.sh: autoreconf: not found的错误,可看出缺少autoreconf,度娘说是移植tslib前需要安装的插件,也就是一个准备工具。 1、下载了一个autoconf-2.69.tar.xz包进行安装 需要解压两次,第一次把.tar.xz解压成.tar包,再把所生成.tar解压成目录
进入解压所得到的autoconf-2.69目录运行配置,--prefix参数为安装路径
但又提示configure: error: no acceptable m4 could be found in $PATH. 2、下载一个m4-1.4.13.tar.gz包进行安装 先解压m4-1.4.13.tar.gz,再进入所解压的m4-1.4.13目录
在m4-1.4.13目录下,运行./configure配置,再make、make install,其中--prefix参数表示该工具所安装的路径,没提示错误表示安装成功。
再回头进入autoconf-2.69,同样运行./configure配置,再make、make install安装,
再回到tslib-master目录下运行autogen.sh脚本,提示Can't exec 'aclocal': No such file or directory at /usr/local/share/autoconf/Autom4te/FileUtils.pm line 326. autoreconf: failed to run aclocal: No such file or directory错误 3、需安装一个automake工具来解决 下载一个automake-1.16.tar.xz,用同样方法解压再进入automake-1.16解压目录进行安装
再回到tslib-master目录下运行autogen.sh脚本,提示configure.ac:64:error:possibly undefined macro: AC_DISABLE_STAT ICIf this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. 4、需安装一个libtool工具 下载一个libtool-2.4.tar.gz,用同样方法解压再进入libtool-2.4解压目录进行安装
5、成功编译Tslib 再回到tslib-master目录下运行autogen.sh脚本,成功运行并没有错误提示, 再没有报错的情况下生成了/configure 要make编译tslib,必须要有Makefile文件,那么就需要先运行所生成的./configure进行配置,然后再生成Makefile;--host 指定交叉编译工具链的前缀,--prefix 指定所编译生成Tslib库的执行文件、头文件和动态库的路径。 ./configure --host=arm-xilinx-linux-gnueabi --prefix=/home/Arm-tslib CC=/opt/gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi/bin/arm-xilinx-linux-gnueabi-gcc 再make、make install,没有报错就表示成功了。
cd /home/Arm-tslib目录,生成的bin目录有执行文件,lib有.So、.la库文件,include目录下有.h头文件,etc有配置文件等 总结: 如果需要成功安装和编译Tslib-1.4库,指定交叉编译器(当更换平台时,更换平台的编译器即可),需要安装四个工具(autoconf、mp4、libtool、automake)。如果PC Linux系统能够联网,而且/etc/apt/sources.list源没什么问题,可以用sudo apt-get install automake autoconf libtool libsysfs-dev命令自动安装,效果都一样。这四个工具以及tslib库的源码我已在本平台上传,需要的可以下载(资源名:tslib库及其安装工具) 四、Tslib的移植以及触摸屏的校正 把编译生成的tslib库Arm-tslib拷贝到开发板上任意路径,我拷贝到/sat目录下,并把目录名Arm-tslib改成tslib,这里最重要就是设置环境变量,为什么要设置?我前言有提到,运行应用程序需要链接它的依赖库,怎么找它额依赖库,就在环境变量的路径下面寻找。那么可以自己新建一个脚本,在运行tslib相关应用程序前先执行下脚本;
其中
TSLIB_FBDEVICE //fb0为ARM中的一块内存,我们可以理解为PC的显存,要显示应用层的图形界面都不能绕过它 下面运行Tslib的ts_calibrate应用程序,首先检测显示屏的大小为1024x600分辨率,然后一次点击四个角落和中心点5个光标,判断所点击的位置和坐标打印是否相符和,运行完后之程序会自动退出; 运行程序之前,显示的是串口终端的信息 运行Tslib的ts_calibrate应用程序后,左上角会有一个十字光标,当我们点击下十字光标,串口终端就会打印Topleft X=45 Y=71,其他的四个点同样会打印出所被点击点的坐标,演示结果如下: 运行ts_test程序,点击draw按钮时,就可以随意绘图,点击qiut就会退出该应用程序; 那么tslib的移植以及校准就算完了,下一节介绍Qt5.8与触摸的对接即Qt5.8与触摸Tslib-1.4库在嵌入式ARM-ZYNQ平台的移植(二)。 |
|
来自: 西北望msm66g9f > 《培训》