在stm32上使用调试器swo
Using debugger swo on stm32
正如标题所暗示的那样,我想在不使用 st-link utils.I 的情况下使用 swo 在 stm32F1 设备上进行调试 utils.I 我想我已经通过芯片上的 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 实用程序的教程,但我有一个非常自定义的工具链(我使用 conan、obko cmake 配置 https://github.com/ObKo/stm32-cmake、ocb 和 linux)使用 c++ 2017 和像 boost 这样的库的唯一目的是我不能使用 st-link 实用程序。
您需要启用 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);
}
我的配置问题是我的计算机上没有解析器来解析 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
编辑了解析器脚本
正如标题所暗示的那样,我想在不使用 st-link utils.I 的情况下使用 swo 在 stm32F1 设备上进行调试 utils.I 我想我已经通过芯片上的 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 实用程序的教程,但我有一个非常自定义的工具链(我使用 conan、obko cmake 配置 https://github.com/ObKo/stm32-cmake、ocb 和 linux)使用 c++ 2017 和像 boost 这样的库的唯一目的是我不能使用 st-link 实用程序。
您需要启用 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);
}
我的配置问题是我的计算机上没有解析器来解析 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