【问题标题】:Using debugger swo on stm32在 stm32 上使用调试器 swo
【发布时间】:2023-03-26 20:43:01
【问题描述】:

正如标题所示,我想在 stm32F1 设备上使用 swo 进行调试,而不使用 st-link utils。我想我已经在我的芯片上刷新了通过 swo 发送消息的代码,但我无法建立连接正如一些教程建议的那样,使用正确的端口,我将 putty 与 telnet 端口 2332 一起使用。 关于我的配置的细节: 我主要的相关代码

    int _write(int file, char *ptr, int len)
{
    int DataIdx;
    for (DataIdx = 0; DataIdx < len; DataIdx++)
    {
        __io_putchar(*ptr++);
    }
    return len;
}

...

   int main(){
    while (1)
      {
        printf("Hi\n");
      }
}

我看过一些使用 eclipse 配置或 st-link utils 的教程,但我有一个非常自定义的工具链(我使用 conan、obko cmake 配置 https://github.com/ObKo/stm32-cmake、ocb 和 linux),其唯一目的是使用 c++ 2017 和类似的库boost 所以我不能使用 st-link utils。

【问题讨论】:

  • 尝试与 rdimon.specs 链接
  • @KamilCuk Semihosting 被认为对我的应用程序来说太慢了,如果我没有正确理解你的观点,你能详细说明一下吗?
  • @KamilCuk 虽然它没有链接它说我有一些秘密函数的多个定义_lseek -specs=nosys.specs -specs=nano.specs -specs=rdimon.specs
  • 你在使用--whole-archive? -specs=nosys.specs -specs=nano.specs 因为你链接了两次。

标签: c++ c stm32 jtag


【解决方案1】:

我的配置的问题是我的计算机上没有解析器来解析ITM 消息,所以即使在我打开端口与芯片通信时芯片上的配置正确之后,我的终端仍然是没有消息。希望我找到了这个very helpful parser on github,所以在使用上述配置编译程序后,我所要做的就是运行openocd,并配置两个选项关于f1 芯片的频率和 事实上ITM 端口已打开(这是我的.cfg 文件):

source [find interface/stlink-v2.cfg]
source [find target/stm32f1x.cfg]
init
tpiu config internal - uart off 72000000
itm ports on

在另一个终端上,我从 github python3 swo_parser.py 运行解析器脚本

【讨论】:

    【解决方案2】:

    您需要启用 ITM 端口 0(或另一个),然后使用此端口输出字符。

    当它起作用时,你可以将它包装到 printf 中

    uint32_t ITM_SendChar (uint32_t ch)
    {
      if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0) &&      /* ITM enabled */
          ((ITM->TER & 1) != 0)   )     /* ITM Port #0 enabled */
      {
        while (ITM->PORT[0].u32 == 0)
        {
          __NOP();
        }
        ITM->PORT[0].u8 = (uint8_t)ch;
      }
      return (ch);
    }
    
    
    

    【讨论】:

    • 谢谢我投票赞成你的回答,因为它有很大帮助,但这并没有说明如何连接到正确的端口,所以我会自己回答,包括默认端口的 openocd 配置
    • 第 4 行和第 5 行检查是否已连接。连接只是通过设置这些位
    • 我认为这个确切的功能是在 cmsis 头文件CMSIS/Include/core_cm3.h:1698:26 中定义的,所以它是其他东西不起作用
    猜你喜欢
    • 2019-07-23
    • 2018-07-27
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多