作为嵌入式工程师,下载调试器都应该知道,但你真正了解其 SWD 和 JTAG 接口的含义和区别吗?
1、什么是下载调试器
简单来说,下载调试器是将 PC(例如通过 USB 协议)发送的命令转换为 MCU(负责 MCU 内部外围设备)理解的语言(例如 SWD 或 JTAG 协议)的设备,加载代码并精确控制执行。
2、调试器协议标准
1. 什么是标准?
简单来说,标准是一组规则和协议,特定行业中的每个参与者都同意遵循并执行。
2. 调试器协议混乱现象
在 SWD 和 JTAG 之类的协议出现之前,调试器及其协议一片混乱,每个 MCU 制造商都提出了自己的专有方法,将代码加载到他们的 MCU 上。制造商每次发布 MCU 时,嵌入式软件工程师都需要了解其专有协议,以将代码加载到微控制器中。
而且,调试适配器很昂贵,因为制造商实际上并没有竞争者可以使调试适配器与他们的协议相匹配,因为协议是专有的。它们昂贵的另一个原因是由于体积不足,因为它们只能将调试适配器出售给使用它们制造的 MCU 的公司(工程师)。
不同协议还会导致开发成本增加,比如:你在设计的板上有来自 4 个不同制造商的 4 种芯片,并且希望对其进行一些自动化测试以提高生产过程的效率。但是,由于所有电路板都有自己的协议,因此您需要制作一个能适应复杂性的超级复杂的生产代码,并且需要在电路板上的测试点安装 4 个不同的调试器,从而增加了成本,生产时间和编程时间。
3. 制定协议各种下载调试不同会导致几个问题:
投入更多的学习时间
增加购买下载调试的成本
生成测试效率低下
为了解决这一问题,各大 MCU 制造和生产商的工程师们就针对调试制定了一些规范协议。
3、JTAG 标准
JTAG:Joint Test Action Group,即联合测试行动小组。
该小组于 1980 年后期开始讨论,并于 1990 年正式发布了解释 IEEE 标准的文档。(IEEE 代表电气与电子工程师协会,是一个国际组织,其中发布了所有标准,如 WiFi,蓝牙等)。他们提出的协议在 1990 年被记录在 IEEE 1149.1 中。后来对该文档进行了修订和完善,在撰写本文时,最新标准是 IEEE 1149.7。
JTAG 基本上带有 5 个引脚:TDI:Test Data In。串行输入引脚 TDO:Test Data Out,串行输出引脚 TCK:Test Clock,时钟引脚 TMS:Test Mode Select,模式选择(控制信号)引脚 TRST:Test Reset,复位引脚
4、SWD 标准
SWD:Serial Wire Debug,代表串行线调试,是 ARM 设计的协议,用于对其微控制器进行编程和调试。
由于 SWD 专门从事编程和调试,因此它具有许多特殊功能,通常在其他任何地方都无法使用,例如通过 IO 线将调试信息发送到计算机。另外,由于它是 ARM 专门为在其设备中使用而制造的,因此 SWD 的性能通常是同类产品中最好的!
SWD 引脚 SWDIO:Serial Wire Data Input Output,串行数据输入输出引脚 SWCLK:Serial Wire Clock,串行线时钟引脚
5、SWD / JTAG 的各种区别
市面上有很多兼容 SWD 和 JTAG 协议的 MCU 和调试适配器,他们通常通过具有一组下载调试引脚,来实现下载和调试功能,这些引脚内部复用到 SWD 外设和 JTAG 外设。
1. 共享引脚
SWD 的引脚在一定条件下可以和 JTAG 引脚复用,目前针对 JTAG 和 SWD 的连接器比较多,比如 20pin 的接插件:
当然,也有 10pin 的:
2.SWD / JTAG 各自优势 SWD 协议的优势:
使用引脚更少,只需 SWDIO 和 SWCLK 两个引脚
SWD 具有特殊功能,例如通过其 I / O 线打印调试信息
与 JTAG 相比,SWD 在速度方面具有更好的整体性能
JTAG 协议的优势:
JTAG 不仅限于 ARM 芯片,在 ARM 之外的芯片也受支持,比如大家熟悉的 MSP430
JTAG 具有更多多种用途,用于编程,调试和生产测试
JTAG 是一个独立的团体,他们会随着协议的发展而发展
3. 什么时候选择 SWD 而不是 JTAG
如果您的原理图 / 电路板设计足够简单,可以在没有 JTAG 功能的情况下进行测试
调试性能比生产测试更重要,你的设备专注于服务研究而不是批量生产!
MCU 在尺寸方面有限制,SWD 可以节省空间
你的硬件设计太复杂,MCU 没有多余的 2 个引脚
6、总结:SWD / JTAG 对比
下面用一种图来总结: