JTAG 怎么有10脚的也有20脚的?

[复制链接]
8193|15
手机看帖
扫描二维码
随时随地手机跟帖
yoyowodeai| | 2010-11-7 10:05 | 显示全部楼层

遵循JTAG的器件包含以下几个管脚
TCK 测试时钟输入,它和系统时钟不同
TDI测试数据输入,通过它数据移位进入器件
TDO测试数据输出,通过它数据从器件移出
TMS测试模式选择,在JTAG规范中TMS命令选择测试模式
TRST测试复位输入,它为TAP控制器提供异步初始化
器件的测试支持功能是通过TAP控制器来实现的。TAP是一个状态机,它控制控制所有相关操作,每种遵循JTAG的器件都有自己的TAP控制器,通过TCK和TMS可以使状态机内部的状态发生变化,从而支持诸如断点、单步、内部观察等调试工作。
本章针对ARM7TDMI介绍调试结构。ARM的调试体系采用协议转换器来使调试器通过JTAG与ARM核直接通信。前面JTAG标准中提到的扫描链功能是测试用,这里把它作为调试用:捕获数据总线上的信号并向内核或存储器插入新的信息。ARM7TDMI-S核内具有EmbeddedICE逻辑,EmbeddedICE逻辑提供对片内调试的支持。调试指令直接通过扫描链插入ARM内核并执行。根据插入调试指令的不同,内核可以处于观察、保存或改变状态。ARM的调试体系可以使程序指令执行速度处于调试速度或全速运行。在ARM中采用JTAG的特点是:通过JTAG接口可以观察ARM内核状态和系统状态(注意:系统状态包括片内外设,不同于内核状态);不占用额外的目标系统资源;提供传统的断点访问和观察点访问;不再需要另外的UART端口来和监控程序通信。
围绕ARM内核有两个扫描链:围绕整个内核外围的一个扫描链以及仅仅覆盖数据总线和断点的扫描链。由于后者的链比较短,从而使调试指令和数据可以快速插入内核,避免了额外的时间

使用特权

评论回复
yoyowodeai| | 2010-11-7 10:08 | 显示全部楼层
ARM系统的JTAG接口的设计不当往往使硬件系统无法调试,所以在设计ARM系统前要先熟悉ARM系统的JTAG接口的定义和常见问题。

1.ARM系统的JTAG接口是如何定义的? 每个PIN又是如何连接的?

下图是JTAG接口的信号排列示意:



接口是一个20脚的IDC插座。下表给出了具体的信号说明:
      表 1 JTAG引脚说明

序号 信号名   方向     说 明
1     Vref     Input   接口电平参考电压,通常可直接接电源
2     Vsupply Input    电源
3     nTRST    Output (可选项) JTAG复位。在目标端应加适当的上拉电阻以防止误触发。
4     GND      --      接地
5     TDI      Output Test Data In from Dragon-ICE to target.
6     GND      --      接地
7     TMS      Output Test Mode Select
8     GND      --      接地
9     TCK      Output Test Clock output from Dragon-ICE to the target
10    GND      --      接地
11    RTCK     Input   (可选项) Return Test Clock。由目标端反馈给Dragon-ICE的时钟信号,用来同步TCK信号的产生。不使用时可以直接接地。
12    GND      --      接地
13    TDO      Input   Test Data Out from target to Dragon-ICE.
14    GND      --      接地
15    nSRST Input/Output (可选项) System Reset,与目标板上的系统复位信号相连。可以直接对目标系统复位,同时可以检测目标系统的复位情况。为了防止误触发,应在目标端加上适当的上拉电阻。
16    GND      --      接地
17    NC       --      保留
18    GND      --      接地
19    NC       --      保留
20    GND      --      接地

2.目标系统如何设计?

  目标板使用与Dragon-ICE一样的20脚针座,信号排列见表1。RTCK和 nTRST这两个信号根据目标ASIC有否提供对应的引脚来选用。nSRST则根据目标系统的设计考虑来选择使用。下面是一个典型的连接关系图:

  
    复位电路中可以根据不同的需要包含上电复位、手动复位等等功能。如果用户希望系统复位信号nSRST能同时触发JTAG口的复位信号nTRST,则可以使用一些简单的组合逻辑电路来达到要求。后面给出了一种电路方案的效果图。


