J-Link、ST-Link、DAPLink、ULink仿真器区别?以及支持的JTAG、SWD、SWIM下载模式、SWV、串口Printf调试差异?

参考文章

什么是下载调试器?

简单来说,下载调试器是将PC(例如通过USB协议)发送的命令转换为MCU(负责MCU内部外围设备))理解的语言(例如SWD或JTAG协议)的设备,加载代码并精确控制执行。

什么是标准?

简单来说,标准是一组规则和协议,特定行业中的每个参与者都同意遵循并执行。符合某种内核的单片机Q,都可以使用这种协议来下载程序。JTAG和SWD其实都是一种标准的协议。比如JTAG和SWD,都支特下载ARMQ内核单片机的程序。

调试器协议混乱现象

在SWD和JTAG之类的协议出现之前,调试器及其协议一片混乱,每个MCU制造商都提出了自己的专有方法,将代码加载到他们的MCU上。制造商每次发布MCU时,嵌入式软件工程师都需要了解其专有协议,以将代码加载到微控制器中。而且,调试适配器很昂贵,因为制造商实际上并没有竞争者可以使调试适配器与他们的协议相匹配,因为协议是专有的。它们昂贵的另一
个原因是由于体积不足,因为它们只能将调试适配器出售给使用它们制造的MCU的公司(工程师)。不同协议还会导致开发成本增加,比如:你在设计的板上有来自4个不同制造商的4种芯片,并且希望对其进行一些自动化测试以提高生产过程的效率。但是,由于所有电路板都有自己的协议,因此您需要制作一个能适应复杂性的超级复杂的生产代码,并且需要在电路板上的
测试点安装4个不同的调试器,从而增加了成本,生产时间和编程时间。
为了解决这一问题,各大MCU制造和生产商的工程师们就针对调试制定了一些规范协议。也就是下面也介绍的JTA©和SWD协议

JTAG

JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如ARMQ、DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDL、TDO,分别为模式选
择、时钟、数据输入和数据输出线。相关JTAG引脚的定义为:
TMS:测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式:
TCK:测试时钟输入;
TD:测试数据输入,数据通过TD引脚输入JTAG接口;
TDO:测试数据输出,数据通过TDO引脚从JTAG接口输出:
JTAG协议在定义时,由于当时的计算机(PC机)普遍带有并口,因而在连接计算机端是定义使用的并口。而计算机到了今天,不要说笔记本电脑,现在台式计算机上面有并口的都很少了,取而代之的是越来越多的USB接口。JLINK和ULINK让JTAG支持USB协议,用USB接口来调试ARM。
J-Link、ST-Link、DAPLink、ULink仿真器区别?以及支持的JTAG、SWD、SWIM下载模式、SWV、串口Printf调试差异?_第1张图片
JTAG基本上带有5个引脚:
TD:Test Data In,串行输入引脚
TDO:Test Data Out,串行输出引脚
TCLK:Test Clock,时钟引脚
TMS:Test Mode Select,模式选择(控制信号)引脚
TRST:Test Reset,复位引脚

SWD

SWD:Serial Wire Debug,代表串行线调试,是ARM设计的协议,用于对其微控制器进行编程和调试.由于SWD专门从事编程和调试,因此它具有许多特殊功能,通常在其他任何地方都无法使用,例如通过O线将调试信息发送到计算机。另外,由于它是ARM专门为在其设备中使用而制造的,因此SWD的性能通常是同类产品中最好的!
J-Link、ST-Link、DAPLink、ULink仿真器区别?以及支持的JTAG、SWD、SWIM下载模式、SWV、串口Printf调试差异?_第2张图片
SWD引脚
SWDIO: Serial Wire Data Input Output,串行数据输入输出引脚
SWCLK: Serial Wire Clock,串行线时钟引脚
SWD接线:SWDIO-------------------------SWDIO
SWCLK-------------------------SWCLK
VCC-----------------------------VCC
GND----------------------------GND

JTAG和SWD的区别

JTAG的优点

1.不限于ARM内核单片机,能支持更多单片机程序调试和下载。比如MSP430
2.用途更广,用于编程,调试和生产测试

JTAG的缺点

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

SWD的优点

引脚数更少,只需SWD1O和SWCLKI两个引脚,有利于节约电路板尺寸.
SWD具有特殊功能,例如通过其!/O线打印调试信息。
在高速大数据情况下,SWD整体性能比JTAG更好。

SWD的缺点

只能用于ARM内核的单片机.
什么时候选择SWD而不是JTAG
如果您的原理图电路板设计足够简单,可以在没有JTAG功能的情况下进行测试.调试性能比生产测试更重要,你的设备专注于服务研究而不是批量生产MCU在尺寸方面有限制,SWD 可以节省空间
你的硬件设计太复杂,MCU没有多余的2个引脚
J-Link、ST-Link、DAPLink、ULink仿真器区别?以及支持的JTAG、SWD、SWIM下载模式、SWV、串口Printf调试差异?_第3张图片

