嵌入式Linux--tslib下载、编译、安装

嵌入式linux 专栏收录该内容
79 篇文章 1 订阅

 采用触摸屏的移动终端中,触摸屏性能的调试是一个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确,有抖动等问题。

 tslib是一个开源程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖动、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。

 要想 Qt 支持触摸还需要编译 tslib,以生成触摸相关插件。Tslib 一般在嵌入式系统时用的多,基本的触摸插件都是它。当然还有 xinput 这样的插件,那是用于桌面系统的。嵌入式 Qt一般用的都是 Tslib。

第一步:获取tslib的源码

使用git获取tslib源码:

推荐:第三方 tslib-1.4:

sudo git clone https://github.com/15903016222/tslib.git
cd tslib

官方最新版:

sudo git clone https://github.com/libts/tslib.git

第二步:编译,安装tslib-1.4

注意:在编译tslib之前确认自己的电脑上已经安装了automake autoconf libtool libsysfs-dev软件

sudo apt-get install automake autoconf libtool libsysfs-dev

开始编译,安装

  1. clean源码
sudo ./autogen-clean.sh
liefyuan@ubuntu:/home/tslib$ sudo ./autogen-clean.sh
Removing autogenned files...
Done.
  1. 自动配置
sudo ./autogen.sh
liefyuan@ubuntu:/home/tslib$ ./autogen.sh
autom4te: cannot create autom4te.cache: No such file or directory
aclocal: error: echo failed with exit status: 1
autoreconf: aclocal failed with exit status: 1
liefyuan@ubuntu:/home/tslib$ sudo ./autogen.sh
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4/internal'.
libtoolize: copying file 'm4/internal/libtool.m4'
libtoolize: copying file 'm4/internal/ltoptions.m4'
libtoolize: copying file 'm4/internal/ltsugar.m4'
libtoolize: copying file 'm4/internal/ltversion.m4'
libtoolize: copying file 'm4/internal/lt~obsolete.m4'
configure.ac:58: installing './compile'
configure.ac:24: installing './config.guess'
configure.ac:24: installing './config.sub'
configure.ac:7: installing './install-sh'
configure.ac:7: installing './missing'
Makefile.am: installing './INSTALL'
plugins/Makefile.am: installing './depcomp'

注意:如果没有安装automake autoconf,则这一步会报以下错误

如果没有安装libtool libsysfs-dev,则会报以下错误

ws@ws:~/project/tslib$ ./autogen.sh 
configure.ac:24: error: possibly undefined macro: AC_DISABLE_STATIC
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:25: error: possibly undefined macro: AC_ENABLE_SHARED
configure.ac:26: error: possibly undefined macro: AC_LIBTOOL_DLOPEN
configure.ac:27: error: possibly undefined macro: AC_PROG_LIBTOOL
autoreconf: /usr/bin/autoconf failed with exit status: 1

configure.ac:17: error: possibly undefined macro: AC_PROG_LIBTOOL
 
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1
  1. 为configure做准备, 防止编译时出错
echo  "ac_cv_func_malloc_0_nonnull=yes"  > tmp.cache

失败!

liefyuan@ubuntu:/home/tslib$ sudo echo "ac_cv_func_malloc_0_nonnull=yes" > tmp.cache
bash: tmp.cache: 权限不够
  1. 配置
sudo ./configure --host=arm-linux --cache-file=tmp.cache   --prefix=/opt/tslib CC=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
  • –prefix=/opt/tslib // 安装路径 (注意一定要写自己的安装路径)

  • CC=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gcc // 指定编译器的绝对路径(注意:必须是绝对路径,否则报错) (注意一定是你交叉编译器的arm-linux-gcc的绝对安装路径)

liefyuan@ubuntu:/home/tslib$ sudo ./configure --host=arm-linux --cache-file=tmp.cache   --prefix=/opt/tslib CC=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
configure: creating cache tmp.cache
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for arm-linux-strip... no
checking for strip... strip
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
...
config.status: creating etc/Makefile
config.status: creating plugins/Makefile
config.status: creating src/Makefile
config.status: creating tests/Makefile
config.status: creating tools/Makefile
config.status: creating doc/Makefile
config.status: creating tslib.pc
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
  1. 编译 安装
sudo make -j16

