浏览完这篇文章后,我想知道 SWD 调试比 JTAG 调试有什么好处?
我了解 SWD 使用更少的电线/引脚,占用更少的空间等。但是它在硬件编程器/调试器设备的性能、功能和成本方面如何发挥作用?代码仍然可以在 Eclipse 等 IDE 中被断点/暂停并逐步执行吗?
可以像我相信可以在 JTAG 中那样使用 SWD 接口对 ARM 芯片进行编程吗?
浏览完这篇文章后,我想知道 SWD 调试比 JTAG 调试有什么好处?
我了解 SWD 使用更少的电线/引脚,占用更少的空间等。但是它在硬件编程器/调试器设备的性能、功能和成本方面如何发挥作用?代码仍然可以在 Eclipse 等 IDE 中被断点/暂停并逐步执行吗?
可以像我相信可以在 JTAG 中那样使用 SWD 接口对 ARM 芯片进行编程吗?
截至 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 欧元。有一些错误(通过调试器重置目标,有时不会连接或获取地图),但是一旦你熟悉了它的怪癖,它就相对便宜且可用