JTAG、SWD、DAP、STLink、JLink、ULink这些东西的关系

目录

仿真器(Simulator)是什么:

调试器(Debugger)是什么:

JTAG(Joint Test Action Group)和SWD(Serial Wire Debug)是什么:

STLink是什么:

JLink是什么:

ULink是什么:

程序下载(程序烧录)(ISP、ICP、IAP)


一些名词:

仿真器(Simulator)

调试器(Debugger)

JTAG(Joint Test Action Group)(测试行动联合组织)

SWD(Serial Wire Debug)(串行线调试)

DAP(Debug Access Port)(调试访问端口)(DAP通常是指CMSIS-DAP)

仿真器与调试器时不同的两个东西,但是现在这两者通常被混为一谈。

仿真器(Simulator)是什么:

使用仿真器时,不需要有MCU实物。

仿真器现在很少用,因为他已被调试器取代。

仿真器分为两种,软件仿真器和硬件仿真器。

软件仿真器就是在PC上模拟MCU的运行,比如可以在Keil上模拟51单片机的运行而不需要51单片机实物。

硬件仿真器。比如51单片机的仿真器,它相对于51单片机,主要就是多了一个调试的功能(参考普中的51仿真器)。

仿真器没落的原因:

第一点,仿真器往往只适用于那些内核中不含有硬件调试模块的MCU,比如51单片机,这种MCU不能进行调试,如果想要进行调试,只能使用仿真器。(在STM32中,Cortex-M内核含有硬件调试模块,可以进行调试)

第二点,仿真器的价格贵,而且不通用。比如51仿真器只能仿真51。如果你想仿真STM32F1xx,就需要STM32F1xx的仿真器。如果你想仿真STM32F4xx,就需要STM32F4xx的仿真器。

               

 上面是51单片机和51仿真器的价格对比。


调试器(Debugger)是什么:

使用调试器时,必须要有MCU实物。调试器和MCU是合作关系。调试器往往具有下载功能。

图片中的都是调试器(Debugger)。包括STLink、JLink、ULink、DAP等等。 

如果一个DAP遵循了CMSIS-DAP标准,他就可以支持所有Cortex-M内核的单片机,使用DAP最大的好处就是免驱动,不用下载驱动。但是STM32CubeIDE只支持STLink和JLink。

因为在STM32单片机中,Cortex-M内核含有硬件调试模块,可以进行调试,不需要另外的、单独的仿真器。我们只需要使用仿真器将电脑和MCU连接起来,再配置一下相关的设置,就可以进行调试了。

Cortex-M内核含有硬件调试模块,该模块可以在取指(指令断点)或者访问数据(数据断点)时停止。内核停止时,可以查询内核的内部状态和系统的外部状态(外设的状态)。完成查询后,可以恢复程序的执行。


JTAG(Joint Test Action Group)和SWD(Serial Wire Debug)是什么:

JTAG和SWD都是调试接口。不过这两种调试接口是完全不同的。

先看一张图,STM32F103C8T6的部分的引脚分配图(来自江科大)

 从图中可以看出来,

JTAG接口有5个:JTMS、JTCK、JTDI、JTDO、NJTRST

SWD接口有2个:SWCLK、SWDIO

为了节省IO口资源,通常使用的都是SWD。

无论使用的是哪种调试器,都需要注意,使用的调试接口到底是JTAG还是SWD。如下图,我选择使用DAP,在Setting中,仍然可以选择我的调试接口的类型。

所选择的调试接口类型必须和实际的调试接口(接线、使用引脚)是一致的,否则调试器不能正常工作。

在Keil中,通过上面的方式选择调试接口类型。

在STM32CubeMX中,在System Core——SYS——Debug中选择接口类型。(也可以在生成的代码中进行更改,但是不建议)

(图中除了Serial Wire和JTAG(5Pins)以外,其他的我也不知道是什么东西,不过应该用不上,不用管)(JTAG(4Pins)没有接NJTRST)

 到这里,我们大概明白JTAG和SWD是什么东西了,就是调试接口,不用管太多。但是有些人就发现了,不对啊,我们平时用的JTAG接口是20Pins的啊(也有10Pins的),怎么到这里就变成5Pins了?

这种20Pins的接口通常被称为JTAG接口。他包含了JTAG调试接口和SWD调试接口(20Pins里面有部分Pins用作JTAG调试接口,有部分Pins用作SWD调试接口)

要注意区分JTAG接口的方向,JTAG插头和JTAG接口的方向是上下颠倒的。下面的图方向都是JTAG接口的(就是ST-Link、J-Link调试器上面的接口)的方向

 具体的可以看下面这篇几文章,讲得挺不错的:

下载调试接口 SWD 和 JTAG的区别_strongerHuang的博客-CSDN博客

jtag和swd的区别_jtag和swd区别_耶稣赞我萌的博客-CSDN博客

SWD是一种串行调试接口_嵌入式历练者的博客-CSDN博客

关于JTAG,你知道的和不知道的都在这里 - 知乎

20Pins的JTAG接口可以起到防呆的作用。


总的来说,就是使用USB将电脑和调试器接到一起,再使用JTAG调试接口或者SWD调试接口将调试器和MCU接到一起,再做一些设置,就可以使用电脑对MCU下载程序和调试了。


STLink是什么:

STLink是由意法半导体(STMicroelectronics)推出的调试器,主要用于STMicroelectronics的单片机产品。对其他单片机的兼容性不是很好。

TVCC:Target VCC,不是用来给单片机供电的,而是用来检测目标的电压

如果要给目标供电,需要接VDD3.3V


JLink是什么:

而JLink是由SEGGER公司推出的调试器,可以用于多种不同厂商的单片机产品。是主流的调试器。


ULink是什么:

STLink和JLink和ULink的区别与关系:

你了解JLink、ST-Link、ULink、JTAG、SWD、SWIM的区别吗 - 知乎


程序下载(程序烧录)(ISP、ICP、IAP)

ISP、ICP、IAP是单片机程序烧录的3种方式

ISP:通过串口下载,不需要调试器,成本低,但是只能用于下载,不能调试。普通的ISP在下载过程中需要手动配置BOOT引脚来配置MCU的启动模式,如果有一键ISP电路,就不用手动配置BOOT引脚来配置MCU的启动模式。

 具体的可以看下面这篇几文章,讲得挺不错的:

单片机程序烧录的3种方式(ISP、ICP、IAP)是什么? - 知乎


猜你喜欢

转载自blog.csdn.net/weixin_63096487/article/details/132511384
今日推荐