3 一个复位电路结构的例子
  在目标系统的PCB设计中,最好把JTAG接口放置得离目标ASIC近一些,如果这两者之间的连线过长,会影响JTAG口的通信速率。
  另外电源的连线也需要加以额外考虑,因为Dragon-ICE要从目标板上吸取超过100mA的大电流。最好能有专门的敷铜层来供电,假如只能使用连线供电的话,最小线宽不应小于10mil (0.254mm)

3. 14脚JTAG如何与20JTAG连接?

  Dragon-ICE使用工业标准的20脚JTAG插头,但是有些老的系统采用一种14脚的插座。这两类接口的信号排列如下:
  这两类接口之间的信号电气特性都是一样的,因此可以把对应的信号直接连起来进行转接。Dragon-ICE配备这种转接卡,随机配备。



至于楼主说的10管脚的,我还真没有找到!????????????


zh

使用特权

评论回复
yoyowodeai| | 2010-11-7 10:11 | 显示全部楼层
目前 JTAG 接口的连接有两种标准,即 14 针接口和 20 针接口,其定义分别如下所示。

14 针JTAG 接口定义:
14 针 JTAG 接口定义引 脚 名 称 描 述
1 、 13               VCC 接电源
2 、 4 、 6 、 8 、 10 、 14    GND 接地
3  nTRST             测试系统复位信号
5  TDI              测试数据串行输入
7  TMS              测试模式选择
9  TCK              测试时钟
11 TDO              测试数据串行输出
12 NC               未连接
20 针 JTAG 接口定义引 脚 名 称 描 述

1 VTref             目标板参考电压,接电源
2 VCC               接电源
3 nTRST              测试系统复位信号
4、6、8、10、12、14、16、18、20  GND 接地
5 TDI               测试数据串行输入
7 TMS               测试模式选择
9 TCK               测试时钟
11 RTCK              测试时钟返回信号
13 TDO               测试数据串行输出
15 nRESET             目标系统复位信号
17 、 19 NC            未连接
下面以S3C4510B开发板为例说明JTAG接口:
在保证电源电路、晶振电路和复位电路正常工作的前提下,可通过JTAG 接口调试S3C4510B,在系统上电前,首先应检测JTAG 接口的 TMS 、 TCK 、 TDI 、 TDO 信号是否已与 S3C4510B 的对应引脚相连,其次应检测 S3C4510B 的 nEWAIT 引脚( Pin71 )是否已上拉, ExtMREQ 引脚( Pin108 )是否已下拉,对这两只引脚的处理应注意,作者遇到多起S3C4510B 不能正常工作或无法与JTAG 接口通信,均与没有正确处理这两只引脚有关。
给系统上电后,可通过示波器查看 S3C4510B 对应引脚的输出波形,判断是否已正常工作,若S3C4510B 已正常工作,在使能片内 PLL 电路的情况下, SDCLK/MCLKO 引脚( Pin77 )应输出频率为 50MHz 的波形,同时, MDC 引脚( Pin50 )和其他一些引脚也应有波形输出。
在保证 S3C4510B 已正常工作的情况下,可使用 ADS 或 SDT 通过 JTAG 接口对片内的部件进行访问和控制。
在此,首先通过对片内控制通用 I/O 口的特殊功能寄存器的操作,来点亮连接在 P3 ~ P0 口上的4 只 LED ,用以验证 ADS 或 SDT 调试环境是否已正确设置,以及与 JTAG 接口的连接是否正常。
ADS 和 SDT 均为 ARM 公司为方便用户在 ARM 芯片上进行应用开发而推出的一整套集成开发工具,其中, ADS 为 SDT 的升级版本。该系统的调试以 ADS 为例,同时也适合于 SDT 开发环境。
连接好硬件后,打开 AXD Debugger ,建立与目标板(待调试的系统板)的连接, AXDDebugger 有软件仿真方式和带目标系统的调试方式,此时应工作在带目标系统的调试方式。
选择菜单 System Views → Command Line Interface 功能,该选项为 AXD Debugger 的一个命令行窗口,可在该窗口内输入各种调试命令,使用非常方便。在命令行窗口输入:
> setmem 0x3FF5000, 0xFFFF, 32
> setmem 0x3FF5008, 0xFFFF, 32
setmem 命令用于对特定的地址设置特定的值,待设定的值可以是 8 位、 16 位或 32 位,在此,对通用 I/O 口的模式寄存器和数据寄存器设置相应的值,点亮 LED 。
S3C4510B 在复位后,特殊功能寄存器的基地址为 0x3FF0000, 由表 5 -2-3 可知,I/O 口的模式寄存器偏移地址为0x5000,因此, I/O 口的模式寄存器的物理地址为 0x3FF5000 ,设定该寄存器的值为 0xFFFF ,将 I/O 口置为输出方式。 I/O 口的数据寄存器的物理地址为 0x3FF5008 ,设定该寄存器的值为 0xFFFF ,将 I/O 口的输出置为高电平。
在执行完以上两条命令后,连接在通用 I/O 口的 4 只 LED 应被点亮,表示调试系统的软、硬件连接完好,可进行下一步的调试工作,否则,应重新检查调试系统。
用户若使用 SDT 作为调试工具,操作方法类似。 连接好硬件后,打开 ARM Debugger for Windows ,建立与目标板(待调试的系统板)的连接,选择菜单 View → Command 功能,即可显示命令行窗口,在命令行窗口输入:
Debug:let 0x3FF5000 = 0xFFFF
Debug:let 0x3FF5008 = 0xFFFF
执行完以上两条命令后,连接在通用 I/O 口的 4 只 LED 应被点亮。
关于通用 I/O 口更具体的工作原理和使用方法,可参考S3C4510B 用户手册。
用户系统若能正常完成上述操作并成功点亮连接在P3~P0 口上的LED 显示器,则表明S3C4510B已在正常工作,且调试环境也已正确建立,以后的调试工作就相对简单。笔者曾遇到多个用户系统因为不能完成这步工作,使开发者失去信心而最终放弃。

