下载器与调试接口
下载器/调试器本质是 USB → SWD/JTAG 的协议桥,干的都是同一件事:把 PC 端命令转成 SWD/JTAG 时序送进芯片。
统一下载原理
Cortex-M 芯片内部已集成调试硬件(CoreSight),下载器只是「外接的桥」,本身不懂芯片:
PC(Keil/Ozone/pyOCD) ──USB──▶ 下载器(J-Link/ST-Link/DAP) ──SWD/JTAG──▶ 芯片 DAP ──▶ 内核/内存
| 环节 | 作用 |
|---|---|
| 内核调试单元 | DWT(数据观测)、ITM(跟踪)、FPB(硬件断点)、ETM(指令跟踪),ARM 已集成在内核里 |
| DAP 调试访问端口 | 芯片对外的调试入口(SW-DP 或 JTAG-DP + AHB-AP),下载器就接它 |
| AHB-AP | 经它访问内存总线 → 直接读写 Flash/RAM/外设寄存器 |
| 下载器 | 仅协议转换 USB↔SWD/JTAG,不参与译码 |
- 烧录流程:经 AHB-AP 写 Flash 控制寄存器 → 擦除 → 分页写入 → 校验。
- 调试流程:写内核调试寄存器(DHCSR 暂停、DCRSR/DCRDR 读改寄存器、FPB 设断点)→ 单步/继续 → ITM/SWO 输出跟踪。
各下载器对比
| 下载器 | 厂商 | 接口 | 支持芯片 | 生态/软件 | 参考价 |
|---|---|---|---|---|---|
| J-Link(EDU/Base/Plus/Ultra+/Pro) | SEGGER | SWD+JTAG | 几乎全平台 ARM + RISC-V | RTT/Ozone/J-Flash/J-Scope,各 IDE 首选 | EDU ~¥500(限个人学习)、Base ~¥2000、Ultra+ ~¥9000、Pro 更高;野版 V9 ~¥30 |
| ST-Link(V2/V3) | ST 官方 | SWD(+SWIM/JTAG) | 仅 STM8/STM32 | STM32CubeProgrammer、Keil/IAR | V2 ~¥15-40、V3 ~¥150 |
| DAP-Link | ARM(开源) | SWD+JTAG | ARM 全系 | pyOCD/OpenOCD、Mbed 拖拽烧录、跨平台 | 开源/克隆 ~¥15-50 |
| ICE / JTAG ICE | Atmel 等 | JTAG | AVR/老芯片 | AVR Studio | 已停产,二手老工具 |
价格为参考区间,随时波动。
J-Link
SEGGER 出品,嵌入式调试的事实标准,核心卖点是软件生态强而非硬件。
版本线(从低到高):
| 版本 | 定位 |
|---|---|
| EDU / Mini | 学习/个人(限非商用),Mini 为板载小板 |
| Base | 入门量产 |
| Plus | 带 RTT 源码授权 + 免费 J-Link 序列号服务 |
| Ultra+ | 高速 + 以太网(J-Link RTT over Ethernet) |
| Pro | 最高速 + 以太网 |
生态软件:RTT(实时打印,见 RTT)、Ozone(图形调试,见 Ozone调试器)、J-Flash(量产烧录)、J-Scope(变量实时波形)、FlashBP(Flash 无限断点)。
⚠️ 野版(克隆)风险:SEGGER 会检测克隆固件,正版软件升级后克隆会报
The connected J-Link is defective变砖。学习建议 EDU 或确认能关升级的老版本。
ST-Link
ST 官方,便宜,很多 Nucleo/Discovery 板载。只支持 ST 系列(STM8/STM32)。
| 版本 | 接口 | 特点 |
|---|---|---|
| V2 | SWD + SWIM(STM8) | USB 全速,SWD ~4MHz,最便宜 |
| V3 | SWD + JTAG + VCP 虚拟串口 | USB 高速,更快,自带虚拟串口 |
软件用 STM32CubeProgrammer;Keil/IAR 也直接认。
DAP-Link
ARM Mbed 官方开源,基于 CMSIS-DAP 标准。
- 拖拽烧录:插上电脑变 U 盘,把 .bin/.hex 拖进去即烧录,免 IDE。
- 跨平台不锁厂:pyOCD / OpenOCD 通用,不绑定 Keil/IAR。
- 便宜、可 DIY,网上克隆多;CMSIS-DAP v2 用 WinUSB 走高速 Bulk。
ICE(在线仿真器)
In-Circuit Emulator,传统概念:早期芯片没有片上调试单元,用一个硬件仿真器「顶替」目标 CPU,插到电路板 CPU 插座上,能无侵入观测总线、设硬件断点。
- 现代 Cortex-M 已内置 CoreSight 调试,ICE 被片上调试取代。
- Atmel AVR 时代的「JTAG ICE mkII」名字带 ICE,实则是 JTAG 调试器,不是真 ICE。
SWD 与 JTAG 调试接口
| 维度 | JTAG | SWD |
|---|---|---|
| 全称 | Joint Test Action Group | Serial Wire Debug |
| 引脚数 | 4~5:TCK、TMS、TDI、TDO(+TRST) | 2:SWCLK、SWDIO(+可选 SWO) |
| 数据方向 | TDI/TDO 分开、全双工 | SWDIO 单线半双工 |
| 速度 | 标准,受移位链限制 | 更快 |
| 应用 | 通用:芯片测试、边界扫描、FPGA/CPLD | ARM Cortex-M 专用 |
| 现状 | Cortex-M 上较少用 | Cortex-M 默认/主流 |
SWD 引脚:
| 引脚 | 说明 |
|---|---|
| SWDIO | 数据(半双工) |
| SWCLK | 时钟 |
| SWO | 跟踪输出(可选,ITM 数据,配合 J-Link SWO Viewer 看 printf) |
| nRESET | 复位(可选) |
| GND / VCC | 共地 + 参考电压(目标板通常自供电,SWD 只采参考电压) |
补充要点:
- SWD 是 ARM 为省引脚设计的「JTAG 精简版」;两者可复用引脚(JTAG 的 TMS→SWDIO、TCK→SWCLK),Cortex-M 芯片默认两者都支持。
- 下载器必须与目标板共地,且电平匹配(3.3V / 5V)。