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