总结:JTAG、SWD、SWIM、SWV、串口Printfi调试五种下载模式的区别:

1、JTAG接线比较多,高速模式下稳定性不如SWD;
2、SWD接线少,可空出多余的GPIO,所需要的接线信号不同仿真器会有所差别(主要在VCC和RESET),DIO和CLK必接;SWD:用CLK(JTCK)和DIO(JTMS)两条线就可以进行实现SWDdebug,比J-tag还要方便。但是这种SWD只能进行一些普通的调试,如开始、单步调试、停下来查看内存,变量值等等。因为需要停下来才能看到变量值,这给调试工作带来很多的麻烦,效率也很低。
3、SWIM常见于STM8位单片机,需用4根线;JTAG1SWD一般是STM32位单片机
4、串口ptf调试的办法,这个很简单很方便,但是现在却显得有点古老。缺点很明显,需要一个额外的串口外设,还需要串口转USB线,还要在PC上打开一个串口软件。
5、SWV高效:如果给SWD再加上一条线,SWO(JTDO),就可以实现一个实时的调试。SWD调试方法+SWO线就可以实现SWW(Serial Wire Viewer)的调试方法,可以实时看到变量的变化,还可以printf(不使用串口),

JLINK

文章开头的问题,什么是下载调试器,而J儿NK就是下载调试器的一种
JTAG协议在定义时,由于当时的计算机(PC机)普遍带有并口,因而在连接计算机端是定义使用的并口。而计算机到了今天,不要说笔记本电脑,现在台式计算机上面有并口的都很少了,取而代之的是越来越多的USB接口。那么能不能让JTAG支持USB协议,用USB接口来调试ARM呢?这就要说到JLINK和ULINK了。
JLINK是德国SEGGER公司推出基于JTAG的仿真器。简单地说,是给一个JTAG协议转换盒,即一个小型UsB到JTAG的转换盒,其连接到计算机用的是USB接口,而到目标板内部用的还是JTAG协议。它完成了一个从软件到硬件转换的工作。

STLINK

ST-Lik是用于STM8和STM32微控制器的在线调试器和编程器,也是大家口中的下载器。
ST-Link具有SWIM、JTAG/SWD等通信接口,用于与sTM8或sTM32微控制器进行通信(各版本有差异)。ST-LINK官方的有V1、V2、V3版本,V1基本被V2替代,市面上常见的是V2版本,V3版本是18年下半年新推出的版本,市面上普及率还不是很高;常见的V2版本价格比较贵目前市面上山寨的ST-Link,大部分是山寨V2标准版。山寨的ST-Lik主要的特点就是便宜,一般某宝上10~20元就能买一个。里面固件一般没什么问题,可以直接升级ST官方的固件,最大差异就是硬件。
如果运气好,能用很久。偶尔会出现电源短路、芯片发烫等各种折磨。
当然,如果运气差,可能买回来下载一次就不坏了,而且还有可能损坏你的目标芯片(STM832)。

ULINK

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

调试器Pin脚

市面上有很多兼容SWD和JTAG协议的MCU和调试适配器,他们通常通过具有一组下载调试引脚,来实现下载和调试功能,这些引脚内部复用到SWD外设和JTAG外设SWD的引脚在一定条件下可以和JTAG引脚复用,目前针对JTAG和SWD的连接器比较多,比如20pi的接插件:

总结:J-Link、ST-Link、ULink、DAPLink四种仿真器之间的区别:

1、JLink是通用型的ARMQ内核芯片仿真器,支持的芯片和软件开发环境多,IAR,Keil MDK,STM32 cudelDE,MCUXpresso IDE(GCC+Eclipse)针对NXP芯片;支持JTAGISWD两种模式,优先选择JLINK
2、ST-Link是针对STM8/STM32,如果你使用STM8/STM32单片机Q,首选ST-Link,当然用JLink下载ST系列单片机也可以;支持开发环境,IAR,keil MDK,ST32 cudelDE,Atollic TrueStudio(ST收购了Atollic),支持JTAG/SWD/SWIM三种模式.STM32ST-LINK Utility和STM32Cube-programmer是ST-link下载程序工具.
3、U儿ink属于ARM/KEIL公司(2005年ARM收购了KEIL),专注于Keil MDK平台,支持ARM7/9,Cortex–M0~M4,U儿ink2还支持8051系列芯片,综合性能(支持芯片种类、软件开发环境及及调试速度)均不如JLik;支持JTAG/SWD/SWW三种模式
4、DAPLink支持环境:IAR,Keil MDK,arm MBED DAPlink,支持个5针的JTAG或2针的串行有线调试(SWD)接口、串口Q功能
5、四者都支持JTAG和SWD模式;
J-Link、ST-Link、DAPLink、ULink仿真器区别?以及支持的JTAG、SWD、SWIM下载模式、SWV、串口Printf调试差异?_第4张图片

你可能感兴趣的:(嵌入式软件,单片机,嵌入式硬件,c语言)