JTAG(Joint Test Action Group,联合测试工作组):是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
JTAG最初是用来对芯片进行测试的,JTAG的基本原理是在器件内部定义一个TAP(Test Access Port,测试访问口)通过专用的JTAG测试工具对内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。如今,JTAG接口还常用于实现ISP(In-System Programmer,在系统编程),对FLASH等器件进行编程。
JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程然后再装到板上,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG接口可对DSP芯片内部的所有部件进行编程。
如今大多数比较复杂的器件都支持 JTAG 协议,如 ARM 、 DSP 、 FPGA 器件等。标准的 JTAG 接口是 4 线: TMS 、 TCK 、 TDI 、 TDO ,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。如今 JTAG 接口的连接有两种标准,即 14 针接口和 20 针接口,其定义分别如下所示。
JTAG调试接口必须使用VCC、GND电源信号,以及TMS、TCK、TDI、TDO四根调试信号,可选TRST、RESET复位信号和RTCK(同步时钟)信号。
虽然TRST、RESET是可选的信号;但一般都建议接上,使得仿真器能够在连接器件前对器件进行复位,以获得较理想的初始状态,便于后续仿真。
SWD是ARM公司提出的另一种调试接口,相对于JTAG接口,使用更少的信号。四根信号如下:
同样的,虽然RESET是可选的信号;但一般都建议接上,使得仿真器能够在连接器件前对器件进行复位,以获得较理想的初始状态,便于后续连接仿真。
SWD模式比JTAG在高速模式下面更加可靠。
在大数据量的情况下面JTAG下载程序会失败,但是SWD发生的几率会小很多。
基本使用JTAG仿真模式的情况下是可以直接使用SWD模式的,只要你的仿真器支持。
所以推荐大家使用 SWD 模式。
SWD模式支持更少的引脚,在大家GPIO刚好缺一个的时候,可以使用SWD仿真。
在大家板子的体积有限的时候推荐使用SWD模式,它需要的引脚少,当然需要的PCB空间就小啦!比如你可以选择一个很小的2.54间距的5芯端子做仿真接口。
(1)JTAGV6支持SWD仿真模式,速度较慢。
(2)JTAGV7比较好的支持SWD仿真模式,速度有了明显的提高,速度是JTAGV6的6倍。
(3)JTAGV8非常好的支持SWD仿真模式,速度可以到10M。
(4)ULINK1不支持SWD模式。
(5)盗版ULINK2非常好的支持SWD模式,速度可以达到10M。
(6)正版ULINK2非常好的支持SWD模式,速度可以达到10M。
由此可以看到只有JTAGV8需要5个引脚,即多了一个VCC引脚; 其好处是:仿真器对目标板子的仿真需要用到RST引脚,使用仿真器内部的VCC作这个功能其实并不是非常美妙。因此,JTAGV8选择了只和目标板共GND,但不共VCC。因此我觉得这种模式最合理,当然通常情况下仿真器和目标板共GND和VCC是没有错的。