JTAG 与 SWD 调试

电器工程 标记 调试 swd
2022-01-09 02:46:06

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

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

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

4个回答

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

功能上

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

一般讨论;一般交流

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

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

有用的参考资料

SWD 应该能够对 ARM 芯片组进行编程,而且您可以调试和添加断点。SWD 的另一个好处是您可以将串行线查看器用于您的 printf 语句进行调试。我只将它与 Keil 编译器一起使用。

老问题,但没有一个答案涉及性能比较。尽管 SWD 和 JTAG 之间的功能集(使用 CoreSight DAP 时)非常接近,但 SWD 序列比等效的 JTAG 序列大约短 10%。

在大多数情况下,数据带宽没有损失(特别是带宽最重要的流式读取或写入)。

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