//参考 文章 https://www.cnblogs.com/emouse/archive/2013/01/29/2881311.html

由于这几天做 ARM触摸屏移植。走了好多弯路。所以写下这篇笔记。希望能帮到大家快速的是实现TsLib在QT上的移植。

1 下载tslib1.20

https://github.com/libts/tslib/releases

这里面有所有版本的tslib。

网络上常用的tslib1.4不支持多点触摸。所以要注意根据自己的需求选择一个合适的版本。

2 解压、配置

解压 tslib-1.20

tar zxvf tslib-1.20.tar.gz

cd tslib-1.19/

$ CC=arm-linux-gcc ./configure --prefix=`pwd`/now_tslib --host=arm-linux

注意:不要加 --enable-static=yes --enable-shared=no 这个会导致 不能生成动态的.so文件。

3 编译

解压和配置之后,执行 make 编译 如果出现下面的错误

$ make
...
make[2]: 正在进入目录 `/home/samba/tslib/tslib-1.19/tests'CCLD     ts_test
../src/.libs/libts.a(ts_setup.o): In function `scan_devices':
ts_setup.c:(.text+0xbc): undefined reference to `EVIOCGPROP'
ts_setup.c:(.text+0x148): undefined reference to `EVIOCGPROP'
ts_setup.c:(.text+0x1c8): undefined reference to `EVIOCGPROP'
ts_setup.c:(.text+0x244): undefined reference to `EVIOCGPROP'
collect2: ld returned 1 exit status
make[2]: *** [ts_test] 错误 1
make[2]:正在离开目录 `/home/samba/tslib/tslib-1.20/tests'
make[1]: *** [all-recursive] 错误 1
make[1]:正在离开目录 `/home/samba/tslib/tslib-1.20'
make: *** [all] 错误 2

解决方案 打开 src/tslib.h

在文件中加入这个

#define EVIOCGPROP(len)          _IOC(_IOC_READ, 'E', 0x09, len)         /* get device properties */

执行
make clean
make
make install

完成之后会生成一个 now_tslib的文件夹。这个里面就是编译好的tslib库。

tslib的开发板移植与测试

按照上面的操作方法,交叉编译安装后的文件在/usr/local/tslib目录下,因此需要拷贝的文件如下:

  1. /usr/local/tslib/lib文件下除去pkgconfig目录外其他所有文件拷贝到开发板/lib目录下
  2. /usr/local/tslib/etc下的ts.conf拷贝到开发板的/etc下,在复制对应目录之前修改文件如下,也可以复制完成后修改。

下面是ts.conf文件的第一行与第二行

# Uncomment if you wish to use the linux input layer event interface
# module_raw input

去掉# module_raw input前面的注释,一定要注意中间的空格也去掉,module顶格。

最后添加环境变量,通过超级终端在开发板系统中添加环境变量,可以在开发板文件系统的/etc/profile文件里添加,也可以直接添加。

 
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/tsexport TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0

说明:
                TSLIB_TSDEVICE        //触摸屏设备文件名。
                TSLIB_CALIBFILE        //校准的数据文件,由ts_calibrate校准程序生成。
                SLIB_CONFFILE        //配置文件名。
                TSLIB_PLUGINDIR         //插件目录
                TSLIB_CONSOLEDEVICE        //控制台设备文件名
                TSLIB_FBDEVICE        //设备名

以上环境变量在实际开发中的实际配置可以根据实际情况决定。而这些指定的设备节点一定要和你的开发板上的/dev目录下的设备节点相对应。

        注意:下面的event1不是一定的。有些设备是touchscreen0 或者event0 

查看自己的设备 使用 cat /proc/bus/input/devices 就可以看到自己设备基本信息

最后运行测验程序

ts_calibrate 进行校验
ts_test      进行测试

QT 的交叉编译与安装

