调试器JTAG、SWD、JLINK、ST-LINK、ULINK的区别

什么是下载调试器?
简单来说,下载调试器是将PC(例如通过USB协议)发送的命令转换为 MCU(负责MCU内部外围设备)理解的语言(例如SWD或JTAG协议)的设备,加载代码并精确控制执行。
什么是标准?
简单来说,标准是一组规则和协议,特定行业中的每个参与者都同意遵循并执行。符合某种内核的单片机,都可以使用这种协议来下载程序。
JTAG和SWD其实都是一种标准的协议。
比如JTAG和SWD,都支持下载ARM内核单片机的程序。
调试器协议混乱现象
在SWD和JTAG之类的协议出现之前,调试器及其协议一片混乱,每个MCU制造商都提出了自己的专有方法,将代码加载到他们的MCU上。制造商每次发布MCU时,嵌入式软件工程师都需要了解其专有协议,以将代码加载到微控制器中。
而且,调试适配器很昂贵,因为制造商实际上并没有竞争者可以使调试适配器与他们的协议相匹配,因为协议是专有的。它们昂贵的另一个原因是由于批量制造不足,因为它们只能将调试适配器出售给使用它们制造的MCU的公司(工程师),没有办法大规模量产,导致生产单价过高。
不同协议还会导致开发成本增加,比如:你在设计的板上有来自4个不同制造商的4种芯片,并且希望对其进行一些自动化测试以提高生产过程的效率。但是,由于所有电路板都有自己的协议,因此您需要制作一个能适应复杂性的超级复杂的生产代码,并且需要在电路板上的测试点安装4个不同的调试器,从而增加了成本,生产时间和编程时间。
为了解决这一问题,各大MCU制造和生产商的工程师们就针对调试制定了一些规范协议。也就是下面也介绍的JTAG和SWD协议
 
一、JTAG
JTAG(Joint Test Action Group,联合测试工作组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。JTAG调试接口必须使用VCC、GND电源信号,以及TMS、TCK、TDI、TDO四根调试信号,可选TRST、RESET复位信号和RTCK(同步时钟)信号。JTAG 接口的连接有两种标准,即 14 针接口和 20 针接口。
20 PIN JTAG引脚的定义为:

14 PIN JTAG引脚的定义为:

JTAG最基本的引脚:

VREF:直接与目标板VDD相连,用于检测目标板是否供电

TRST:Test Reset,连接到目标CPU的nTRST,用于复位CPU调试接口的TAP控制器

TDI:   Test Data In,连接至目标CPU的数据输入信号

TMS:     Test Mode Select,模式选择(控制信号)引脚

TCK:     Test Clock,时钟引脚

TDO:    Test Data Out,连接至目标CPU的数据输出信号

 

二、SWD

SWD:Serial Wire Debug,代表串行线调试,是ARM设计的调试接口协议,用于对其微控制器进行编程和调试。

由于SWD专门从事编程和调试,因此它具有许多特殊功能,通常在其他任何地方都无法使用,例如通过IO线将调试信息发送到计算机。另外,由于它是ARM专门为在其设备中使用而制造的,因此SWD的性能通常是同类产品中最好的!

SWD基本引脚
SWDIO:Serial Wire Data Input Output,串行数据输入输出引脚
SWCLK:Serial Wire Clock,串行线时钟引脚
SWO:串行数据输出,CPU调试接口可通过SWO输出一些调试信息,该引脚可选。
RESET:仿真器输出至目标CPU的系统复位信号;是可选信号

 

三、JTAG和SWD的区别

JTAG的优点

1.不限于ARM内核单片机,能支持更多单片机程序调试和下载。比如MSP430

2.用途更广,用于编程,调试和生产测试.

JTAG的缺点

占用引脚数比较多,比较占用板子尺寸。

SWD的优点

引脚数更少,只需SWDIO和SWCLK两个引脚,有利于节约电路板尺寸。

SWD具有特殊功能,例如通过其I/O线打印调试信息。

在高速大数据情况下,SWD整体性能比JTAG更好。

SWD的缺点

只能用于ARM内核的单片机。

 

什么时候选择SWD而不是JTAG

  • 如果您的原理图/电路板设计足够简单,可以在没有JTAG功能的情况下进行测试

  • 调试性能比生产测试更重要,你的设备专注于服务研究而不是批量生产

  • MCU在尺寸方面有限制,SWD 可以节省空间

  • 你的硬件设计太复杂,MCU没有多余的2个引脚

四、JLINK

文章开头的问题,什么是下载调试器,而JLINK就是下载调试器的一种

JTAG协议在定义时,由于当时的计算机(PC机)普遍带有并口,因而在连接计算机端是定义使用的并口。而计算机到了今天,不要说笔记本电脑,现在台式计算机上面有并口的都很少了,取而代之的是越来越多的USB接口。那么能不能让JTAG支持USB协议,用USB接口来调试ARM呢?这就要说到JLINK和ULINK了。

JLINK是德国SEGGER公司推出基于JTAG的仿真器。简单地说,是给一个JTAG协议转换盒,即一个小型USB到JTAG的转换盒,其连接到计算机用的是USB接口,而到目标板内部用的还是JTAG协议。它完成了一个从软件到硬件转换的工作。

 

五、STLINK

ST-Link是专用于STM8和STM32微控制器的在线调试器和编程器,也是大家口中的下载器。

ST-Link具有SWIM、JTAG / SWD等通信接口,用于与STM8或STM32微控制器进行通信(各版本有差异)。

ST-LINK官方的有V1、V2、V3版本,V1基本被V2替代,市面上常见的是V2版本,V3版本是18年下半年新推出的版本,市面上普及率还不是很高;常见的V2版本价格比较贵。

目前市面上山寨的ST-Link,大部分是山寨V2标准版。

山寨的ST-Link主要的特点就是便宜,一般某宝上10~20元就能买一个。里面固件一般没什么问题,可以直接升级ST官方的固件,最大差异就是硬件。

如果运气好,能用很久。偶尔会出现电源短路、芯片发烫等各种折磨。

当然,如果运气差,可能买回来下载一次就不坏了,而且还有可能损坏你的目标芯片(STM8/32)。

六、ULINK

ULINK——ULINK2是ARM公司最新推出的配套RealView MDK使用的仿真器,是ULink仿真器的升级版本。ULINK2不仅具有ULINK仿真器的所有功能,还增加了串行调试(SWD)支持,返回时钟支持和实时代理等功能。开发工程师通过结合使用RealView MDK的调试器和ULINK2,可以方便的在目标硬件上进行片上调试(使用on-chip JTAG,SWD和OCDS)、Flash编程。

 

七、调试器Pin脚

市面上有很多兼容 SWD 和 JTAG 协议的MCU和调试适配器,他们通常通过具有一组下载调试引脚,来实现下载和调试功能,这些引脚内部复用到SWD外设和JTAG外设。

SWD的引脚在一定条件下可以和JTAG引脚复用,目前针对 JTAG 和 SWD的连接器比较多,比如20pin的接插件:

 

当然,也有10pin的:

八、总结:

JTAG、SWD是仿真器、下载器、调试器协议接口。

JLink、ULink、ST-Link是各家公司仿真器、下载器、调试器的名字。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注