单片机开发工具篇:(三)调试与编程接口 SWD 和 JTAG 的对比
详细解释了 SWD 和 JTAG 的区别,包括引脚、功能等等
| 上一篇 | 下一篇 |
|---|---|
| 主流调试器的区别 | 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 为例):

更多推荐
所有评论(0)