JTAG与SWD调试


41

浏览完本文后,我想知道SWD调试比JTAG调试有什么好处?

我知道SWD使用较少的电线/引脚,占用较小的空间等。但是,如何在硬件编程器/调试器设备的性能,功能和成本方面发挥作用呢?像Eclipse这样的IDE仍然可以断点/暂停代码并逐步执行代码吗?

可以像我相信可以在JTAG中那样使用SWD接口对ARM芯片进行编程吗?


具有最新内核(例如Cortex)的基于ARM的芯片可以通过SWD进行编程和调试。
B皮特

@BPete:我发现使用SWD很难调试使用睡眠模式的基于ST的芯片。我们目前的电路板没有可用于JTAG的引脚,但是我想知道JTAG在这方面是否会更好?
2013年

2
该(SWD)看起来有点像TI在其MSP430处理器的子集上放置的间谍双线接口。它是两线制的类似JTAG的器件(加上电源和地),其中SBWTCLK和SBWTDIO多路复用在示例器件的两个非GPIO引脚(TEST和RST / NMI)上。由EZ430 devkit支持。而且它(SBW)确实支持步进和断点!我不知道TI自己的ARM是否具有相同的接口,但是如果它们之间有足够的通用性来共享编程/调试工具,那将很有趣。
Brian Drummond 2013年

您的文章链接已失效,但是也许这是文章?arm.com/files/pdf/Serial_Wire_Debug.pdf
Gabriel Staples

Answers:



37

电气上

  • 引脚数
    • JTAG需要4条信号线
    • SWD只需要2条信号线
    • IEEE 1149.7中指定的2线制JTAG接口可减少引脚数,但在许多IC上似乎并不广泛。它还减少了带宽。
  • 拓扑结构
    • JTAG将菊花链配置用于芯片之间的数据线。因此,JTAG的速度受到链上最慢芯片的限制。它的复位线和清除线是总线(未链接),但是允许通过SWDJ-DP进行互操作(请参见下面的讨论)。
    • 2线制JTAG支持星形拓扑,但并不经常使用。
    • SWD允许采用星形拓扑

功能上

  • SWD是专门针对微调试而设计的ARM特定协议。
  • JTAG(联合测试行动小组)主要用于芯片和电路板测试。它用于边界扫描,检查生产中的芯片/板中的故障。随着时间的推移,调试和刷新Micros是其应用程序的发展。
  • 除了ARM,JTAG还用于多种微控制器/处理器体系结构。

一般讨论;一般交流

截至2017年,JTAG已得到非ARM微处理器,编程器和生产线的广泛支持。可以以FT232H [*]分支和其他此类编程设备的形式廉价地购买JTAG 编程器。但是,SWD在调试ARM芯片的速度和其他方面具有明显的优势。

由于测试中的JTAG和调试中的SWD的用途不同,ARM通过其CoreSight技术提供了SWJ-DP(串行线/ jtag调试端口),该技术将SWD引脚映射到JTAG的时钟和复位线上。因此,SWJ-DP允许在相同的物理连接上使用两种协议,尽管不必同时使用同一协议或使用相同的编程器,因为JTAG和SWD必须在时间上进行多路复用。

有用的参考



7

对于OP来说,我可能为时已晚,但是对于其他有相同问题的人来说,它可能会很有用。因此,我们开始(个人经验):可以使用SWD进行编程和调试(获取内存/寄存器映射,中断,从特定点运行等)。通过J-Link EDU在GDB上使用Eclipse,价格约为50欧元。有一些错误(通过调试器重置目标,有时无法连接或获取地图),但是一旦您熟悉了它,它便相对便宜且可用。


7

旧问题,但没有一个答案解决性能比较问题。尽管SWD和JTAG之间的功能集(使用CoreSight DAP时)足够接近,但是SWD序列比等效的JTAG序列短大约10%。

在大多数情况下(尤其是在带宽最重要的情况下,流式读取或写入)不会损失数据带宽。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.