linux系统TP-ti,tsc2046外设调试
一、整体调试思路
tp外设属于比较常见且比较简单的外设,今天以ti,tsc2046这款为例简述下tp外设的调试。
整体思路
1、配置设备树----驱动调试的device部分
2、tp驱动编译及匹配—driver部分
3、驱动整体调试
二、配置设备树
对于ti,tsc2046我们可以参考内核Documentation/devicetree/bindings/input/ads7846.txt
内核文档还是讲的比较详细,必选参数可选参数以及各个参数的含义都有讲到,可以参考。
Device tree bindings for TI's ADS7843, ADS7845, ADS7846, ADS7873, TSC2046
SPI driven touch screen controllers.The node for this driver must be a child node of a SPI controller, hence
all mandatory properties described inDocumentation/devicetree/bindings/spi/spi-bus.txtmust be specified.Additional required properties:compatible Must be one of the following, depending on themodel:"ti,tsc2046""ti,ads7843""ti,ads7845""ti,ads7846""ti,ads7873"interrupt-parentinterrupts An interrupt node describing the IRQ line the chip's!PENIRQ pin is connected to.vcc-supply A regulator node for the supply voltage.Optional properties:ti,vref-delay-usecs vref supply delay in usecs, 0 forexternal vref (u16).ti,vref-mv The VREF voltage, in millivolts (u16).Set to 0 to use internal references(ADS7846).ti,keep-vref-on set to keep vref on for differentialmeasurements as wellti,swap-xy swap x and y axisti,settle-delay-usec Settling time of the analog signals;a function of Vcc and the capacitanceon the X/Y drivers. If set to non-zero,two samples are taken with settle_delayus apart, and the second one is used.~150 uSec with 0.01uF caps (u16).ti,penirq-recheck-delay-usecs If set to non-zero, after samples aretaken this delay is applied and penirqis rechecked, to help avoid falseevents. This value is affected by thematerial used to build the touch layer(u16).ti,x-plate-ohms Resistance of the X-plate,in Ohms (u16).ti,y-plate-ohms Resistance of the Y-plate,in Ohms (u16).ti,x-min Minimum value on the X axis (u16).ti,y-min Minimum value on the Y axis (u16).ti,x-max Maximum value on the X axis (u16).ti,y-max Minimum value on the Y axis (u16).ti,pressure-min Minimum reported pressure value(threshold) - u16.ti,pressure-max Maximum reported pressure value (u16).ti,debounce-max Max number of additional readings persample (u16).ti,debounce-tol Tolerance used for filtering (u16).ti,debounce-rep Additional consecutive good readingsrequired after the first two (u16).ti,pendown-gpio-debounce Platform specific debounce time for thependown-gpio (u32).pendown-gpio GPIO handle describing the pin the !PENIRQline is connected to.wakeup-source use any event on touchscreen as wakeup event.(Legacy property support: "linux,wakeup")Example for a TSC2046 chip connected to an McSPI controller of an OMAP SoC::spi_controller {tsc2046@0 {reg = <0>; /* CS0 */compatible = "ti,tsc2046";interrupt-parent = <&gpio1>;interrupts = <8 0>; /* BOOT6 / GPIO 8 */spi-max-frequency = <1000000>;pendown-gpio = <&gpio1 8 0>;vcc-supply = <®_vcc3>;ti,x-min = /bits/ 16 <0>;ti,x-max = /bits/ 16 <8000>;ti,y-min = /bits/ 16 <0>;ti,y-max = /bits/ 16 <4800>;ti,x-plate-ohms = /bits/ 16 <40>;ti,pressure-max = /bits/ 16 <255>;wakeup-source;};};
这里需要注意的是,这是一款SPI总线的TP,所以对应设备树节点必选在SPI设备树目录下,如下图:
spi_1: spi@78b5000 { compatible = "qcom,spi-qup-v2";#address-cells = <1>;#size-cells = <0>;reg-names = "spi_physical", "spi_bam_physical";reg = <0x78b5000 0x600>,<0x7884000 0x2b000>;interrupt-names = "spi_irq", "spi_bam_irq";interrupts = <0 95 0>, <0 238 0>;spi-max-frequency = <19200000>;pinctrl-names = "spi_default", "spi_sleep";pinctrl-0 = <&spi1_default &spi1_cs0_active>;pinctrl-1 = <&spi1_sleep &spi1_cs0_sleep>;clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,<&clock_gcc clk_gcc_blsp1_qup1_spi_apps_clk>;clock-names = "iface_clk", "core_clk";qcom,infinite-mode = <0>;qcom,use-bam;qcom,use-pinctrl;qcom,ver-reg-exists;qcom,bam-consumer-pipe-index = <12>;qcom,bam-producer-pipe-index = <13>;qcom,master-id = <86>;tsc2046@0 {reg = <0>; /* CS0 */compatible = "ti,tsc2046";interrupt-parent = <&tlmm_pinmux>;interrupts = <29 0x2>; /* GPIO 29 */spi-max-frequency = <2000000>;pendown-gpio = <&tlmm_pinmux 29 0x02>;//vcc-supply = <®_vcc3>;ti,x-min = /bits/ 16 <0>;ti,x-max = /bits/ 16 <8000>;ti,y-min = /bits/ 16 <0>;ti,y-max = /bits/ 16 <4800>;ti,x-plate-ohms = /bits/ 16 <40>;ti,pressure-max = /bits/ 16 <255>;wakeup-source;};};
三、tp驱动编译及匹配
我们使用的驱动为内核原生驱动drivers/input/touchscreen/ads7846.c。
关于编译的问题我们需要从ads7846.c所在目录一层一层往上去看Makefile文件,保证ads7846.c参与到编译中来,我们注意到需要打开2个宏才可以,如下图:
CONFIG_TOUCHSCREEN_ADS7846=y
CONFIG_INPUT_TOUCHSCREEN=y
不同平台内核宏配置文件位置不一样,但是编译之后顶层会生成.config文件,我们可以查看对应的宏是否有修改,另外可以看编译目录有没有ads7846.o这些都是一些辅助判断技巧。
另外关于匹配问题我们可以看到驱动文件与设备树都函数compatible = “ti,tsc2046”,所以理论上只要SPI没有问题(SPI是基础),就会正常匹配,我们也可以在驱动文件probe函数中添加打印以辅助判断或者阅读代码通过驱动文件所建立的节点以及对应打印进行判断。
四、驱动整体调试
经过上面几步,如果一帆风顺的话可以看到/dev/input下面会产生新的event节点,使用手指点击TP,然后查看有无数值变化,如下图我们点击发现event可以正常上报且有变化产生,证明驱动整体是ok。
驱动我们使用原生的,很多参数可能需要根据实际tp厂商的进行调整及优化,另外刚才也说了一帆风顺的时候可以走到第4步,大概率第一步是走不到第4步的,我们需要排查的重点有以下几点:
1、tp硬件是否ok
2、平台的spi是否ok,使用示波器配合spi测试程序验证总线是否有clk
3、tp的中断是否可以正常收到
4、软件层面节点是否出来,驱动probe是否正常完整的处理完
5、有节点但是上报不对,说明驱动匹配基本没有问题大概率还是1~3的问题,继续重点排查。
相关文章:
linux系统TP-ti,tsc2046外设调试
一、整体调试思路 tp外设属于比较常见且比较简单的外设,今天以ti,tsc2046这款为例简述下tp外设的调试。 整体思路 1、配置设备树----驱动调试的device部分 2、tp驱动编译及匹配—driver部分 3、驱动整体调试 二、配置设备树 对于ti,tsc2046我们可以参考内核Docum…...
ChatGPT指令大全
1. 写报告:我现在正在 [报告的情境与目的]。我的简报主题是 [主题],请提供 [数字] 种开头方式,要简单到 [目标族群] 能听懂,同时要足够能吸引人,让他们愿意专心听下去。 2. 研究报告:写出一篇有关 [知识] …...
【Vue面试题】Vue2.x生命周期?
文章目录 1.有哪些生命周期(系统自带)?beforeCreate( 创建前 )created ( 创建后)beforeMount (挂载前)mount (挂载后)beforeUpdate (更新前)updated (更新后)beforeDestroy(销毁前)destroy(销毁后…...
运算放大器 - 笔记 02 -恒流源
恒流源 / 电流源 一、方案一二、方案二三、方案三四、方案四 前言:最近在学习运放,三极管,二极管,场效应管等器件的组合电路。捡起了以前的模电知识,写下笔记,以防再度忘记。 本文使用Multisim仿真软件进行…...
Python:Python进阶:Python字符串驻留技术
Python字符串驻留技术 1.什么是字符串驻留2. 为什么要驻留字符串3. Python的字符串驻留4. Python 字符驻留原理4.1 如何驻留字符串4.2 如何清理驻留的字符串 5. 字符串驻留的实现5.1. 变量、常量与函数名5.2 字典的键5.3 任何对象的属性5.4 显式地驻留 6 字符串驻留的其他发现 …...
2022年 全国职业院校技能大赛(中职组)网络安全赛项 正式赛卷 A模块 做题记录
评分标准文件及环境 评分标准:ZZ-2022029 网络安全赛项正式赛卷.zip 自己做的Linux靶机: 自己做的Windows靶机: 文章目录 评分标准文件及环境A-1 任务一 登录安全加固1. 密码策略(Windows,Linux)a. 最小密…...
华为OD机试 - 优选核酸检测点(Python)
题目描述 张三要去外地出差,需要做核酸,需要在指定时间点前做完核酸,请帮他找到满足条件的核酸检测点。 给出一组核酸检测点的距离和每个核酸检测点当前的人数给出张三要去做核酸的出发时间 出发时间是10分钟的倍数,同时给出张三做核酸的最晚结束时间题目中给出的距离是整…...
windows怎么把包含某个关键词的文件移动到一个文件夹中
文章目录 windows怎么把包含某个关键词的文件移动到一个文件夹中问题来源省流版本操作过程具体问题方法一:使用cmd终端解决方法二:使用python脚本 总结 windows怎么把包含某个关键词的文件移动到一个文件夹中 问题来源 今天想移动window文件࿰…...
Unity 后处理(Post-Processing) -- (2)创建后处理配置文件
通过前面一小节,我们初步认识了后处理是什么,在Unity中简单的试了试后处理的效果。本节我们来创建一个我们自己的后处理配置文件(post-processing profile)。 一个后处理配置文件包含了一系列为了达到特定视觉效果的后处理效果的配…...
BI 商业智能和报表,傻傻分不清楚?一文给你讲透
我们经常所听到的大数据、商业智能BI、数据分析、数据挖掘等我们都统称为数据信息化。数据信息化可以帮助企业全面的了解企业的经营管理,从经验驱动到数据驱动,降低情绪、心理等主观影响,形成以数据为基础的业务决策支撑,提高决策…...
CSS布局基础(传统布局小结)
传统布局小结 传统布局方式标准流浮动流定位伪类元素CSS应用对象应用到自身应用到其他元素 传统布局方式 传统布局采用 标准流 浮动流 定位的方式实现布局效果,也就是通常所说的 DIV CSS 布局。 标准流 标准流中的元素在 页面默认的 维度,块级元素…...
【五一创作】Qt quick基础1(包含基本元素Text Image Rectangle的使用)
Qt quick基础1(包含基本元素Text Image Rectangle的使用) 目录 Qt quick基础1(包含基本元素Text Image Rectangle的使用)前言qt中有直接设计ui的拖拽式的widget,为什么还需要Qtquick?QML语言Qt 版本创建一个Qt quick项…...
LVS+Keepalived 高可用群集部署
一、LVSKeepalived 高可用群集 在这个高度信息化的 IT 时代,企业的生产系统、业务运营、销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的…...
小黑子—Java从入门到入土过程:第八章
Java零基础入门8.0 Java系列第八章1. 双列集合 Map1.1 Map 集合中常见的API1.2 Map 集合的遍历方式1.2 - I 第一种遍历方式:键找值KeySet 方法1.2 - II 第二种遍历方式:键值对 entrySet 方法1.2 - III 第三种遍历方式:lambda表达式 1.3 HashM…...
innodb_flush_log_at_trx_commit 和 sync_binlog 参数解析
这两个参数和MySQL的一致性以及性能相关,默认配置大多数情况下不是最优的。一般来说,互联网线上系统的配置: innodb_flush_log_at_trx_commit —— 0 sync_binlog —— 1000 一、innodb_flush_log_at_trx_commit 事务提交刷盘时机 如果我…...
hd debug - DAPLink的资料
文章目录 DAPLink的资料概述笔记库迁出的技巧END DAPLink的资料 概述 查资料时, 看到有DAPLink的资料, 记录一下. 笔记 DAPLink项目分为软件和硬件2部分, 不在一个库中. 总览 : https://daplink.io/ 这个页面上说了软件和硬件项目的库地址. 软件库地址 : https://github.…...
Android adb常用50条命令
1. adb devices - 列出所有连接的 Android 设备及模拟器 2. adb shell - 启动 Android 设备或模拟器的 shell 终端 3. adb install - 安装 APK 文件 4. adb uninstall - 卸载 APK 文件 5. adb logcat - 查看日志输出信息,用于调试应用 6. adb push - 将文件推送到 Andro…...
【无人车】无人驾驶地面车辆避障研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
Visual Studio高效调试手段与调试技巧总结
目录 1、对0xCCCCCCCC、0xCDCDCDCD和0xFEEEFEEE等常见异常值的辨识度 2、在Debug下遇到报错弹框,点击重试,查看函数调用堆栈...
Day37 Map集合
Map集合 Map集合是接口,interface Map <K , V> K:键的类型; V:值的类型 将键映射到值得对象;不能包含重复的键;每个键可以映射到最多一个值。例如:001 令狐冲 ; 002 岳不群 ; …...
是人就能学会的Spring源码教学-Spring的简单使用
是人就能学会的Spring源码教学-Spring的简单使用 Spring的最简单入门使用第一步 创建项目第二步 配置项目第三步 启动项目 Spring的最简单入门使用 各位道友且跟我一道来学习Spring的最简单的入门使用,为了方便和简单,我使用了Spring Boot项目ÿ…...
NOC大赛·核桃编程马拉松赛道知识点大纲(高年级及初中组)
NOC核桃编程马拉松知识点大纲(高年级及初中组) (一)基础语法 1.掌握运动积木的用法。 包括“移动 10 步”、“左/右转 X 度”、“面向 X 方向/鼠标指针/ 角色”、“移到 XY 坐标/鼠标/角色”、“X/Y 坐标的设定和增加”、 “滑行到 XY/鼠标/角色”等积木用法,详细如下。 1…...
第二十六章 Unity碰撞体Collision(上)
在游戏世界中,游戏物体之间的交互都是通过“碰撞接触”来进行交互的。例如,攻击怪物则是主角与怪物的碰撞,触发机关则是主角与机关的碰撞。在DirectX课程中,我们也大致介绍过有关碰撞检测的内容。游戏世界中的3D模型的形状是非常复…...
Qt Installer Framework使用教程:
步骤一: 下载并安装Qt Installer Framework工具 http://download.qt.io/official_releases/qt-installer-framework/ 将安装目录添加到环境变量,如安装D盘时D:\Qt\QtIFW-4.5.0\bin 步骤二: 将测试例子(如D:\Qt\QtIFW-4.5.0\…...
nodejs+vue+java农村信息化服务平台
用户的登录模块:用户登录本系统,对个人的信息等进行查询,操作可使用的功能。 用户注册模块:游客用户可以进行用户注册,系统会反馈是否注册成功。 添加管理员模块:向本系统中添加更多的管理人员,…...
代码随想录补打卡 62不同路径 63 不同路径2
代码如下 func uniquePaths(m int, n int) int { dp : make([][]int,m) //定义一个二维数组 for i : 0 ; i < m ; i { //遍历这个二维数组的每个元素,并将每个元素都定义为一个一维数组 dp[i] make([]int,n) //这样就生成了图中的一个二维网格 dp[i][0] …...
树的存储和遍历
文章目录 6.5 树与森林6.5.1 树的存储结构1. 双亲表示法(顺序存储结构)2 孩子链表表示法3 孩子兄弟表示法(二叉树表示法) 6.5.2 森林与二叉树的转换1 树转换成二叉树2 二叉树转换成树3 森林转换成二叉树4 二叉树转换成森林 6.5.3 树和森林的遍历1. 树的遍历2. 森林的遍历 6.6 赫…...
MySQL的ID用完了,怎么办?
目 录 一 首先首先分情况 二 自增ID 1 mysql 数据库创建一个自增键的表 2 导出表结构 3 重新创建 自增键是4294967295的表 4 查看表结构 5 异常测试 三 填充主键 1 首先创建一个test 表,主键不自增 2 插入主键最大值 3 再次插入主键最大值1 四 没有声明…...
JSP基于Iptables图形管理工具的设计与实现(源代码+论文)
Netfilter/Iptables防火墙是Linux平台下的包过滤防火墙,Iptables防火墙不仅提供了强大的数据包过滤能力,而且还提供转发,NAT映射等功能,是个人及企业级Linux用户构建网络安全平台的首选工具。但是,由于种种原因&#x…...
什么是数据库分片?
什么是数据库分片? 数据库分片是指将一个大型数据库拆分成多个小型数据库,每个小型数据库称为一个分片。通过这种方式,可以将数据库的负载分散到多个服务器上,从而提高数据库的性能和可伸缩性。 为什么需要数据库分片?…...
网站绑定微信号/百度竞价怎么操作
junit 报错 java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayNametestSelectByExample], 坑了我三个点的问题 不是没写 Test,不是 public,参数,返回值,修饰符的错误,也不是 spring 包与 junit 的…...
厚街网站建设价格/手机百度2020
Soul网关源码阅读(八)路由匹配初探简介今日看看路由的匹配相关代码,查看HTTP的DividePlugin匹配示例运行使用HTTP的示例,运行Soul-Admin,Soul-Bootstrap,Soul-Example-HTTP记得启动数据库docker run --name mysql -p 3306:3306 -e…...
辽宁高速公路建设管理局网站/网络营销图片
我是AY,杨洋,做wpf开发的,最近得了一种病,程序员患得患失综合征。同事说,我年纪在变大,技术跟不上。业余之间,我原创了写了一些语录,给大家中午休息,累疲惫的时候&#x…...
前端开发中英文网站怎么做/官方百度app下载安装
#Android应用界面开发 第三章学习 第三部分 异步处理中使用AsyncTask踩过的坑 AsyncTask是Android提供的工具之一,可以简单方便地用于子线程更新UI,他也是个抽象类,使用时需要重写其方法,根据定义时传入的3个参数类型来判断重写哪…...
深圳商城网站制作公司/做网站公司排名
Java NIO Buffer过程详解发布时间:2020-09-23 05:22:23来源:脚本之家阅读:102作者:xiaoaiwhc1, kevinlin前言在与NIO通道交互时使用Java NIO Buffer。 如您所知,数据从通道读入缓冲区,并从缓冲区写入通道。…...
计算机毕业论文8000字完整版/对seo的认识和理解
题目:原题链接(简单) 解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(NlogN)O(NlogN)O(NlogN)O(1)O(1)O(1)36ms (90.49%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执…...