【发布时间】:2015-09-29 01:50:21
【问题描述】:
我使用 SWD 在 stm32 芯片中加载固件和调试。它使用 3 个引脚:SWCLK(TCK)、SWDIO(TMS) 和 GND。
我可以使用 SWD 接口中未使用的其他 JTAG 引脚吗:
(TDI, TDO, TRST)
为了自己的目的,同时保留在芯片中刷新固件的可能性?
【问题讨论】:
我使用 SWD 在 stm32 芯片中加载固件和调试。它使用 3 个引脚:SWCLK(TCK)、SWDIO(TMS) 和 GND。
我可以使用 SWD 接口中未使用的其他 JTAG 引脚吗:
(TDI, TDO, TRST)
为了自己的目的,同时保留在芯片中刷新固件的可能性?
【问题讨论】:
实际上 SWD 只使用两个引脚 SWD 和 SCLK。 GND 很常见,不能用于任何其他目的。 SWO - 仅当您使用(并且需要)半主机等功能时
如果您运行 CubeMx - 您将看到,如果您选择 SWD,则所有其他 JTAG 引脚都可用于一般用途。
【讨论】:
嗯,这可能取决于你的调试器的能力......
但总的来说:是的,您可以仅通过 SWD 进行闪存编程,并将剩余的 JTAG 引脚用于其他目的。例如。劳特巴赫调试器可以做到。
但是,如果您的调试器工具支持跟踪记录,我不会将 TDO 引脚用于您的应用程序,因为该引脚通常可以用作 SWD 模式下的 SWO 跟踪引脚。 (使用 Cortex-M3/M4 或 M7)
【讨论】:
我只是想补充一点,如果您在调试器设置中选择在重置下连接,则始终可以使用 JTAG 或 SWD 连接到 stm32。
当您有意或无意地重新配置 JTAG 或 SWD 引脚时,这是必要的。但是,它还取决于连接到这些引脚的硬件,因此有时它不起作用。
尽管如此,它应该足以加载固件。
【讨论】:
重置后,uC 将准备好通过 SWD 或 JTAG 连接,这完全取决于您的调试器(因为所有引脚都将在默认配置中),但是当您的应用程序重新配置调试器使用的 IO 之一时接口你失去了通过这个接口连接到核心的能力。
如果您不使用任何 SWD 引脚(CLK 和 DIO)您将能够随时连接到您的目标,甚至无需重置 uC,因为这些引脚将准备好连接随时
但是,如果您将其中一个引脚重新配置为例如读取按钮,则需要在代码运行之前重置目标并连接到它,在这种情况下,您需要在调试接口中添加连接到 RESET 引脚,因此调试器会重置目标并在之后立即连接到它。 (很明显,你不能在调试过程中按下按钮) 这就是为什么将 RESET 添加到调试器连接总是有用的原因
【讨论】:
是的,您可以使用其他 JTAG 引脚。 如果您不需要调试,您也可以在闪存芯片后使用 SWD 引脚,但在这种情况下,您很可能需要从系统内存启动以进行芯片重新编程。
【讨论】: