JTAG 、 SWD 和 J-Link、ST-Link

article/2025/9/16 9:06:56

  • JTAG和SWD的区别与联系
    • JTAG接口
    • SWD接口
    • JTAG和SWD的区别与联系
    • J-Link和ST-Link
      • J-LINK仿真器
      • STLINK仿真器
      • JLINK和STLINK的比较与选择

JTAG和SWD的区别与联系

JTAGSWD是两种常用的用于调试和编程ARM微控制器的接口,它们都可以通过调试器(如ST-LINKJ-Link)与电脑连接,实现对目标芯片的内存、寄存器、外设等的访问和控制。

本文将介绍JTAG和SWD的基本概念、特点、优缺点和应用场景,以及它们之间的区别与联系。

JTAG接口

JTAG(Joint Test Action Group)是一种标准化的测试接口,最初用于检测电路板上的连接错误,后来被广泛应用于芯片内部逻辑测试、边界扫描、调试和编程等领域。JTAG接口通常由4或5根信号线组成,分别是:

  • TCK(Test Clock):测试时钟线,提供同步时钟信号;
  • TMS(Test Mode Select):测试模式选择线,用于控制JTAG状态机的转换;
  • TDI(Test Data Input):测试数据输入线,用于向目标芯片发送数据;
  • TDO(Test Data Output):测试数据输出线,用于从目标芯片接收数据;
  • TRST(Test Reset):测试复位线,用于复位JTAG状态机(可选)。

JTAG接口使用一种基于移位寄存器的链式结构,将多个目标芯片或模块串联在一起,形成一个扫描链。每个芯片或模块都有一个或多个扫描链单元(Scan Chain Element),每个扫描链单元都有一个或多个扫描寄存器(Scan Register),每个扫描寄存器都有一个或多个扫描单元(Scan Cell)。通过TCK、TMS、TDI和TDO四根信号线,可以实现对扫描链上任意一个扫描寄存器的读写操作。

JTAG接口使用一个16状态的有限状态机(Finite State Machine)来控制扫描链的工作模式。通过TMS信号线上的高低电平序列,可以使状态机在不同的状态之间转换。其中最重要的两个状态是:

  • Shift-IR(Shift Instruction Register):在该状态下,可以通过TDI信号线向扫描链中的指令寄存器(Instruction Register)发送指令,并通过TDO信号线从指令寄存器读取指令;
  • Shift-DR(Shift Data Register):在该状态下,可以通过TDI信号线向扫描链中的数据寄存器(Data Register)发送数据,并通过TDO信号线从数据寄存器读取数据。

不同的指令可以使扫描链进入不同的工作模式,例如:

  • BYPASS:跳过当前芯片或模块,不对其进行操作;
  • IDCODE:读取当前芯片或模块的识别码;
  • EXTEST:对当前芯片或模块进行外部测试;
  • INTEST:对当前芯片或模块进行内部测试;
  • SAMPLE/PRELOAD:采样或预加载当前芯片或模块的引脚状态;
  • USERCODE:读取当前芯片或模块的用户自定义代码。

对于ARM微控制器而言,还有一些特定的指令,例如:

  • DPACC:访问调试端口(Debug Port)寄存器;
  • APACC:访问访问端口(Access Port)寄存器;
  • ABORT:中止当前的操作;
  • JTAG-AP:选择JTAG访问端口(JTAG Access Port)。

通过JTAG接口,可以实现对ARM微控制器的调试和编程功能,例如:

  • 读写内存和寄存器;
  • 控制芯片的运行、暂停、单步执行等;
  • 设置断点和观察点;
  • 下载程序到Flash或RAM;
  • 擦除、锁定或解锁Flash;
  • 监视芯片的状态和性能。

SWD接口

SWD(Serial Wire Debug)是一种基于JTAG协议的两线调试接口,由ARM公司提出,用于替代JTAG接口,提高调试效率和降低成本。SWD接口只需要两根信号线,分别是:

  • SWCLK(Serial Wire Clock):串行时钟线,提供同步时钟信号;
  • SWDIO(Serial Wire Data Input/Output):串行数据输入输出线,用于双向数据传输。

