当前位置: 首页 > news >正文

JTAG和SWD的简单了解

JTAG

  JTAG 是一种串行通信协议和硬件接口,用于:

  • 对芯片内部进行调试、控制和测试

  • 实现 SoC/FPGA/CPU 的调试功能(如断点、单步执行、寄存器访问)

  • 在系统不运行时也能访问芯片内部状态

1、JTAG接口引脚

  标准 JTAG 接口至少有以下 4~5 根引脚:

引脚接口 含义 方向
TDI Test Data In:输入数据 调试器 → 目标
TDO Test Data Out:输出数据 目标 → 调试器
TCK Test Clock:时钟信号 调试器 → 目标
TMS Test Mode Select:模式控制 调试器 → 目标
nTRST(可选) 测试逻辑复位 调试器 → 目标

 

 

 

 

 

 

 

 常见 JTAG 连接头为 10-pin 或 20-pin IDC 接头(2.54mm 排针)。

2、JTAG 内部结构原理(简化)

  每个支持 JTAG 的芯片内部有一个 JTAG 状态机(TAP Controller),用于解析 TMS/TCK 控制信号,并访问:

  • 边界扫描寄存器(用于测试 PCB 焊接情况)

  • 指令寄存器(IR)

  • 数据寄存器(DR)

  • 内部调试接口(如 ARM DAP、FPGA 配置引擎)

3、JTAG 的主要用途

  ①边界扫描(Boundary Scan)

  • 测试 PCB 上芯片与芯片之间的互连信号是否焊接良好

  • 无需上电运行系统,只需测试管脚状态

  • 适用于复杂 PCB 验证和产线测试

  ②程序下载 / 烧录

  • 通过 JTAG 下载程序到 MCU / SoC 的 Flash

  • 下载 FPGA 的配置数据(bitstream)

  ③调试处理器(Debug)

  • 控制 CPU 暂停、单步、设置断点

  • 读写寄存器和内存

  • 在系统奔溃或死机时仍可分析状态(不像串口调试那样依赖运行系统)

4、实际应用举例

  ①STM32 或 Cortex-M 微控制器:

  • 使用 JTAG 或 SWD 接口连接 ST-Link/J-Link

  • 在 IDE(如 Keil、IAR、STM32CubeIDE)中进行在线调试

  ②FPGA:

  • 使用 JTAG 将配置文件下载到 SRAM 或 Flash

  • 用来调试 RTL 逻辑(如 Xilinx ILA、SignalTap)

  ③PCBA 测试:

  • 利用边界扫描模式自动测试焊接质量(如飞针测试、自动测试仪)

5、常见JTAG调试器

调试器 支持平台 接口类型
ST-Link STM32 SWD / JTAG
J-Link 通用 ARM  SWD / JTAG
Xilinx Platform Cable FPGA JTAG
OpenOCD  多平台开源 SWD / JTAG
DAPLink ARM SWD / JTAG

 

 

 

 

 

 




 

SWD   

SWD = Serial Wire Debug

  SWD 是一种基于 串行通信的调试协议,用于与 ARM Cortex-M 系列(如 STM32、nRF、GD32、LPC)等微控制器进行调试和编程。它是 ARM Debug Access Port(DAP) 架构的一部分。

SWD 的特点

特性 描述
引脚少 只需要 2 根信号线(+ GND),适合引脚紧张的芯片或板子
低成本、高性能 替代 JTAG,硬件资源消耗更少
功能强大 支持单步调试、断点、内存/寄存器访问、Flash 编程
与JTAG兼容 多数芯片可在 SWD 和 JTAG 之间切换

 

 

 

 

 

 

1、SWD接口引脚定义

引脚名 功能说明
SWDIO 串行数据线(双向)
SWCLK 串行时钟(调试器驱动)
GND 接地(共地)
nRESET(可选) 外部复位引脚
VCC / VTref(可选) 提供目标电压参考给调试器,用于电平匹配

 

 

 

 

 

 

 

注意:SWDIO 是双向数据线,一般需要接一个 上拉电阻(通常为 10kΩ 到 47kΩ)。

 2、SWD接口原理(简图)

调试器端                        目标 MCU
┌────────┐                   ┌────────────┐
│ SWDIO ├───────────────►───┤ SWDIO(PA13)│
│ SWCLK ├───────────────►───┤ SWCLK(PA14)│
│ GND   ├────────────────────┤ GND        │
│ nRESET├───────►(可选)──────┤ NRST       │
└────────┘                   └────────────┘

3、使用 SWD 的常见工具

调试器 支持平台 接口
ST-Link STM32、GD32 等 SWD
J-Link 通用 ARM SWD/JTAG
DAPLink 通用 ARM SWD
CMSIS-DAP 标准开放协议 SWD
OpenOCD 开源调试软件 SWD/JTAG

 

 

 

 

 

 

 

4、SWD的实际用途

  • 向 MCU 下载程序(Flash 编程)

  • 设置硬件断点、单步调试

  • 实时变量查看(watch/monitor)

  • 与 IDE(如 Keil、STM32CubeIDE)联动调试

  • 在 MCU 死机时通过 SWD 仍可访问寄存器与内存

许多开发板的 SWD 接口用来烧录程序到 Flash,如 STM32 的 .hex.bin 文件。使用 ST-Link Utility 或 STM32CubeProgrammer,即可通过 SWD 烧写目标 MCU。

SWD 的使用注意事项

  • 上电后第一时间初始化 SWDIO/SWCLK,避免被程序占用成 GPIO

  • 出现无法连接时,可尝试使用 nRESET 强制复位进入 Bootloader

  • 若程序配置了 SWD 引脚为普通 IO,可能需要进入系统 Boot 模式重新解锁

SWD 和 JTAG 的对比

特性SWDJTAG
信号线数 2(SWDIO, SWCLK) 4~5(TMS, TCK, TDI, TDO, nTRST)
调试功能 支持(断点、单步、寄存器访问) 支持
节省 IO
边界扫描功能 ❌(不支持) ✅(支持)
ARM Cortex-M 适配 ✅(专属) ✅(也支持)
FPGA 适配
http://www.wuyegushi.com/news/725.html

相关文章:

  • 齐治堡垒机资深工程师认证通关
  • 7.26每周总结
  • 7.19每周总结
  • day24
  • docker安装与镜像打包部署
  • AirSim在UE4中运行时显示第一人称捕获图像窗口
  • ArKTS:List 数组
  • 笔记:割空间、环空间、切边等价
  • 15Java基础之内部类
  • 第四天
  • 简单图论
  • minio 对象存储服务
  • 【计算几何】洛谷 P3256 [JLOI2013] 赛车
  • 旋转和扫掠
  • 投影和相交
  • 习题-笛卡尔积
  • 里革断罟匡君
  • java第二十七天
  • JAVA的学习
  • Luogu P8085 [COCI 2011/2012 #4] KRIPTOGRAM 题解 [ 蓝 ] [ KMP ] [ 哈希 ]
  • Burp Suite宏与会话处理实战:突破CSRF令牌防护
  • 2123D-Binary String Battle
  • 观后感
  • 第十三篇
  • [题解]P4116 Qtree3
  • 第二十五天
  • JAVA语言学习总结(第26天)
  • 初遇前端
  • 【复习笔记】莫队
  • 初遇JDBC