【问题标题】:How can I program an ARM MCU using SWD under Linux?如何在 Linux 下使用 SWD 对 ARM MCU 进行编程?
【发布时间】:2015-07-22 23:01:18
【问题描述】:

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

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

【问题讨论】:

    标签: linux arm microcontroller cortex-m swd


    【解决方案1】:

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

    如果您是 Eclipse 用户,那么最新版本的 GNU ARM Eclipse 插件甚至会为您自动执行 OpenOCD 命令行。我写了很多文章希望对my blog上的新用户有所帮助。

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

    【讨论】:

    • 谢谢! OpenOCD 确实听起来很有希望。它是否适用于 ST-link 调试器硬件?除了STM32之外,它还支持其他控制器吗?
    • 是的,我每天都将它与官方 ST-Link 硬件一起使用(并且我使用狡猾的克隆成功地对其进行了测试)。它支持各种硬件,而不仅仅是 STM32。
    • 谢谢安迪。我会看看你博客上的文章。 :)
    • 我已经尝试过 OpenOCD,但它完全不可靠,有时断点不起作用。如果有多个核心,它会变得混乱。有时它似乎会缓存一些结果,而观察点根本不起作用。闪烁几乎总是失败和this issue appears to be known and not fixed for 8+ years。那是 Raspberry Pi Pico,但我无法想象它是其他芯片的面糊。
    【解决方案2】:

    嗯,texane/stlink 是一个维护得当的项目,我每天都在使用它。 Segger J-Link supports Linux 也是如此。 我有 GCC ARM 工具链设置,Eclipse 作为我的默认 IDE。我对 JTAG 和 SWD 接口都使用了 JLinks 和 STLinks。 前段时间我在博客上写了几篇文章,如果您愿意,我可以发布链接。

    【讨论】:

    • Stlink 在 github 上公开了一百多个 bug,其中许多甚至作者都没有回答。我不会称之为适当的维护。无论如何,请务必发布您博客中的链接。 :)
    猜你喜欢
    • 2021-06-03
    • 1970-01-01
    • 2019-04-17
    • 2016-01-24
    • 1970-01-01
    • 2017-04-16
    • 2021-04-24
    • 1970-01-01
    • 2020-02-15
    相关资源
    最近更新 更多