Tslib1.20和Qt 4.8.4与在ARM开发板上的移植 多点触摸
//参考 文章 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目录下,因此需要拷贝的文件如下:
- /usr/local/tslib/lib文件下除去pkgconfig目录外其他所有文件拷贝到开发板/lib目录下
- /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开发板上的移植 多点触摸相关推荐
- 摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用
摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用 发布者:旺旺雪饼 时间:2013-01-05 16:56:09 环境: Ubuntu10.04 arm linux OS: 3. ...
- qt 4.8.4 linux,Tslib和Qt 4.8.4与在开发板上的移植
这篇博客算是接着Linux 下编译.安装.配置 QT这篇的,搞完PC平台的就来弄一下嵌入式平台的,Linux的东西搞起来麻烦的地方就在于太杂.太散,像QT,各版本之间都有很多差异,因此在网络上查找资料 ...
- QT基础入门【调试篇】QT远程部署与调试嵌入式ARM开发板
- 在Rockchip RK3399 Pro开发板上跑通第一个Qt程序
在Rockchip RK3399 Pro开发板上跑通第一个Qt程序 准备工作:将Qt从Windows移植到Linux 一.交叉编译器的准备 下载交叉编译工具 安装交叉编译工具 二.交叉编译Qt库 三. ...
- linux开发板汉字显示,Linux Qt 及Arm开发板汉字显示
作为一个优秀的开发人员,我就不说废话了. 很多人在 使用Qt做嵌入式开发时,会遇到一个问题: 汉字显示,网上有好多方法,并且针对 Qt5 以前的版本和Qt5 的版本有不同的方法,同样,我也遇到了这个问 ...
- ARM开发板下Qt实现中文输入法的波折历程
** ARM开发板下Qt实现中文输入法的波折历程 ** 在移植软键盘输入法时候,如果用到中文输入法一定会用到数据库,移植的Qt工程运行时如果碰到如下error,一定要看看我的文章,对你会有所帮助!!! ...
- 嵌入式学习之QT学习---14 QT跨平台运行之把QT程序交叉编译到ARM开发板
想要把qt工程放到开发板上运行,就需要用到交叉编译.由于qt是跨平台的,所以只需要换个编译器编译一下就可以. 以qt学习–计时器的例子为例,在移植之前还需要进行一个准备工作,在windows下运行的时 ...
- Qt Creator远程调试嵌入式ARM开发板
1 环境 Win10 64位系统上通过Virtual Box安装了一个Ubuntu虚拟机. ubuntu的版本:Linux kernel 4.15.0-142-generic #146~16.04. ...
- 使用QT程序控制Linux开发板上的继电器(一)
`使用QT程序控制Linux开发板上的继电器(一)` 测试平台介绍 测试系统接线 编写PlatformIO驱动程序 修改设备树 烧录设备树 Platform字符设备驱动设备框架 完善驱动框架 编写测试 ...
- ubuntu下的qt程序移植至ARM开发板
一.第一步新建一个helloworld QT工程. 二.使用qmake工具生成Makefile文件 在工程源码文件夹运行qmake "#/opt/qt-4.7.1/bin/qmake& ...
最新文章
- STL的一些基本概念
- pytorch优化器,学习率衰减学习笔记
- [gic]-ARM gicv3/gicv4的详细介绍-2020/08
- [ lucene FAQ ] 当磁盘索引被IndexSearcher打开时,为什么优化操作后索引容量翻倍?...
- php电商网站开发流程图,php网上购物平台设计+ER图+流程图.doc
- linux系统下安装游戏,在Linux系统下安装GameHub来管理所有游戏
- sqlserver的like '%xxx%'优化,全文索引
- SQL Prompt
- 时间的几种格式以及它们之间的相互转换 (js)
- 计算机游戏act指的是什么游戏,忍龙2领衔!5款史上最佳的ACT游戏推荐,值得一玩!...
- php 如何实现 访问不带后缀名
- 写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组 例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃,A
- 系统集成项目管理工程师(软考中级)—— 第二十二章 安全管理 笔记分享
- module ‘statsmodels.stats.diagnostic‘ has no attribute ‘het_breushpagan‘
- linux tac命令_Linux tac命令入门
- HTML5期末大作业:基于HTML+CSS+JavaScript实现中国风文化传媒企业官网源码
- 证明:DES解密算法是DES加密算法的逆
- DeepMind科学家、AlphaTensor一作解读背后的故事与实现细节
- 曾遭作者“删库”的faker.js,现被社区接手;Apache Ambari 项目被弃用;FFmpeg 5.0 发布 | 开源日报
- 前「元宇宙」时代,谷歌VR是怎么失败的