如果你的安装路径需要权限,可以使用下边的命令

sudo make install

然后再目录/opt/目录下就有了安装好的tslib文件夹了。

liefyuan@ubuntu:/opt/tslib$ ls
bin  etc  include  lib  share

 查看编译的 tslib 文件类型,使用 file 指令。编译出来的 tslib 应为 ARM 格式,不能为 X86格式,如果是 X86 格式就不能用于 ARM 开发板上了。那么说明您上一章的 ARM 交叉编译器环境没生效。请删除重新编译!

liefyuan@ubuntu:/opt/tslib$ file bin/ts_calibrate 
bin/ts_calibrate: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.31, BuildID[sha1]=b8d6bb074473c346ed75079e58e5cc36a328b2e1, not stripped

第三步:配置,测试移植的tslib

移植配置tslib

将安装路径下的整个tslib文件夹,下载至开发开发板上,我存放的路径为/opt/tslib

还需要在开发上配置tslib的环境变量:vi /etc/profile

$ vi /etc/profile
 
export TSLIB_ROOT=/opt/tslib
export TSLIB_TSDEVICE=/dev/input/event1 
export QWS_MOUSE_PROTO=tslib:/dev/input/event1
export TSLIB_CALIBFILE=/etc/pointercal   
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf    
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  
export TSLIB_FBDEVICE=/dev/fb0   
export TSLIB_CONSOLEDEVICE=none   
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

其中,TSLIB_ROOT更换为自己实际存放的路径;

另外,TSLIB_TSDEVICE 和QWS_MOUSE_PROTO这两项需要查看自己的板子的触摸屏设备对应/dev/input/下那个文件

测试tslib

配置一下环境变量:

source /etc/profile

运行一下测试程序:

/opt/tslib/bin/ts_test // 运行 ts_test 测试触摸是否正常,点击界面的 Draw 测试
/opt/tslib/bin/ts_test_mt // 运行 ts_test 测试触摸是否正常,点击界面的 Draw 测试

测试一下屏幕

cat /dev/urandom > /dev/fb0
cat /dev/zero > /dev/fb0

1、使用第一条命令可以让屏幕出现雪花
2、使用第二条命令可以让屏幕变黑
说明屏幕移植是成功

  • 0
    点赞
  • 2
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

