ARM调试器只能偶尔连接成功问题
这里分析一个ARM板子JTAG调试器经常连接失败,只能偶尔连上目标板问题。
背景
这是原先另一个部门的板子,在部门合并之后,最近要对这个板子的代码体系进行转移,在过问开发进度时,工程师反映这个板子调试很难连接,所以错误不好定位。这个问题前段时间反映过,但是当时比较忙,没有过问。现在看起来这个问题影响问题定位了,所以看起来这个问题需要彻底看一下了。听原先负责这个板子的工程师,这些年也都是这样,这个芯片很难连接,以前如果不行就换板子。这个芯片是LPC2136,我们部门原先并不使用,但是LPC2132和LPC2134则是使用过的,并不存在问题。简单测试了一下这个板子,确实是连接非常困难。
接线查看
首先找了对比板子LPC2132,连接非常顺利。对比两个板子的图,分析JTAG接口连接,从原理图上看,JTAG接口连接并没有什么不妥,和对比板子一致,量硬件连接,也没有问题。连接总是提示“Failed to connect”。看来只能对JTAG进行分析了。
JTAG信号分析
把所有的JTAG信号线飞出来,接上逻辑分析仪,采集JTAG信号。首先采集正常的板卡的信号,如下:

从上到下,顺序为TRST,TDI,TMS,TCK,RTCK,TDO,从图中看,有来有回,一切正常。只是中间有一个异常,我最初设定为用TRST下降沿触发,却没有抓到,从波形看,TRST确实一直为高,这个当时也没有在意,不影响抓信号。
再抓一个不正常板卡的信号,如下:

从信号看,没有RTCK,也没有TDO输出。测量RTCK信号,并没有和地短路等异常发生。
这时想起来了最初看到的异常板卡的复位电路,是一个简单的RC复位。当时一打眼的时候,觉得这个电路取值有点问题,其中R=10k,C=100nF,稍有RC复位电路设计经验的,都可以看出这个取值不太合理,但是这个板子上电工作一直是正常的,也就没在意。对比对照板卡,其RC取值为100k,1uF。使用镊子强制复位异常板卡,果然可以JTAG连接成功。更换RC取值,板卡JTAG连接正常。
分析
这个板子原因是很清楚的了,复位电路复位时间过短,造成芯片没有很好复位。但是还有一个奇怪的问题,这个板子上电运行从来没有出过问题。猜测是CPU内核在复位链里面复位比较早,而JTAG口复位比较晚?还有一个问题,这个芯片手册有写明这个芯片有内部POR,为什么没有起作用?
ARM调试器只能偶尔连接成功问题的更多相关文章
- 安装ARM调试器
一.概述 1.调试ARM应用程序的软硬件组成 硬件JTAG/SWD仿真器 Eclipse调试插件 GDB调试客户端 GDB服务器端 JTAG/SWD需要的硬件驱动 2.GNU ARM Eclipse推 ...
- 《python灰帽子》学习笔记:写一个windos 调试器(一)
一.开发内容介绍 为了对一个进程进行调试,你首先必须用一些方法把调试器和进程连接起来.所以, 我们的调试器要不然就是装载一个可执行程序然后运行它, 要不然就是动态的附加到一个运行的进程.Windows ...
- Flash Builder 调试器无法连接到正在运行的应用程序(57%)
Flash Builder 调试器无法连接到正在运行的应用程序(57%),可能原因: 1,flashplayer不是debug版. 2,调试器(用debug版flashplayer随便 ...
- 【转】WinDbg调试器:启动程序时自动连接调试器方法
当我们调试服务进程或子进程时,无法直接用调试加载进程的方式启动,此时需要在启动程序时自动连接调试器方法: 第一步:注册表展开到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft ...
- zend stuido 12.5的插件安装和xdebug调试器的配置和和配置注意
参考: zend stuido 12.5的插件安装 zend 12.5 安装插件是按类别进行分类了的, 而且是在欢迎 界面就可以直接安装, 安装后,要重启zend才能生效 版式设计的一个基本点就是: ...
- 32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用
32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用 一丶32位(x86也称为80386)与8086(16位)汇编的区别 1.寄存器的改变 AX 变为 EAX 可以这样想,16位通 ...
- 通过printf从目标板到调试器的输出
最近在SEGGER的博客上看到Johannes Lask写的一篇关于在调试时使用printf函数从目标MCU输出信息到调试器的文章,自我感觉很有启发,特此翻译此文并推荐给各位同仁.当然限于个人水平,有 ...
- ABP框架 - 介绍 VS2017调试器无法附加到IIS进程(w3wp.exe) c# 动态实例化一个泛型类
ABP框架 - 介绍 在14,15年间带领几个不同的团队,交付了几个项目,在这个过程中,虽然几个项目的业务不一样,但是很多应用程序架构基础性的功能却是大同小异,例如认证.授权.请求验证.异常处理. ...
- 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU硬件那些事(2.1)- 玩转板载OpenSDA,Freelink调试器
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列EVK上板载调试器的用法. 本文是i.MXRT硬件那些事系列第二篇,第一篇痞子衡给大家整体介绍了i.M ...
随机推荐
- your current language level is ecmascript 5
https://stackoverflow.com/questions/32995066/how-can-i-configure-resharpers-language-level-for-ecmas ...
- Mac-连接Windows远程桌面软件
链接:https://download.csdn.net/download/ab601026460/9885775 https://blog.csdn.net/ab601026460/article/ ...
- 关系代数(Relation Algebra)与SQL语句的对应关系
SQL语句的执行一般是先翻译为关系代数再被执行的(能有效提高执行速度),所以我们有必要 了解关系代数与SQL语句间的对应关系. 就像高中代数由+-*/和数字组成,关系代数是由union.interse ...
- react目录结构、demo实例详解、属性数据绑定方式
1.目录结构 2.demo实例详解 a)创建Home.js import React, { Component } from 'react'; //创建一个组件必须要集成Component组件,且组件 ...
- KVM + LinuxBridge 的网络虚拟化解决方案实践
目录 文章目录 目录 前言 Linux bridge 的基本操作 创建 Bridge 将 veth pair 连上 Bridge 为 Bridge 配置 IP 地址 将物理网卡接口设备挂靠 Bridg ...
- 阶段3 2.Spring_06.Spring的新注解_7 spring整合junit问题分析
测试类重复代码的问题 这是之前的方式 运行findAll的方法,没有问题 测试人员不需要关心上面的方法,.应该关心的各个方法是否能够正常的运行 对于一个测试工程师,只要写完变量就可以测试了. 可以使用 ...
- 使用IDEA工具创建本地项目并且上传到码云
需要条件: 1.码云/Github建好的git项目 2.IDEA编辑器 3.本地项目 步骤1:创建远程项目 步骤2:复制远程项目地址 注意:此处码云官方已经给出上传项目方法,不过用的是命令行的形式, ...
- maven将自己的springboot项目打包成jar包后,作为工具包引入其他项目,找不到jar中的类
将springboot项目打包成jar包,作为工具包导入项目后,找不到jar中的类. 原因是:springboot项目使用了自动的打包插件. 原先的插件配置: <build> <pl ...
- Stream流实现斐波那契数列
1.前言 我们都知道斐波那契数列有很多种实现方法,在jdk1.8以前没有流操作,只能通过递归或者迭代等其他方式来实现斐波那契数列, 但是jdk1.8以后,有了流操作,我们就可以使用流来实现斐波那契数列 ...
- Spring事务管理配置以及异常处理
Spring事务管理配置: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...