• ARM调试器只能偶尔连接成功问题


    这里分析一个ARM板子JTAG调试器经常连接失败,只能偶尔连上目标板问题。

    背景

    这是原先另一个部门的板子,在部门合并之后,最近要对这个板子的代码体系进行转移,在过问开发进度时,工程师反映这个板子调试很难连接,所以错误不好定位。这个问题前段时间反映过,但是当时比较忙,没有过问。现在看起来这个问题影响问题定位了,所以看起来这个问题需要彻底看一下了。听原先负责这个板子的工程师,这些年也都是这样,这个芯片很难连接,以前如果不行就换板子。这个芯片是LPC2136,我们部门原先并不使用,但是LPC2132和LPC2134则是使用过的,并不存在问题。简单测试了一下这个板子,确实是连接非常困难。

    接线查看

    首先找了对比板子LPC2132,连接非常顺利。对比两个板子的图,分析JTAG接口连接,从原理图上看,JTAG接口连接并没有什么不妥,和对比板子一致,量硬件连接,也没有问题。连接总是提示“Failed to connect”。看来只能对JTAG进行分析了。

    JTAG信号分析

    把所有的JTAG信号线飞出来,接上逻辑分析仪,采集JTAG信号。首先采集正常的板卡的信号,如下: 

    正常JTAG信号 

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

    再抓一个不正常板卡的信号,如下: 

    异常JTAG信号

     从信号看,没有RTCK,也没有TDO输出。测量RTCK信号,并没有和地短路等异常发生。

    这时想起来了最初看到的异常板卡的复位电路,是一个简单的RC复位。当时一打眼的时候,觉得这个电路取值有点问题,其中R=10k,C=100nF,稍有RC复位电路设计经验的,都可以看出这个取值不太合理,但是这个板子上电工作一直是正常的,也就没在意。对比对照板卡,其RC取值为100k,1uF。使用镊子强制复位异常板卡,果然可以JTAG连接成功。更换RC取值,板卡JTAG连接正常。

    分析

    这个板子原因是很清楚的了,复位电路复位时间过短,造成芯片没有很好复位。但是还有一个奇怪的问题,这个板子上电运行从来没有出过问题。猜测是CPU内核在复位链里面复位比较早,而JTAG口复位比较晚?还有一个问题,这个芯片手册有写明这个芯片有内部POR,为什么没有起作用?

     
     
     
     
  • 相关阅读:
    python note 30 断点续传
    python note 29 线程创建
    python note 28 socketserver
    python note 27 粘包
    python note 26 socket
    python note 25 约束
    Sed 用法
    python note 24 反射
    python note 23 组合
    python note 22 面向对象成员
  • 原文地址:https://www.cnblogs.com/dabbler/p/11582200.html
Copyright © 2020-2023  润新知