使用特权

评论回复
米其林r| | 2010-11-7 22:29 | 显示全部楼层
学习了

使用特权

评论回复
芯唐.万利| | 2010-11-7 23:03 | 显示全部楼层
芯唐M051和NUC100系列CortexM0在仿真时,至少需要三根线:TMS,TCK和GND,不过nRST也是必须的。
TMS/TCK分别对应于SWDIO/SWCLK。
GND是地线,必须与目标MCU相连。
nRST在特殊情况下需要使用,不连接nRST有时会死的很惨。

使用特权

评论回复
jack_shine| | 2010-11-8 09:18 | 显示全部楼层
路过,做个标记

使用特权

评论回复
yybj| | 2010-11-9 13:52 | 显示全部楼层
nRST在什么特殊情况下使用

使用特权

评论回复
ji_dan| | 2010-11-9 21:47 | 显示全部楼层
当然是有的~

使用特权

评论回复
火箭球迷| | 2010-11-9 21:57 | 显示全部楼层
应该对应于不同的用途

使用特权

评论回复
九州龙| | 2010-11-24 21:29 | 显示全部楼层
1# 思行合一

不知你是否发现一个问题?2楼给你的答案中有用的数据线一共就是1,2,3,5,7,9,11,13,15,GND。查查这些一共多少根?
其他的不用当然就可以省去了,这样省PCB。只要线是对的用什么接口都行吧。可以设计成MINIUSB口,设计成RJ45网口,还可以设计成一排的排针形式。
保证信号完整性。

使用特权

评论回复
闲菜0_0| | 2011-3-25 11:31 | 显示全部楼层
我想知道10针的PCB封装形式~在Protel的封装库里面有吗

使用特权

评论回复
yuchunna2006| | 2011-3-25 14:44 | 显示全部楼层
:handshake谢谢了,学习了

使用特权

评论回复
3B1105| | 2011-3-27 13:04 | 显示全部楼层
本来有用的管脚就5个!10个,20个的都只是区别!

使用特权

评论回复
myic200610| | 2012-11-10 00:52 | 显示全部楼层
领教了,谢谢!

使用特权

评论回复
沙漠大王| | 2012-11-10 10:46 | 显示全部楼层
回答的太好了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

215

主题

1391

帖子

2

粉丝