如何在 Linux 下使用 SWD 对 ARM MCU 进行编程?

How can I program an ARM MCU using SWD under Linux?

我正在使用 STM32 ARM Cortex MCU。它支持称为 SWD(串行线调试)的协议。环顾网络,我发现 arm-none-eabi-gcc 这似乎是一个不错的编译器,但在硬件方面我还没有真正找到使用它的正确方法。

我没能找到 Linux 上正式支持的 SWD 编程器/调试器。我发现的最接近的是 stlink,它看起来像是一个维护不善的项目。如果我想使用这个 MCU 并想在我的计算机上使用 Linux,你能告诉我正确的方法是什么吗?

嗯,texane/stlink is a properly maintained project and I use it on daily basis. Segger J-Link supports Linux也是。 我有 GCC ARM 工具链设置,默认使用 eclipse IDE。我为 JTAG 和 SWD 接口同时使用 JLinks 和 STLinks。 前段时间我在我的博客上写了几篇文章,如果你愿意,我可以post链接。

OpenOCD 受支持,可靠并且在 Linux 和 Windows 上同样有效。我每天都用它来使用 SWD(不是 JTAG)对 F0、F1 和 F4 设备进行编程和调试。

如果您是 Eclipse 用户,那么 GNU ARM Eclipse plugin will even automate the OpenOCD command line for you. I wrote a number of articles hoping to help new users on my blog.

的最新版本

在硬件方面,如果您使用的是发现板,那么您已经获得了必要的 ST-Link 支持,不需要任何其他东西。否则会有官方的 ST-Link/v2 加密狗和知名拍卖网站上的一些狡猾的克隆。