SWD接口使用一种基于包的通信协议,每个包由三个部分组成:

  • 请求头(Request Header):8位,由调试器发送,用于指定操作类型、方向、地址等信息;
  • 应答头(Acknowledge Header):3位,由目标芯片发送,用于表示操作是否成功或出错;
  • 数据(Data):32位或64位,根据操作类型和方向,由调试器或目标芯片发送或接收。

SWD接口可以访问两种类型的端口:

  • 调试端口(Debug Port):用于连接调试器和访问端口,有两个版本,分别是SW-DP(Serial Wire Debug Port)和JTAG-DP(JTAG Debug Port),其中SW-DP只支持SWD接口,而JTAG-DP支持JTAG和SWD接口;
    在这里插入图片描述

  • 访问端口(Access Port):用于访问目标芯片的内存、寄存器、外设等资源,有多种类型,例如AHB-AP(Advanced High-performance Bus Access Port)、APB-AP(Advanced Peripheral Bus Access Port)、JTAG-AP(JTAG Access Port)等。

通过SWD接口,可以实现与JTAG接口相同的调试和编程功能,例如:

  • 读写内存和寄存器;
  • 控制芯片的运行、暂停、单步执行等;
  • 设置断点和观察点;
  • 下载程序到Flash或RAM;
  • 擦除、锁定或解锁Flash;
  • 监视芯片的状态和性能。

JTAG和SWD的区别与联系

JTAG和SWD接口都可以用于调试和编程ARM微控制器,它们之间有以下几点区别与联系:

  • JTAG接口使用4或5根信号线,而SWD接口只使用2根信号线,因此SWD接口更节省引脚资源和布线空间;
  • JTAG接口使用移位寄存器链式结构和有限状态机控制方式,而SWD接口使用包通信协议和双向数据线传输方式,因此SWD接口更高效和灵活;
  • JTAG接口支持多个目标芯片或模块的串联扫描链结构,而SWD接口只支持单个目标芯片或模块的连接方式,因此JTAG接口更适合复杂的系统测试和调试场景;
  • JTAG接口是一种通用的测试标准,不仅适用于ARM微控制器,还适用于其他类型的芯片或模块;而SWD接口是一种专门针对ARM微控制器设计的调试接口,不具有通用性;
  • JTAG接口和SWD接口在协议层是兼容的,都遵循ARM调试接口v5的规范,因此可以使用相同的调试器(如ST-LINK或J-Link)和软件工具(如STM32CubeProgrammer或Keil MDK)来操作它们;
  • JTAG接口和SWD接口在物理层是可切换的,一些ARM微控制器支持在JTAG-DP和SW-DP之间动态切换,只需要在复位后发送一个特定的序列到TMS信号线上即可;
  • JTAG接口和SWD接口在功能层是等价的,都可以实现对ARM微控制器的调试和编程功能,但由于SWD接口更高效和灵活,因此在一些性能要求较高或资源受限的场景下,SWD接口更具有优势。

在这里插入图片描述

J-Link和ST-Link

JLINK和STLINK是两种常用的用于调试和编程ARM微控制器的仿真器,它们都可以通过USB接口与电脑连接,实现对目标芯片的内存、寄存器、外设等的访问和控制。

J-LINK仿真器

JLINK是德国SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器,很多ARM芯片的接口协议是JTAG或SWD,JLINK一端接电脑USB接口,一端接CPU的JTAG或SWD接口,JLINK充当的作用就是USB转JTAG或USB转SWD,支持JTAG和SWD两种模式

在这里插入图片描述

JLINK仿真器具有以下特点:

  • 可配合IAR EWARM,ADS,KEIL,WINARM,RealView等集成开发环境;
  • 支持ARM7/ARM9/ARM11,Cortex M0/M1/M3/M4,Cortex A5/A8/A9等内核芯片的仿真;
  • 支持高速下载和调试,最高时钟频率可达50MHz;
  • 支持热插拔和自动识别目标电压;
  • 支持多种Flash编程算法和自定义算法;
  • 支持多种调试功能,如运行、暂停、单步执行、断点、观察点、追踪等。

JLINK仿真器的优缺点如下:

  • 优点:通用性强,支持的芯片和软件开发环境多;性能高,下载和调试速度快;功能全,支持多种Flash编程算法和调试功能;稳定性好,兼容性强。
  • 缺点:价格较高,正版价格在1000元以上;仿冒品较多,质量参差不齐;需要安装驱动程序和软件工具。不对呀,这好像不是他的缺点😅

