浅论各类调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别

搞嵌入式开发和ARM开发搞了半辈子了,调试程序是不可避免的。接触了那么多的调试规范、调试工具、调试手段,彼此之间的关系却也不是特别清楚,今天就来捋一捋:web

JTAG协议编程

JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。如今多数的高级器件都支持JTAG协议,如ARM、DSP、FPGA器件等。标准的JTAG接口是4线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。 相关JTAG引脚的定义为:svg

  • TMS:测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式;
  • TCK:测试时钟输入;
  • TDI:测试数据输入,数据经过TDI引脚输入JTAG接口;
  • TDO:测试数据输出,数据经过TDO引 脚从JTAG接口输出;

JTAG协议在定义时,因为当时的计算机(PC机)广泛带有并口,于是在链接计算机端是定义使用的并口。而计算机到了今天,不要说笔记本电脑,如今台式计算机上面有并口的都不多了,取而代之的是愈来愈多的USB接口。因此,目前市场上已经不多看到它的身影了。 工具

这里写图片描述

SWD接口性能

串行调试(Serial Wire Debug),应该能够算是一种和JTAG不一样的调试模式,使用的调试协议也应该不同,因此最直接的体如今调试接口上,与JTAG的20个引脚相比,SWD只须要4个(或者5个)引脚,结构简单,可是使用范围没有JTAG普遍,主流调试器上也是后来才加的SWD调试模式。开发工具

SWD和传统的调试方式区别:测试

  • SWD模式比JTAG在高速模式下面更加可靠。在大数据量的状况下面JTAG下载程序会失败,可是SWD发生的概率会小不少。基本使用JTAG仿真模式的状况下是能够直接使用SWD模式的,只要你的仿真器支持,因此推荐你们使用这个模式。
  • 在你们GPIO恰好缺一个的时候,能够使用SWD仿真,这种模式支持更少的引脚。
  • 在你们板子的体积有限的时候推荐使用SWD模式,它须要的引脚少,固然须要的PCB空间就小啦!好比你能够选择一个很小的2.54间距的5芯端子作仿真接口。

这里写图片描述

RDI接口大数据

远程调试接口(Remote Debug Interface),是ARM公司提出的标准调试接口,主要用于ARM芯片的仿真,因为各个IDE厂商使用的调试接口各自独立,硬件没法进行跨平台的调试。如今众多的IDE厂家都逐步采用标准RDI做为ARM仿真器的调试接口,所以使跨平台的硬件调试成为可能。EasyJTAG因为使用标准RDI调试接口,所以在任何使用标准RDI接口的IDE调试环境中均可以使用,例如ARM公司的ADS1.2/IAR公司的EWARM 3.30 。代理

JLink仿真器调试

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

JLINK是一个通用的开发工具,能够用于KEIL、IAR、ADS 等平台。速度,效率,功能都很好,听说是众多仿真器里最强悍的。

这里写图片描述

ULink仿真器

ULINK是ARM/KEIL公司推出的仿真器,目前网上可找到的是其升级版本,ULINK2和ULINK Pro仿真器。ULINK/ULINK2能够配合Keil软件实现仿真功能,而且仅能够在Keil软件上使用,增长了串行调试(SWD)支持,返回时钟支持和实时代理等功能。开发工程师经过结合使用RealView MDK的调试器和ULINK2,能够方便的在目标硬件上进行片上调试(使用on-chip JTAG,SWD和OCDS)、Flash编程。

可是要注意的是,ULINK是KEIL公司开发的仿真器,专用于KEIL平台下使用,ADS、IAR下不能使用。

这里写图片描述

ST-Link仿真器

ST-LINK是专门针对意法半导体STM8和STM32系列芯片的仿真器。ST-LINK /V2指定的SWIM标准接口和JTAG / SWD标准接口,其主要功能有:

  • 编程功能:可烧写FLASH ROM、EEPROM、AFR等;
  • 仿真功能:支持全速运行、单步调试、断点调试等各类调试方法,可查看IO状态,变量数据等;
  • 仿真性能:采用USB2.0接口进行仿真调试,单步调试,断点调试,反应速度快;
  • 编程性能:采用USB2.0接口,进行SWIM / JTAG / SWD下载,下载速度快;

这里写图片描述