理解 JTAG 与 Arm 核心调试:ADI 与 SWD 详解
本文揭示 JTAG 如何集成到 ARM 核心器件中,聚焦 Arm 调试接口 (ADI) 及串行线调试 (SWD) 协议。
本系列早期文章探讨了 IEEE 1149.1 标准、测试访问端口 (TAP) 控制器和 TAP 状态机。我们也回顾了常见 JTAG 引脚定义、连接器和市场上可用的调试探针阵列。
此处我们转向 ARM 生态系统,详述无处不在的 ARM 核心处理器如何通过 ADI 及其双线 SWD 变体实现 JTAG。
什么是 ARM?
ARM 指代处理器架构和庞大的知识产权组合,定义微处理器和微控制器接口。消费级 PC 通常用 x86,嵌入式系统几乎完全依赖 ARM 核心。
核心 IP 授权给硅厂商——如 STMicroelectronics、NXP 等——由其添加外设功能(I²C、SPI、ADC/DAC、USB 等)。ARM 架构分版本(ARMv2、ARMv6、ARMv7、ARMv8 等),核心品牌为 ARMx(如 ARM7)或近年按应用、实时、微控制器用例分为 Cortex-A/R/M 系列。架构版本随 Cortex 后缀命名,如 ARMv7-A 或 ARMv6-M。
ARM 调试由 CoreSight 架构管辖,涵盖 Arm 调试接口 (ADI)、嵌入式跟踪宏单元 (ETM)、高速串行跟踪端口 (HSSTP) 和程序流跟踪。ADI 为调试奠基,提供 JTAG 接口和串行线调试 (SWD) 替代方案。
Arm 调试接口 (ADI) 概览
ADI 规范定义主机调试器与一个或多个 ARM 器件间的硬件和逻辑接口。大多数现代处理器支持 ADIv5 (Arm IHI0031E),ADIv6 (Arm IHI0074C) 逐步采用中。本文聚焦 ADIv5。
ADI 引入调试访问端口 (DAP),由调试端口 (DP) 和一个或多个访问端口 (AP) 组成。DP 管理物理连接(JTAG 或 SWD)并包含内置寄存器;AP 提供对系统资源的访问,如调试寄存器、跟踪端口、ROM 表或系统内存。
ADI 支持两种 DP 类型:JTAG-DP 和 SWD-DP。AP 有三种:MEM-AP(内存映射访问)、JTAG-AP(扫描整个调试单元)和厂商特定 AP。MEM-AP 最常用。
在 JTAG 背景下,ADIv5 提供指令码集(如 EXTEST、SAMPLE、PRELOAD、INTEST、CLAMP、HIGHZ、ABORT、DPACC、APACC、IDCODE、BYPASS)和数据寄存器(ABORT、DPACC、APACC、IDCODE、BYPASS)。值得注意的是,DPACC 和 APACC 允许调试器向 DP 和 AP 寄存器发命令。
典型 DP 寄存器包括:
- CTRL/STAT — 控制和报告 DP 状态。
- DLCR — 数据链路控制,设置链路模式。
- DLPIDR — 数据链路协议 ID,指示协议版本。
- DPIDR — 调试端口识别。
- EVENTSTAT — 向外部调试器发信号事件。
- RDBUFF — DP 操作读缓冲。
- SELECT — 选择 AP 及其寄存器组。
- TARGETID — 单设备连接时识别目标。
MEM-AP 寄存器包括:
- CSW (0x00) — 控制/状态字。
- TAR (0x04) — 传输地址寄存器。
- DRW (0x0C) — 数据读/写寄存器。
- BD0–BD3 (0x10–0x1C) — 分组数据寄存器。
- CFG (0xF4) — 配置。
- BASE (0xF8) — 调试基址。
- IDR (0xFC) — 识别寄存器。
图 1 展示 ADI 接线和寄存器映射(为简洁未列出所有寄存器)。

图 1. Arm 调试接口图,汇总连接。未描绘所有 DP/AP 寄存器。
串行线调试 (SWD)
SWD 是 ARM 的双线 JTAG 替代方案,专为引脚受限器件设计。许多 Cortex-M 微控制器采用 SWD 而非完整 JTAG 以节省引脚。
SWD 用单个双向 SWDIO 引脚替代 JTAG TDI/TDO 对,消除 TMS 引脚,保留时钟(重命名为 SWCLK)。因 SWD 省去 TAP 状态机,命令经 SWDIO 串行发送,随后同一引脚用于数据传输。
通信分三阶段:包请求、确认、数据传输。全程使用奇偶校验位。序列始于起始位(高),后接 AP/DP 位、RnW 位、地址位、奇偶位、停止位(低)和停放位。请求后,目标回复 3 位 ACK。写入时,主机发送 32 位数据(LSB 优先)含奇偶位;读取时,目标驱动 32 位数据回主机。
图 2 展示读写操作时序图。

图 2. 串行线调试读写操作时序图。点击放大。
存在两个 SWD 版本:SWDv1(点对点)和 SWDv2(单主机、多目标)。版本 2 大体向后兼容,仅有微小边缘差异。
其他减引脚 JTAG 变体
除 SWD 外,IEEE 1149.7 标准定义双线 JTAG 接口。其他 IEEE 1149.x 标准(1149.4 混合信号测试、1149.6 高级数字网络)提供扩展能力,如模拟边界扫描和差分交流耦合线。
更新标准可在 IEEE 标准协会网站查阅。
结论
我们追溯 JTAG 起源,考察其物理实现,探索 ARM 核心处理器如何通过 ADI 和 SWD 协议适配 JTAG。掌握这些知识,工程师可自信调试编程嵌入式设备,根据硬件约束选择合适接口。
嵌入式
- 电感详解:类型、功能与应用
- 量子器件:超越CMOS——利用隧穿、量子点与自旋电子学构建未来电子学
- 绞缆机安全装置:海上作业的关键防护功能
- Arm为Cortex-M内核引入自定义指令支持,拓展架构灵活性
- 电池供电医疗设备可靠上电方案
- Mouser 现货供应 ADI ADIS1647x IMU:面向物联网、无人机、AR/VR 的精密导航
- ams 与 Face++ 合作加速 3D 光学感测部署,推动人脸识别落地
- Marvell深化与Arm战略联盟 推动新一代ThunderX服务器处理器
- 医疗器械技术进展追踪:传感器、连接与低功耗 SoC 推动市场增长
- 英飞凌发布 IMC300 电机控制器:集成 Arm Cortex-M0 提升灵活性
- ADI ADM2867E:集成隔离 DC/DC 的 RS-485 收发器,节省空间
- Arm收购Stream Technologies强化物联网连接与设备管理