STLINK仿真器

STLINK是ST意法半导体为评估、开发STM8/STM32系列MCU而设计的集在线仿真与下载为一体的开发工具,支持SWIM/JTAG/SWD三种模式。STLINK有多个版本,分别是ST-LINK/V1(已停产),ST-LINK/V2(常见于Nucleo或Discovery开发板),ST-LINK/V2-1(常见于新版Nucleo或Discovery开发板),ST-LINK/V3(最新版)。

在这里插入图片描述

STLINK仿真器具有以下特点:

  • 只支持所有带SWIM接口的STM8系列单片机和所有带JTAG/SWD接口的STM32系列单片机;
  • 可配合IAR EWSTM8/EWARM,KEIL MDK等集成开发环境;
  • 支持高速下载和调试,最高时钟频率可达24MHz(V3版);
  • 支持热插拔和自动识别目标电压;
  • 支持多种Flash编程算法和自定义算法;
  • 支持多种调试功能,如运行、暂停、单步执行、断点、观察点等。

STLINK仿真器的优缺点如下:

  • 优点:价格较低,正版价格在100元左右;专用性强,针对STM8/STM32单片机优化;功能全,支持多种Flash编程算法和调试功能;稳定性好,兼容性强。
  • 缺点:通用性差,只支持STM8/STM32单片机;性能一般,下载和调试速度不如JLINK;需要安装驱动程序和软件工具。

JLINK和STLINK的比较与选择

JLINK和STLINK仿真器都可以用于调试和编程ARM微控制器,它们之间有以下几点比较与选择:

  • 如果你使用的是STM8/STM32单片机,首选STLINK仿真器,因为它是针对这些芯片专门设计的,性价比高,功能全面,稳定可靠;
  • 如果你使用的是其他类型的ARM内核芯片,或者需要在不同类型的芯片之间切换,首选JLINK仿真器,因为它是通用型的仿真器,支持的芯片和软件开发环境多,性能高,功能强大;
  • 如果你对下载和调试速度有较高的要求,或者需要使用一些高级的调试功能,如追踪、分析等,首选JLINK仿真器,因为它的时钟频率和数据传输速率都比STLINK仿真器高;
  • 如果你对价格有较高的敏感度,或者只是做一些简单的开发和测试,首选STLINK仿真器,因为它的价格比JLINK仿真器低很多,而且也能满足基本的下载和调试需求。


~


http://chatgpt.dhexx.cn/article/4hR4wkMs.shtml

相关文章

Jlink总结记录

一,引脚图 Jlink引脚定义 1、SWD模式第15脚可接可不接(有问题再接) 2、SWD模式第1脚VCC由目标板提供参考电压,若目标板MCU电压与SWD第2脚电压相同,则可以将1脚与2脚短接,实现3线式SWD 二,注意…

JLINK识别不到芯片

文章转载:KEIL里面JLINK V9无法识别芯片,但是J-FLASH可以烧录_Jun626的博客-CSDN博客_jlink不识别芯片 今天发生一件事情,JLINK突然之间识别不到芯片。 我也算是一个JLINK老客户了,折腾了半天才搞出来,所以写个帖子记…

Jlink 接口定义

接口定义 引脚定义

国民技术MCU开发之JLink添加芯片

JLink添加国民技术芯片型号 JLink 在 V770d 版本上不再沿用之前的添加新设备的方式支持新设备下载,而是使用了一种新的方式。 去官方发布的网盘获取如下文件夹 V770d版本以前 旧添加芯片方法 下载到本地如下图示例,可以参照官方提供的文档 参照文…

redis-redis官网下载步骤(包含windows版)

1.百度搜索redis,可以看到Redis官网,如下图所示: 2.点击进入Redis官网,点击右上角Download,如下图所示: 3.点击 Stable(稳定)下的Download4.0.6,如下图所示: 4.点击会弹出…

redis下载安装教程

前言 今天做一个redis下载安装教程文章分享给大家。 操作 1、下载网址:https://github.com/MicrosoftArchive/redis/releases 2、我们选择安装版的 3、双击安装 4、下一步 5、选择一个安装路径,并打上对勾,对勾可以将redis添加到环境变量…

Redis—安装与配置

1. Redis 1.1. Redis的安装 ​ 大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包。本教程会在Linux下部署redis。 ​ Linux版本为CentOS 7。 ​ Redis的官方网站地址:https://redis.io/ 1.1.1. Windows安装 ​…