和PC平台下的编译类似,通过运行./configure进行配置生成makefile文件,然后编译安装,只是因为是针对嵌入式平台需要进行一些针对性配置,这里生成一个自动配置文件,可以通过修改文件来方便的更改配置。

# cd qt-everywhere-opensource-src-4.8.4
#sudo gedit autoconfig.sh

在原本的上面 加入

-qt-mouse-tslib \
-I/usr/local/tslib/include \
-L/usr/local/tslib/lib

上面的主要参数含义说明如下:
-embedded arm: 表示将编译针对 arm 平台的 embedded 版本;
-xplatform qws/linux-arm-g++: 表示使用 arm-linux 交叉编译器进行编译;
-qt-mouse-tslib: 表示将使用 tslib 来驱动触摸屏;

运行./autoconfig.sh 生成makefile文件,生成成功最后会输出如下信息

如果编译出现缺少链接信息错误:

warning: libts-0.0.so.0, needed by , not found (try using -rpath or -rpath-link)
undefined reference to `ts_read_raw'
undefined reference to `ts_open'
undefined reference to `ts_fd'
undefined reference to `ts_config'
undefined reference to `ts_close'
undefined reference to `ts_read'
collect2: ld returned 1 exit status

解决方法如下:

修改qt-everywhere-opensource-src-4.8.4/mkspecs/qws/linux-arm-g++/qmake.conf 文件(添加lts参数):

QMAKE_CC                = arm-linux-gcc -ltsQMAKE_CXX               = arm-linux-g++ -ltsQMAKE_LINK              = arm-linux-g++ -ltsQMAKE_LINK_SHLIB        = arm-linux-g++ -lts

接下来执行make 进行编译,时间同样需要很长的时间,视个人电脑配置而定,时间大概在半个小时左右吧。

最后make install安装,安装完成后可以在安装目录/usr/local/Trolltech/QtEmbedded-4.8.4-arm 下查看对应文件。

开发板配置

在开发板上的使用其实很简单,只需要拷贝相应的库文件并设置环境变量即可,拷贝的方法按照个人喜好,我是挂载nfs来实现拷贝。

root@emouse:/armnfs# cp -R /usr/local/Trolltech/QtEmbedded-4.8.4-arm/lib /armnfs/qt

设置环境变量:

export QTDIR=/opt/qt484
export LD_LIBRARY_PATH=$QTDIRlib:$LD_LIBRARY_PATH
export PATH=$QTDIR/bin:$PATH
export QWS_MOUSE_PROTO=tslib:/dev/input/touchscreen0
export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
export QT_QWS_FONTDIR=/opt/qt484/lib/fonts

