本文为大家介绍jtag和swd的区别。
对于仿真ARM,TKScope仿真器家庭的AK100/AK100Pro、K8/K9等仿真器提供标准的20PIN调试接口。接口管脚定义如下。其中ARM芯片有两种调试模式,一种是JTAG,一种是SWD,二者在管脚上有复用。
标准20PIN调试接口
JTAG调试接口必须使用VCC、GND电源信号,以及TMS、TCK、TDI、TDO四根调试信号,可选TRST、RESET复位信号和RTCK(同步时钟)信号。
VRef:目标板参考电压信号。用于检查目标板是否供电,直接与目标板VDD联,并不向外输出电压;
GND:公共地信号;
TRST:JTAG复位,连接到目标CPU的nTRST引脚,用于复位CPU调试接口的JTAP控制器;目标板上应将此脚上拉到高电位,避免意外复位;
TDI:仿真器连接至目标CPU的数据输入信号,建议在目标板上将此脚上拉到Vdd;TMS:仿真器输出给目标CPU的JTAG模式设置信号。必须在目标板上将此脚上拉;TCK:仿真器输出给目标CPU的JTAG时钟信号,建议在目标板上将此脚上拉;TDO:目标CPU返回给仿真器的数据信号;
RTCK:目标CPU提供给仿真器的时钟信号。有些目标要求JTAG的输入与其内部时钟同步。仿真器利用此引脚的输入可动态地控制自己的TCK速率。若不使z用此功能,在目标板上将此脚接地,有些芯片可能要求上拉;
RESET:仿真器输出至目标CPU的系统复位信号。’
虽然TRST、RESET是可选的信号;但一般都建议接上,使得仿真器能够在连接器件前对器件进行复位,以获得较理想的初始状态,便于后续仿真。
SWD是ARM公司提出的另一种调试接口,相对于JTAG接口,使用更少的信号。四根信号如下:
VRef:目标板参考电压信号。用于检查目标板是否供电,直接与目标板VDD联,并不向外输出电压;
GND:公共地信号;
SWDIO:串行数据输入输出,作为仿真信号的双向数据信号线,建议上拉;
SWCLK:串行时钟输入,作为仿真信号的时钟信号线,建议下拉;
SWO:串行数据输出引脚,CPU调试接口可通过SWO引脚输出一些调试信息。该引脚是可选的;
RESET:仿真器输出至目标CPU的系统复位信号。
同样的,虽然RESET是可选的信号;但一般都建议接上,使得仿真器能够在连接器件前对器件进行复位,以获得较理想的初始状态,便于后续连接仿真。
1.SWD模式比JTAG在高速模式下面更加可靠。在大数据量的情况下面JTAG下载程序会失败,但是SWD发生的几率会小很多。基本使用JTAG仿真模式的情况下是可以直接使用SWD模式的,只要你的仿真器支持。所以推荐大家使用这个模式。
2.在大家GPIO刚好缺一个的时候,可以使用SWD仿真,这种模式支持更少的引脚。
3.在大家板子的体积有限的时候推荐使用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。
(1)JTAGV6需要的硬件接口为:GND,RST,SWDIO,SWDCLK
(2)JTAGV7需要的硬件接口为:GND,RST,SWDIO,SWDCLK
(3)JTAGV8需要的硬件接口为:VCC,GND,RST,SWDIO,SWDCLK(注:下面有我自己用JTAGV8的实际连线及相应实验结果)
(4)ULINK1不支持SWD模式
(5)盗版ULINK2需要的硬件接口为:GND,RST,SWDIO,SWDCLK
(6)正版ULINK2需要的硬件接口为:GND,RST,SWDIO,SWDCLK
由此可以看到只有JTAGV8需要5个引脚,即多了一个VCC引脚,其好处是:仿真器对目标板子的仿真需要用到RST引脚,使用仿真器内部的VCC作这个功能其实并不是非常美妙。因此,JTAGV8选择了只和目标板共GND,但不共VCC。因此我觉得这种模式最合理,当然通常情况下仿真器和目标板共GND和VCC是没有错的。