参考文章

什么是下载调试器?

简单来说,下载调试器是将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。

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的性能通常是同类产品中最好的!

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个引脚

总结: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调试差异?相关推荐

  1. JTAG、JLink、ULINK、ST-LINK仿真器区别

    首先要了解一下JTAG. JTAG协议 JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试.现在多数 ...

  2. 使用STM32F103CBT6自制ST LINK V2-1多功能烧录器

    基于STM32的ST LINK V 2-1多功能烧录器制作 前 言 根据官方相关文档可知 ST LINK V2-1拥有以下四大功能: ST LINK V2-1制作教程和资料说明 主空部分原理图(参考) ...

  3. 整理ST Link V2 与stm32连接经过

    整理ST Link V2 与stm32连接经过 一.购买合适的ST Link V2仿真器: 二.下载ST Link V2的驱动并安装: 本人过程并没有修改安装路径,直接下一步,对于驱动最好为默认安装路 ...

  4. ST-LINK Utility + ST LINK+ STM32G474 erase chip fails

    今天遇到个诡异的问题,用ST-LINK Utility修改STM32G4XX的option byte 和下载程序时,突然发现MCU flash里的内容全为0.. 并且用full chip erase ...

  5. 安装ST LINK驱动后显示成功,但无法识别问题的解决办法之一

    如果你遇到:STM32安装ST LINK驱动后显示成功,但会显示各种"NO ST-LINK detected",或者用XCOM显示没有搜到接口以及设备管理器没有显示驱动的情况,而且 ...

  6. 使用STM32 ST-LINK Utility 烧录程序,ST LINK烧录程序,解锁FLASH

    关键词:ST LINK烧录程序,STLINK烧录程序,ST-LINK烧录程序,STLINK烧录程序,ST LINK解锁Flash 1.读取STM32内部FLASH及芯片信息 使用ST-Link连接硬件 ...

  7. st-link v2怎么连接_使用ST Link下载和进行调试输出

    ST LINK引脚定义和对应MCU引脚如下图 ​ ​ 只有下载功能,接线方式如下: ST LINK引脚序号 ST LINK引脚名称 STM引脚 19 VDD ST Link的2号TVCC引脚 1 TV ...

  8. STM32 ST link V2 固件 ST-LinkV2.J16.S4.hex

    STM32 ST link V2 固件 将一个STM32F103C8T6变成ST link V2 STM32 ST link V2 固件 ST-LinkV2.J16.S4.hex https://do ...

  9. 正点原子STM32103 战舰V3 开发板的ST LINK(SWD)接线图

    正点原子STM32103 战舰V3 开发板的ST LINK(SWD)接线如下图,5V供电旁边有个自锁开关,需要按下去(右下角有个POWER蓝色灯会点亮)才是上电的,另外另外根据实验测试使用ST LIN ...

最新文章

  1. 使用idea 在springboot添加本地jar包的方法 部署的时候本地jar没有包含的解决方法
  2. python编程学习笔记_python编程:从入门到实践学习笔记-Django开发用户账户(一)...
  3. 近世代数--整环与域--有限的整环是域
  4. 永洪Desktop安装——windows版
  5. 网络工程师面试PK--胜者为王
  6. 对于scanf的使用一点体会心得
  7. Confluent Platform 3.0支持使用Kafka Streams实现实时的数据处理(最新版已经是3.1了,支持kafka0.10了)...
  8. SpringBoot2.x 整合RabbitMQ_消费端
  9. 程序员的压力有多大?
  10. vantUI 自定义引入iconfont图标(3种风格)- 案例篇
  11. 包,logging日志模块,copy深浅拷贝
  12. 从 JavaScript 属性描述器剖析 Vue.js 响应式视图
  13. OceanBase云平台简介
  14. bzoj 2821:作诗 分块
  15. 9-14 ruby环境准备 操作
  16. mybatise 实现同一字段多模糊查询
  17. 整数规划(数学+软件)【原创】
  18. 有学生表Student, 课程表Course, 学生选课表StudentCourse
  19. javafx小球运动
  20. 基于JAVA基于Web的上门家教系统的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署

热门文章

  1. 如何开发京颐HIS系统
  2. 最新创意教师教学PPT模板
  3. hdoj1826 2-SAT问题 尽量写简洁一点
  4. 安装网卡驱动Realtek 8125
  5. 高速公路视频超速临控系统的实现
  6. C++你不知道的小技巧(失踪人口回归)
  7. emake-Linux学习20201003
  8. 智能压力测试垫对糖尿病患者真的很友好吗?-压力测试垫-新导智能
  9. 图片怎么批量压缩?进来学习一下压缩图片的好方法
  10. [编程开发工具-6]:github仓库、gitee仓库、git本地仓库混合管理的架构与详细实现步骤