Tslib1.20和Qt 4.8.4与在ARM开发板上的移植 多点触摸相关推荐

  1. 摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用

    摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用 发布者:旺旺雪饼   时间:2013-01-05 16:56:09 环境: Ubuntu10.04 arm linux OS: 3. ...

  2. qt 4.8.4 linux,Tslib和Qt 4.8.4与在开发板上的移植

    这篇博客算是接着Linux 下编译.安装.配置 QT这篇的,搞完PC平台的就来弄一下嵌入式平台的,Linux的东西搞起来麻烦的地方就在于太杂.太散,像QT,各版本之间都有很多差异,因此在网络上查找资料 ...

  3. QT基础入门【调试篇】QT远程部署与调试嵌入式ARM开发板

  4. 在Rockchip RK3399 Pro开发板上跑通第一个Qt程序

    在Rockchip RK3399 Pro开发板上跑通第一个Qt程序 准备工作:将Qt从Windows移植到Linux 一.交叉编译器的准备 下载交叉编译工具 安装交叉编译工具 二.交叉编译Qt库 三. ...

  5. linux开发板汉字显示,Linux Qt 及Arm开发板汉字显示

    作为一个优秀的开发人员,我就不说废话了. 很多人在 使用Qt做嵌入式开发时,会遇到一个问题: 汉字显示,网上有好多方法,并且针对 Qt5 以前的版本和Qt5 的版本有不同的方法,同样,我也遇到了这个问 ...

  6. ARM开发板下Qt实现中文输入法的波折历程

    ** ARM开发板下Qt实现中文输入法的波折历程 ** 在移植软键盘输入法时候,如果用到中文输入法一定会用到数据库,移植的Qt工程运行时如果碰到如下error,一定要看看我的文章,对你会有所帮助!!! ...

  7. 嵌入式学习之QT学习---14 QT跨平台运行之把QT程序交叉编译到ARM开发板

    想要把qt工程放到开发板上运行,就需要用到交叉编译.由于qt是跨平台的,所以只需要换个编译器编译一下就可以. 以qt学习–计时器的例子为例,在移植之前还需要进行一个准备工作,在windows下运行的时 ...

  8. Qt Creator远程调试嵌入式ARM开发板

    1  环境 Win10 64位系统上通过Virtual Box安装了一个Ubuntu虚拟机. ubuntu的版本:Linux kernel 4.15.0-142-generic #146~16.04. ...

  9. 使用QT程序控制Linux开发板上的继电器(一)

    `使用QT程序控制Linux开发板上的继电器(一)` 测试平台介绍 测试系统接线 编写PlatformIO驱动程序 修改设备树 烧录设备树 Platform字符设备驱动设备框架 完善驱动框架 编写测试 ...

  10. ubuntu下的qt程序移植至ARM开发板

    一.第一步新建一个helloworld  QT工程. 二.使用qmake工具生成Makefile文件 在工程源码文件夹运行qmake   "#/opt/qt-4.7.1/bin/qmake& ...

最新文章

  1. STL的一些基本概念
  2. pytorch优化器,学习率衰减学习笔记
  3. [gic]-ARM gicv3/gicv4的详细介绍-2020/08
  4. [ lucene FAQ ] 当磁盘索引被IndexSearcher打开时,为什么优化操作后索引容量翻倍?...
  5. php电商网站开发流程图,php网上购物平台设计+ER图+流程图.doc
  6. linux系统下安装游戏,在Linux系统下安装GameHub来管理所有游戏
  7. sqlserver的like '%xxx%'优化,全文索引
  8. SQL Prompt
  9. 时间的几种格式以及它们之间的相互转换 (js)
  10. 计算机游戏act指的是什么游戏,忍龙2领衔!5款史上最佳的ACT游戏推荐,值得一玩!...
  11. php 如何实现 访问不带后缀名
  12. 写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组 例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃,A
  13. 系统集成项目管理工程师(软考中级)—— 第二十二章 安全管理 笔记分享
  14. module ‘statsmodels.stats.diagnostic‘ has no attribute ‘het_breushpagan‘
  15. linux tac命令_Linux tac命令入门
  16. HTML5期末大作业:基于HTML+CSS+JavaScript实现中国风文化传媒企业官网源码
  17. 证明:DES解密算法是DES加密算法的逆
  18. DeepMind科学家、AlphaTensor一作解读背后的故事与实现细节
  19. 曾遭作者“删库”的faker.js,现被社区接手;Apache Ambari 项目被弃用;FFmpeg 5.0 发布 | 开源日报
  20. 前「元宇宙」时代,谷歌VR是怎么失败的

热门文章

  1. 硬件电路学习之开尔文电桥双臂讲解
  2. 台式计算机搜索不到无线信号,台式机无线搜不到怎么办
  3. 新冠疫情加速了通信数字化——全球云通信发展分析
  4. 标准差 php,标准偏差怎么计算
  5. 幼儿-综合素质【8】
  6. 单目 3D 目标检测——SMOKE
  7. mysql 临时表空间占用太高_MySQL 临时表空间数据过多的问题排查-爱可生
  8. 简单的外网映射工具natapp操作
  9. uni-app+微信小程序+云开发 爬取必应首页每日图片
  10. 你真的了解串口 (Serial)吗?