上一篇 下一篇
主流调试器的区别 KEIL 与 AC5 和 AC6


SWD 和 JTAG

大多数现代 Cortex-M 芯片推荐使用 SWD。

几乎所有主流架构的 MCU 都支持 SWD 和 JTAG 接口。

SWD(Serial Wire Debug)和 JTAG(Joint Test Action Group)是嵌入式系统中两种最常见的 调试与编程接口,尤其是在 STM32、ARM Cortex-M 等 MCU 开发中广泛使用。它们都能实现程序烧录、单步调试、断点设置等功能,但在引脚数量、通信方式、性能和适用场景上有显著区别。

1)基本概念

名称 全称 中文含义 简介
JTAG Joint Test Action Group 联合测试行动组 一种标准的测试与调试接口,起源于 IEEE 1149.1 标准,历史悠久,功能强大
SWD Serial Wire Debug 串行线调试 ARM 公司为 Cortex-M 系列推出的一种精简型调试接口,专为引脚资源紧张的 MCU 设计

2)引脚对比(核心区别)

尽管 ST-Link 的引脚上有 3.3v,但 3.3v 并非是必须的,但 GND 是必须要连的。J-Link 也类似。

① JTAG 引脚(5 根核心线):

引脚名 方向 说明
JTCK Input Test Clock,时钟信号,同步数据传输
JTMS Input Test Mode Select,模式选择,控制状态机
JTDI Input Test Data In,数据输入(PC → MCU)
JTDO Output Test Data Out,数据输出(MCU → PC)
JnTRST Input(可选) Test Reset,复位 JTAG 逻辑(可省略)
JnSRST / JNRST I/O(可选) System Reset,系统复位引脚(通常单独引出)

⚠️:J-Link 通常使用 5~7 根线(含 GND、NRST),其中 TDI 和 TDO 是单向的。nTRST 可省略,由软件复位代替。

② SWD 引脚(2 根核心线 + 1 根可选)

引脚名 方向 说明
SWCLK Input Serial Wire Clock,等同于 TCK,时钟信号
SWDIO Bidirectional Serial Wire Data I/O,双向数据线(替代 TDI + TDO)
nRESET / NRST I/O(可选) 复位引脚,用于复位 MCU(通常单独引出)
SWO Output(可选) Serial Wire Output,用于输出调试日志(ITM)

⚠️:ST-Link 最少只需 3 根线(2 根信号线 SWCLK、SWDIO + GND)。其中 SWDIO 是双向的,通过时序切换实现读写。 SWO 是额外引脚,用于输出 printf 日志等,不参与调试控制。

③ 引脚对比表

功能 JTAG SWD
时钟线 TCK SWCLK
数据输入 TDI SWDIO(双向)
数据输出 TDO SWDIO(双向)
模式选择 TMS SWDIO(复用)
复位线 nTRST(可选) 无专用,使用 NRST
调试日志输出 无(需 ETM) SWO(可选)
最小引脚数 5(TCK, TMS, TDI, TDO + GND) 3(SWCLK, SWDIO + GND)
是否支持热插拔 较差 较好

3)工作原理对比

  • JTAG:基于 TAP 控制器的串行状态机

    • JTAG 使用一个 TAP(Test Access Port)控制器,通过 TMS 信号在 16 个状态间切换。

    • 数据通过 TDI 输入,TDO 输出,按位移位传输。

    • 支持多个设备串联(Daisy Chain),用于复杂 PCB 的边界扫描测试。

    • 优点:适合复杂系统、支持多设备测试。

    • 缺点:引脚多、速度慢、配置复杂。

  • SWD:ARM 专用的精简协议

    • SWD 是 ARM 为 Cortex-M 系列设计的专用调试协议

    • 使用 SWDIO 双向传输,通过“请求-响应”机制通信。

    • 协议更高效,传输速度通常比 JTAG 快

    • 不支持多设备串联,但足以满足单 MCU 调试需求。

    • 优点:引脚少、速度快、功耗低、适合小型 MCU。

    • 缺点:仅支持 ARM Cortex-M,不用于通用测试。

4)功能对比

功能 JTAG SWD
✅ 支持烧录程序
✅ 支持单步调试
✅ 支持硬件断点
✅ 支持查看寄存器/内存
✅ 支持多设备串联(Daisy Chain)
✅ 支持边界扫描测试(Boundary Scan)
✅ 支持 SWO / ITM 日志输出 ✅(SWO 引脚)
✅ 引脚数量 多(5+) 少(2+)
✅ 传输速度 中等 更快(相同时钟下)
✅ 适用 MCU 类型 所有支持 JTAG 的芯片 ARM Cortex-M 系列为主

5)举例

板子上的 JTAG/SWD 引脚(以 STM32F103ZET6 为例):

在这里插入图片描述


Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