没有 SWV 或 ITM,带有 st-link v2 仿真器编程器和 stm32f103c8t6

问题描述 投票:0回答:4

我买了一个便宜的“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 上未使用的引脚: 休息、游泳

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

有关此事的任何建议将不胜感激,如果需要,我很乐意提供更多信息。

trace stm32 swd
4个回答
2
投票

尝试阅读向 ST-Link 克隆添加跟踪支持。常见的廉价 ST-Link 克隆必须在硬件级别进行修改,以暴露 ITM 跟踪所依赖的 SWO 引脚。 (当然,您还必须连接该信号。)

我有两个不同的 ST-Link 克隆,两者都没有与 PA10 引脚连接,如链接文章中所示。


1
投票

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

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

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


0
投票

我想你已经按照Atollic在这个链接中所说的做了? 基本上,ITM 需要以下内容来重定向 printf()

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

JTAG探针必须支持SWV

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

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

希望这有帮助。


0
投票

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

  1. 克隆板的硬件修改,正如其他人在这里回答的那样,这是为 ST-Link 克隆添加跟踪支持

  2. 使用
  3. openOCD

    半主机技术:

    调试配置中的2.1 从调试探针列表中选择“ST-LINK (OpenOCD)”,如下所示。

    2.2 在

    startup 选项卡中,向下滚动并在 Run Commands 占位符中,键入 “monitor arm semihosting enable”,如下所示。

    2.3 点击

    应用然后关闭调试配置。

    2.4 打开

    项目属性。从C/C++ Build,打开工具设置。从MCU GCC Linker中,选择Miscellaneous。在 Other flags 上,单击 Add 按钮并输入 "-specs=rdimon.specs -lc -lrdimon"

    ,如下所示。 

    2.5 单击

    应用,然后单击应用并关闭

    2.6 那么你需要排除

    syscalls.c

    。打开它的
    属性。从 C/C++ Build,选择 Settings 并选中按钮 从构建中排除源,然后单击 Apply and Close,如下所示。

    2.7 最后一步是在任何

    printf

    之前,您应该调用
    initialise_monitor_handles()
    ,并且应包含其原型,如下所示,构建并进入
    调试模式并点击resume后,消息将打印在控制台上本身如下所示。

© www.soinside.com 2019 - 2024. All rights reserved.