zoukankan      html  css  js  c++  java
  • 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,为什么没有起作用?

     
     
     
     
  • 相关阅读:
    Django添加数据、查询数据(转载)
    Django添加数据、查询数据(转载)
    Django-用户权限,用户角色使用指南(转载)
    Django-用户权限,用户角色使用指南(转载)
    DJANGO复制记录的方法(转载)
    django 使用框架下auth.models自带的User进行扩展增加字段(转载)
    Django 怎样控制某个按钮的显示权限 (转载)
    IOS 内付 asp.net mvc 服务器端验证
    【问题】抓取微信公众号文章 特殊字符()问题
    Unable to Connect: sPort: 0 C# ServiceStack.Redis 访问 redis
  • 原文地址:https://www.cnblogs.com/dabbler/p/11582200.html
Copyright © 2011-2022 走看看