【问题标题】:No SWV or ITM with st-link v2 emulator programmer and stm32f103c8t6没有带有 st-link v2 仿真器编程器和 stm32f103c8t6 的 SWV 或 ITM
【发布时间】:2015-11-20 04:42:33
【问题描述】:

我买了一个便宜的“st-link v2 仿真程序员”和一个 Ebay 的 STM32f013C8T6。在 Windows 8 上使用 Atollic 和 MCU 的 SWD 接口,我能够上传和运行代码、设置断点和观察变量,但我不能在 ITM 或 SWV Trace 上使用 printf。

我也尝试过使用 Nucleo stm32l152re 板的正版 ST-LINK v2,结果相同。

ST-LINK与MCU的连接如下:

ST-LINK - MCU:

SWDIO - SWDIO, 地线 - 地线, SWCLK - SWCLK, 3.3V - 3.3V

ebay ST-LINK 上未使用的引脚: RST,游泳

正品 ST-LINK 上未使用的引脚: NRST, SWO

我们将不胜感激,如果需要,我很乐意提供更多信息。

【问题讨论】:

    标签: trace stm32 swd


    【解决方案1】:

    尝试阅读Adding Trace support to ST-Link clones。必须在硬件级别修改常见的廉价 ST-Link 克隆,以公开 ITM 跟踪所依赖的 SWO 引脚。 (然后,当然,您还必须连接该信号。)

    我有两个不同的 ST-Link 克隆,它们都没有连接到 PA10 引脚,就像链接的文章中一样。

    【讨论】:

      【解决方案2】:

      我知道这个问题很老了。我希望你找到了解决方案,但我仍然想投入两分钱,因为我遇到了同样的问题。

      我的理解是,对于 SWV 功能,您需要连接 SWO 引脚。当您遇到此问题时,您是否能够查看异常跟踪日志或除 printf 重定向之外的任何 SWV 功能?

      鉴于这一认识,我正在修改我的硬件以支持 SWO 引脚以供将来使用。

      【讨论】:

        【解决方案3】:

        我假设您已经完成了 Atollic 在link 中所说的内容? 基本上,ITM 需要以下内容来重定向 printf()

        应用程序应将 printf() 输出发送到 ITM 通道

        JTAG 探针必须支持 SWV

        调试器必须启用 SWV 跟踪并启用相应的 ITM 通道

        不管你的供应商如何,我认为所有的 ST-Link 都应该支持 printf 重定向。 (否则,请使用 ST-Link 实用程序并更新您的 ST Link 固件)

        希望这会有所帮助。

        【讨论】:

          【解决方案4】:

          我今天也遇到了同样的问题。我正在使用没有 SWO(SWV) 引脚的 STLink V2 clone,我找到了两种解决方案

          1. HW修改为克隆板,其他人回答她这里是Adding Trace support to ST-Link clones

          2. Semihosting技术使用openOCD

            2.1 在 调试配置 中从 Debug probe 列表中选择 "ST-LINK (OpenOCD)" 如下所示debugger。 p>

            2.2 在 startup 选项卡中,向下滚动并在 Run Commands 占位符中,键入 "monitor arm semihosting enable" 如下所示Run Commands . 2.3 点击apply然后close调试配置。

            2.4 打开项目属性。在 C/C++ Build 中,打开 Tool settings。从 MCU GCC Linker 中,选择 Miscellaneous。在 Other flags 上,单击 Add 按钮并键入 "-specs=rdimon.specs -lc -lrdimon",如此处所示 arguments

            2.5 点击应用,然后点击应用并关闭

            2.6 那么你需要排除syscalls.c。打开它的属性。从C/C++ Build,选择Settings并勾选按钮Exclude source from build,然后点击Apply and Close as此处显示Exclude syscalls.c

            2.7 最后一步是在任何printf之前,你应该调用initialise_monitor_handles(),它的prototype应该如下图所示包含在构建和进入之后调试模式并点击resume,消息会打印在控制台本身上,如下所示printing

          【讨论】:

            猜你喜欢
            • 2021-06-02
            • 1970-01-01
            • 2016-09-11
            • 2023-04-10
            • 2019-12-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-08-19
            相关资源
            最近更新 更多