第1章 Linux开发基础.1 1.1 Linux系统概述1 1.1.1 Linux简介1 1.1.2 Linux系统的特点1 1.1.3 Linux系统的组成2 1.2 Linux系统的使用2 实验1.1 熟悉Linux基本命令与文件目录系统2 1.3 全屏幕编辑器与vi6 1.3.1 vi简介6 1.3.2 基本命令7 1.3.3 常用操作7 实验1.2 全屏幕编辑器vi的使用7 1.4 Linux Shell编程8 1.4.1 Shell程序的编写和执行8 1.4.2 Shell的变量8 1.4.3 Shell的测试命令9 1.4.4 条件语句9 1.4.5 循环语句9 1.4.6 函数10 实验1.3 Shell脚本编程实验10 .第2章 嵌入式Linux系统基础12 2.1 构建嵌入式Linux系统环境12 2.1.1 交叉编译12 2.1.2 交叉编译器12 2.1.3 NFS13 实验2.1 嵌入式Linux开发环境的建立14 2.2 Linux C程序设计17 2.2.1 C程序设计概述17 2.2.2 Makefile介绍17 2.2.3 Makefile中的变量18 2.2.4 Makefile隐含规则19 实验2.2 Makefile与helloworld19 2.3 Linux多线程库编程21 2.3.1 多线程21 2.3.2 Linux下的多线程21 2.3.3 生产者-消费者模型简述22 2.3.4 缓冲区操作概述22 2.3.5 几个线程API23 实验2.3 Linux多线程使用实例——生产者-消费者协议24 2.4 进程创建以及进程间通信25 2.4.1 进程概述25 2.4.2 进程的相关函数25 2.4.3 信号概述27 2.4.4 信号的相关函数27 2.4.5 管道概述27 2.4.6 管道的相关函数28 实验2.4 进程相关的应用程序设计28 综合实验一嵌入式平台的进程管理模拟实验33 第3章 嵌入式Linux内核引导系统和文件系统36 3.1 Linux内核定制裁剪和添加36 3.1.1 概述36 3.1.2 内核目录简介37 3.1.3 配置文件和配置工具37 3.1.4 内核的编译命令39 实验3.1 Linux内核裁剪与编译40 3.2 嵌入式引导系统技术42 3.2.1 概述42 3.2.2 Linux的引导系统——vivi与uboot43 3.3 文件系统的构建44 3.3.1 概述44 3.3.2 BusyBox45 综合实验二软盘Linux操作系统的实现45 第4章 嵌入式Linux接口设计与驱动程序53 4.1 驱动程序设计基础53 4.1.1 Linux驱动程序简介53 4.1.2 开发驱动程序的方法53 4.1.3 设备驱动程序的分类53 4.1.4 主设备号和次设备号54 4.1.5 设备文件系统(devfs)与udevfs54 实验4.1 虚拟驱动模块实验55 4.2 AD接口驱动程序63 4.2.1 AD转换器63 4.2.2 AD转换有关参数64 4.2.3 ARM自带的AD转换装置65 实验4.2 AD接口驱动程序66 4.3 直流电机驱动68 4.3.1 直流电机介绍68 4.3.2 直流电机的PWM原理68 4.3.3 PWM TIMER结构69 4.3.4 基于ARM的PWM相关寄存器69 4.3.5 关于程序实现72 实验4.3 直流电机PWM驱动实验72 4.4 触摸屏接口设计与驱动74 4.4.1 触摸屏的工作原理74 4.4.2 触摸屏驱动芯片ADS784375 4.4.3 S3C2410芯片的触摸屏相关配置寄存器75 实验4.4 tslib移植和使用78 4.5 显示接口与Linux FrameBuffer83 4.5.1 FrameBuffer机制介绍83 4.5.2 LCD简介84 实验4.5 FrameBuffer实验88 4.6 V4L程序设计90 4.6.1 V4L概述90 4.6.2 V4L设备的体系结构91 实验4.6 Linux视频V4L驱动实验91 4.7 OSS程序设计93 4.7.1 OSS概述93 4.7.2 OSS设备的体系结构94 4.7.3 OSS驱动分析94 4.7.4 OSS用户空间编程95 实验4.7 Linux音频OSS驱动实验95 综合实验三五子棋游戏的实现97 第5章 嵌入式Linux开源软件移植与应用101 5.1 嵌入式WebServer GoAhead的移植与应用101 5.1.1 嵌入式Web服务器101 5.1.2 GoAhead介绍101 5.1.3 GoAhead在ARM平台上的移植102 5.1.4 页面操作102 实验5.1 嵌入式WebServer GoAhead实验103 5.2 嵌入式Web Service gSOAP的移植与应用105 5.2.1 gSOAP介绍105 5.2.2 gSOAP裁剪106 5.2.3 gSOAP应用109 实验5.2 WebService gSOAP实验111 5.3 嵌入式数据库SQLite的移植与使用113 5.3.1 嵌入式数据库113 5.3.2 SQLite介绍114 5.3.3 SQLite在ARM平台上的移植114 5.3.4 SQLite的使用115 实验5.3 SQLite移植实验115 5.4 播放器Mplayer的移植120 5.4.1 Mplayer介绍120 5.4.2 Mplayer在ARM平台上的移植120 实验5.4 Mplayer到ARM平台上的移植121 5.5 ffmpeg应用123 5.5.1 ffmpeg简介123 5.5.2 ffmpeg在ARM上的移植124 5.5.3 ffmpeg命令应用实例124 5.5.4 ffmpeg中几个重要的数据结构125 5.5.5 ffmpeg应用开发126 实验5.5 ffmpeg移植与应用127 5.6 开源软件移植的一般过程131 5.6.1 软件移植的概念131 5.6.2 软件移植过程131 5.7 J2ME-phoneME移植132 5.7.1 phoneME简介132 5.7.2 软件移植过程与效果132 5.8 嵌入式浏览器konqueror移植133 5.8.1 konqueror简介133 5.8.2 软件移植过程与效果133 综合实验四基于WebService的嵌入式计算器..134 第6章 嵌入式Linux图形用户界面137 6.1 嵌入式GUI简介137 6.1.1 嵌入式GUI的特点137 6.1.2 嵌入式GUI的种类137 6.2 嵌入式GUI——Qt138 6.2.1 Qt与Qt/Embedded简介138 6.2.2 Qt的特点138 6.2.3 Qt的执行过程139 6.2.4 Qt的插槽机制140 6.2.5 一个完整的Qt程序140 6.2.6 QtDesigner介绍141 实验6.1 Qt图形界面相关实验141 6.3 基于Qt技术的Qtopia157 6.3.1 Qtopia简介157 6.3.2 Qtopia的功能157 6.3.3 Qtopia编程157 实验6.2 Qtopia的移植以及编程158 综合实验五电子点菜系统165 第7章 嵌入式Linux下的通信应用167 7.1 嵌入式Linux下的串口通信167 7.1.1 串口简介167 7.1.2 串口编程167 7.1.3 串口编程应用实例168 实验7.1 串口通信实验170 7.2 嵌入式Linux网络编程171 7.2.1 网络通信171 7.2.2 Socket简介172 7.2.3 网络编程172 实验7.2 Socket相关程序设计174 7.3 嵌入式蓝牙技术176 7.3.1 蓝牙技术176 7.3.2 蓝牙体系结构176 7.3.3 蓝牙通信网络177 7.3.4 Linux Bluetooth 软件层177 7.3.5 USB适配器177 实验7.3 蓝牙相关实验178 7.4 CAN总线181 7.4.1 CAN总线简介181 7.4.2 CAN总线硬件特征182 7.4.3 CAN控制器驱动184 实验7.4 CAN总线实验186 第8章 嵌入式系统硬件设计基础与标准189 8.1 嵌入式系统的硬件组成189 8.1.1 嵌入式微处理器189 8.1.2 存储器189 8.1.3 输入/输出设备191 8.1.4 通信与扩展接口191 8.2 硬件设计基础知识191 8.2.1 计算机体系结构191 8.2.2 电子技术192 8.2.3 抗干扰技术193 8.2.4 印制电路板194 8.3 硬件设计中应注意的一些问题195 8.3.1 IC元件的选择195 8.3.2 元件封装设计195 8.3.3 PCB设计精度195 8.3.4 分离元件的正确使用195 8.3.5 高速PCB设计方法196 8.3.6 PCB设计的一般原则196 实验8.1 常用模拟电路和数字电路原理197 实验8.22 410-S电路原理图阅读202 实验8.32 410-S所用芯片数据手册阅读205 实验8.4O MAP5910核心板电路原理208 综合实验六基于OMAP的加密终端硬件设计214 第9章 OMAP5910与Linux Gateway219 9.1 OMAP5910体系结构219 9.1.1 MPU子系统219 9.1.2 DSP子系统219 9.2 Linux DSP Gateway221 9.2.1 DSP Gateway的由来221 9.2.2 DSP Gateway的Mailbox机制222 9.2.3 通信缓冲222 9.2.4 Mailbox命令协议224 9.2.5 DSP Gateway的设备接口225 实验9.1O MAP5910双核间基本通信226 9.3 OMAP5910图像处理229 9.3.1 图片格式229 9.3.2 数字图像算法230 实验9.2 OMAP图像处理实验232 综合实验七基于OMAP的加密终端的实现(软件部分)234 第10章 嵌入式Linux综合项目实例238 10.1 基于嵌入式平台的电梯监控系统238 10.1.1 系统概述23810.1.2系统设计239 10.1.3 系统实现242 10.1.4 项目小结248 10.2 基于蓝牙技术的嵌入式点菜系统249 10.2.1 系统概述249 10.2.2 系统设计250 10.2.3 系统实现256 10.2.4 项目小结257 10.3 基于Web Service的数字油田监控系统257 10.3.1 系统概述257 10.3.2 系统设计259 10.3.3 系统实现268 10.3.4 项目小结270 10.4 基于嵌入式与Web Service的智能家居系统270 10.4.1 系统概述271 10.4.2 系统设计272 10.4.3 系统实现286 10.4.4 项目小结297 10.5 基于OMAP的音频与视频处理298 10.5.1 概述298 10.5.2 MPEG压缩298 10.5.3 音视频数据在双处理器间的传输模块设计299 10.5.4 音频处理方案设计300 10.5.5 视频处理方案设计300 10.5.6 项目小结303 参考文献...305
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值