redis下载与安装(Linux环境下)

用的是阿里云的深度os Linux系统 一,下载 键入命令: wget http://download.redis.io/releases/redis-6.2.1.tar.gz 检查时候有gcc环境 gcc --version 若有gcc环境会有类似于下图的提示 没有则执行: yum install gcc 下载完毕之后&…

Redis下载安装图文教程(Windows版_超详细)

一、下载 1、Redis官网 Download | Redis 注意:官网没有提供Windows版本,只有Linux版本。 2、github下载地址 Releases microsoftarchive/redis GitHub 可选择:下载msi包或zip压缩包 这里我选择的是zip压缩包,直接通过…

redis的下载和安装详解(linux)

一、下载redis安装包 进入redis官网查看当前稳定版本: https://redis.io/download/发现此时的稳定版本是6.2.4, 此时可以去这个网站下载6.2.4稳定版本的tar包。 暂时不考虑不在windows上使用redis,那样将无法发挥redis的性能 二、上传ta…

Linux/Windows Redis的下载与安装

Redis简介 参考视频教程: https://www.bilibili.com/video/BV13a411q753?p143 Redis下载与安装 Windows版 下载地址: https://github.com/microsoftarchive/redis/releases Linux版下载地址: https://download.redis.io/releases/ 1. Window版本 1.1 redis下载 官网下载…

windows下载redis、windows安装redis、windows启动redis

一、下载并解压 下载网址:https://github.com/tporadowski/redis/releases 下载后解压并重命名文件夹为redis 二、打开redis文件夹 找到redis.windows.conf配置文件,作如下修改 protected-mode no // 将yes改为no 部分配置信息说明 bind 127.0.…

Mac上redis下载安装与配置详细版

在Mac上安装redis 1.打开官网直接下载,也可以尝试底下旧版本,但是6.0以下版本容易出错:https://redis.io/download 2.打开终端进入到下载后到目录下: cd /Users/jiale/Downloads/ 使用tar命令进行解压缩: tar -zxvf …

Linux服务器下载Redis

一、下载redis 方法一: 用redis的下载链接下载redis压缩包,该种方法只能下载最新版本 1、登录redis官网 Redis官网链接: https://redis.io/ 2、跳转redis下载页面 3、找到redis的下载链接 4、用wget下载redis压缩包 wget https://gith…

Redis的下载与安装——Windows版

资源链接Redis下载验证Redis是否可用将Redis注册成系统服务 Redis服务常用指令 资源链接 Redis官网: Redis Redis官方文档: Redis Document Redis国内文档: Redis菜鸟教程 Windows版本下载地址: Redis For Windows 码云…

Redis - Windows下载与安装

1.获取Redis在windows下的安装包 Windows版下载地址:https://github.com/microsoftarchive/redis/releases 选择Redis-x64-*.zip 2.解压zip文件与配置 2.1 选取目录 选取一个目录作为解压目录,这个目录就是你Redis程序所在位置,尽量找一…

Redis下载和安装

1.windows版本 [注意:Redis官方没有windows,只有Linux系统,这个是别人封装对应的] 下载地址: Releases microsoftarchive/redis GitHub 安装版本和解压版本 最好下载安装版本,都给你自动配置好。 安装完成后: 打…

Redis下载安装教程 (windows)

一、安装和配置Redis 前言:windows没有32位的Redis,所以32位机器的朋友考虑换一下机器。 1、windows环境下的redis需要去github上获取: https://github.com/MicrosoftArchive/redis/releases 注: 如果访问不进去官方,就需要爬墙进入 2、下…

Redis的下载与安装(windows系统)

本人电脑是win10操作系统64位 redis的下载地址:https://github.com/MicrosoftArchive/redis/releases/tag/win-3.2.100 安装步骤: 1、将下载后的压缩包解压到自己想安装的路径,本人解压路径如下: 打开cmd,进入到解…

redis官方下载安装(Windows64位)

目录: 进入官网点击 Download 菜单跳转到 github 地址下载 zip 安装包解压安装包指定配置文件安装 exe 可执行文件 1.输入官方网址:https://redis.io/ 回顶部 2.点击redis标志那一栏的Download下载: https://redis.io/download 可以看到这里…