作为一个嵌入式工程师,你可能知道下载调试器的概念,但你是否真正理解它们之间的SWD和JTAG接口的含义和区别呢?
下载调试器是什么
简单来说,下载调试器是一种设备,它将来自个人电脑(通过USB协议等)发送的命令转换为微控制器单元(MCU)可以理解的语言(如SWD或JTAG协议),用于加载代码并精确控制执行。
调试器协议标准
1. 什么是标准?
简而言之,标准是一组被特定行业中的每个参与者同意遵循和执行的规则和协议。
2. 调试器协议的混乱现象
在SWD和JTAG等协议出现之前,调试器及其协议处于一片混乱之中。每个微控制器制造商都推出了自己的专有方法,用于将代码加载到他们的MCU上。这给嵌入式软件工程师带来了不便,每次有新的微控制器发布时,他们都需要学习并理解该制造商的专有协议,以实现代码的加载。
此外,调试适配器价格昂贵,因为制造商实际上没有竞争对手可以提供与他们协议兼容的调试适配器,因为这些协议是专有的。另一个导致价格昂贵的原因是体积小,它们只能将调试适配器销售给使用它们制造的MCU的公司或工程师。
不同的协议也会增加开发成本。例如,如果您在设计的电路板上使用了来自四个不同制造商的四种芯片,并且希望对它们进行一些自动化测试以提高生产过程的效率。然而,由于每个电路板都拥有自己的专有协议,您需要编写复杂的生产代码以适应这种复杂性,并且需要在电路板上的测试点安装四个不同的调试器,增加了成本、生产时间和编程时间的压力。
3.制定协议
各种下载调试不同会导致几个问题:
-
投入更多的学习时间 -
增加购买下载调试的成本 -
生成测试效率低下
为了解决这一问题,各大MCU制造和生产商的工程师们就针对调试制定了一些规范协议。
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,复位引脚
SWD标准
SWD:Serial Wire Debug,代表串行线调试,是ARM设计的协议,用于对其微控制器进行编程和调试。
由于SWD专门从事编程和调试,因此它具有许多特殊功能,通常在其他任何地方都无法使用,例如通过IO线将调试信息发送到计算机。另外,由于它是ARM专门为在其设备中使用而制造的,因此SWD的性能通常是同类产品中最好的!
SWD引脚
SWDIO:Serial Wire Data Input Output,串行数据输入输出引脚
SWCLK:Serial Wire Clock,串行线时钟引脚
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个引脚
总结:SWD / JTAG对比
下面用一种图来总结:
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !