0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机步入嵌入式Linux之触摸屏与tslib

汽车电子技术 来源:嵌入式情报局 作者:情报小哥 2023-02-21 11:06 次阅读

大家好,我是情报小哥!

本文为【从单片机步入嵌入式Linux】系列文章的第六篇,前面几篇文章从uboot->内核->根文件系统,从基本的移植到烧录,算是比较完整的介绍了Linux系统的一个全貌,并且从相对比较底层的角度跟大家一起来构建了一个比较粗糙的嵌入式Linux平台。

以后遇到其他的平台都是类似的做法,烧录的形式和相关配置原理上都大同小异。因为我们本次的目的是要移植Qt5.6,那么触摸屏是肯定要玩起来的,比较方便的就是使用tslib库来配合使用了。

01

何为tslib

图片

前面在移植Linux内核的时候,已经把touch触摸驱动编译进了内核了,那么上电便会自动加载相应的驱动。

那很多人该疑问了,有了驱动不就可以了吗?为何还要弄一个tslib库,可以直接进入tslib库的官网(访问:http://www.tslib.org/)了解一下它,进入官网后便会看到下图:

图片

明显的可以看到其就是一个用于处理滤波触摸屏事件的C库,一款基于LGPLv2的免费软件,为触摸屏提供一个适配器层,可以完成校准,消抖等功能,从而为上层应用程序提供一个统一的接口,比如QT,MiniGUI等都可以调用相应的接口进行访问。

图片

所以tslib并不属于驱动层, 而是一个应用软件的C库。

02

安装tslib

图片

tslib的安装还是比较简单的,通过在PC上进行交叉编译,并安装到相应的文件夹中,然后把安装的文件移植到板级平台上,配置好相应的环境变量即部署好了tslib库使用环境。

下面小哥简单描述一下该过程 :

1、在进行tslib交叉编译之前需要确认编译环境是否安装好autoconf、automake、libtool,这三个东西都属于automake工具,主要是用于配置脚本和自动创建makefile等,而tslib编译所采用的就是这种方式。

如果没有安装就采用如下命令进行安装:

1sudo apt-get install autoconf automake libtool

图片

2、这里我们采用常用的tslib-1.4,该源文件可以直接在tslib官网上进行下载

下载下来一般都是压缩文件,直接解压以后执行如下命令:

1./autogen.sh
2./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes CC=/home/book/WorkSpace/Qt/src/arm-linux-gcc-4.4.3/opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-gcc CXX=/home/book/WorkSpace/Qt/src/arm-linux-gcc-4.4.3/opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-g++ -prefix=/home/book/WorkSpace/Qt/src/tslib-1.4/touch_root
3make CROSS_COMPILE=/home/book/WorkSpace/Qt/src/arm-linux-gcc-4.4.3/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux- ARCH=arm -j8
4make install CROSS_COMPILE=/home/book/WorkSpace/Qt/src/arm-linux-gcc-4.4.3/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux- ARCH=arm -j8

执行autogen.sh脚本从而生成./configure脚本,然后通过执行configure脚本用于指定安装路径等参数,第三步命令则是编译tslib库,然后采用make install进行安装,这样tslib便会安装到第二步所指定的安装路径。

一切执行顺利便可以在安装路径中看到如下内容:(此过程与busybox安装其实是类似的)

图片

3、因为之前加载的触摸屏驱动是输入子设备,这样在tslib安装目录中的etc目录下修改ts.conf文件,使得其支持input输入子系统,然后保存退出,这样tslib安装文件就准备好了。

图片

4、下面我们把该touchroot文件夹进行压缩转移到之前制作好的nfs网络共享文件系统路径下(NFS网络文件系统设置和使用查找往期文章)来进行测试,并进行解压。

1tar zcvf touch_root.tar.gz touch_root/
2mkdir ../../busybox/usr/local
3cp touch_root.tar.gz ../../busybox/usr/local/
4cd ../../busybox/usr/local/
5tar zxvf touch_root.tar.gz

虽然已经把安装的文件放到了板级根文件系统中,那怎样让Linux系统中运行的应用程序找到所安装的tslib目录呢?

一种是应用程序直接以绝对路径进行查找,这样太过死板,而另外一种则是配置好预定义的环境变量,应用程序只需要查找系统的环境变量既可以找到对应的tslib安装路径。(环境变量等知识可以查找往期文章)

5、在根文件系统中的etc目录中创建profile文件,并进行如下环境变量配置,系统在启动过程中便会执行profile文件中的内容,从而设置好相应的环境变量,以后应用程序便能找到安装路径了。

图片

如果一切顺利,便可以执行tslib中bin文件中的测试程序来检测是否安装成功。

比如ts_print测试触摸屏驱动是否正常,运行应用程序以后,然后点击触摸屏,即可输出相应的坐标数据:

图片

还有ts_calibrate程序主要用于校准,一运行屏幕便会出现如下画面。

图片

点击屏幕上的提示点,即可完成校准。

图片

同时还会在环境变量所配置的生成校准文件的路径下,生成校准文件-pointercal供每次启动使用,这样用户就不需要每次都进行校准了。

图片

那么tslib库的安装和部署就暂时讲到这里,其他平台也都大同小异,主要是一些配置根据对应的平台和使用情况进行修改即可。

同时如果对触摸这块比较感兴趣还可以研究一下tslib开源代码进行原理性学习,一些算法还是可以借鉴一下的~

**最 后 **

好了,这里小哥就介绍了一下tslib触摸库的简单安装与测试的相关知识,希望本文能够对你有帮助,本系列文件还会持续更新。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620834
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206735
  • 文件系统
    +关注

    关注

    0

    文章

    273

    浏览量

    19676
收藏 人收藏

    评论

    相关推荐

    单片机嵌入式系统的区别 单片机嵌入式linux区别

    系列单片机的几种嵌入式技术实时操作系统。    单片机嵌入式系统的区别 单片机嵌入式
    发表于 03-16 16:22

    是否要从单片机转为嵌入式Linux

    作者:嵌入式老鸟火哥授权转载于公众号嵌入式老鸟的职场之道(ID: ict_embedded),有增加内容和修改。最近很多童鞋投票并咨询如何从单片机转为嵌入式
    发表于 05-31 10:36

    嵌入式linux单片机

    嵌入式linux单片机嵌入式物联网开发,linux单片机32一.
    发表于 07-14 07:00

    是否要从单片机嵌入式Linux

    是否要从单片机嵌入式Linux,最近很多童鞋投票并咨询如何从单片机转做嵌入式Linux开发。看
    发表于 07-14 06:40

    要不要从单片机嵌入式Linux

    一、你真的决定要转嵌入式Linux吗?要不要从单片机嵌入式Linux是一个影响到职业发展的严肃决策,火哥不能帮你拿主意,只能帮你列出利弊,
    发表于 07-19 08:32

    如何从单片机转做嵌入式Linux开发

    最近很多童鞋投票并咨询如何从单片机转做嵌入式Linux开发。看来读者圈中做单片机,RTOS的不少。尽管我目前从事Linux/Android方
    发表于 11-04 07:58

    Linux嵌入式相对于单片机开发有何优势

    一、你真的决定要转嵌入式Linux吗?1. 单片机开发相对于Linux嵌入式最大的劣势在于基层的打工岗位平均薪资偏低2. 你所在的城市
    发表于 11-05 08:47

    浅析基于linux嵌入式开发

    序言:学习基于linux平台的嵌入式开发之前我已经经过了基于纯单片机开发》》》基于实时系统ucosIII、freeRTOS平台的嵌入式开发两个阶段的学习和实战。基于
    发表于 11-05 06:49

    请问51单片机/STM32单片机/嵌入式Linux是如何点亮LED灯的?

    请问51单片机/STM32单片机/嵌入式Linux是如何点亮LED灯的?
    发表于 11-22 07:44

    如何从单片机转为嵌入式Linux开发

    最近很多童鞋投票并咨询如何从单片机转为嵌入式Linux开发。看来读者圈中做单片机,RTOS的不少。尽管小编目前从事Linux/Android
    发表于 11-22 07:08

    单片机步入嵌入式Linux连接过程中几个地址的区分与理解

    本文为【单片机步入嵌入式Linux】系列文章的第二篇,主要是跟大家讲解一下链接过程中几个地址的区分与理解~01单片机存储分配在玩
    发表于 12-13 06:59

    嵌入式Linux下一种新的触摸屏定标方法的研究

    介绍了一种新型基于嵌入式Linux平台的触摸屏定标方法。首先对嵌入式系统触摸屏接口电路进行了简单介绍,而后详细分析了一种基于
    发表于 04-24 10:25 17次下载

    嵌入式Linux触摸屏在漆包线检测系统中的应用

    本文针对嵌入式Linux触摸屏在漆包线检测系统中的应用,介绍了本系统中触摸屏的具体接口电路,嵌入式Lin
    发表于 07-27 15:47 29次下载

    基于I2C的嵌入式Linux多点触摸屏幕驱动系统设计

    式电容触摸屏。本文通过对以cypress 7958为代表的I2C总线接口电容式多点触摸屏的研究,设计了针对Linux操作系统的多点触摸的屏幕驱动,以及不运行操作系统前提下的
    发表于 10-13 09:12 1039次阅读
    基于I2C的<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>多点<b class='flag-5'>触摸屏</b>幕驱动系统设计

    单片机or嵌入式linux

    最近很多童鞋投票并咨询如何从单片机转做嵌入式Linux开发。看来读者圈中做单片机,RTOS的不少。尽管我目前从事Linux/Android方
    发表于 11-01 16:26 17次下载
    <b class='flag-5'>单片机</b>or<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>