STM32 SWD协议-端口号

时间:2019-02-02 19:36:57

标签: stm32 openocd swd

我开始在STM32发现板上使用SWD功能。我重定向OpenOCD的跟踪输出到文本文件(因为我没有找到任何Linux的好SWD显示器)。我不知道为什么只发送一个字符时会得到两个字符。

在我的输出文件中,每个字符都以不同的ASCII码开头(大多数情况下是不可打印的)。由于端口的原因,此前置代码是恒定的。例如:

Port 0:
0x01 [Character] 0x01 [Character] etc.
Port 1:
0x09 [Character] 0x09 [Character] etc.
Port 2:
0x11 [Character] 0x11 [Character] etc.
Port 3:
0x19 [Character] 0x19 [Character] etc.

我发现在谁使用[前面代码] >> 3式得到端口号github上的代码。其作品。

我使用CubeMX&HAL效用这样的:

ITM->PORT[portNum].u8 = (uint8_t)ch; 

发送“ ch”字符。

为什么需要使用字节操作?前面的代码除了端口号以外还有其他信息吗?我尝试将这笔资金用于设备开发,但每个示例都使用ST监视器

我将了解SWD中确切的代码是什么?

1 个答案:

答案 0 :(得分:0)

在这里查看我的答案:https://stackoverflow.com/a/57014035/6552613

您所看到的是使来自多个ITM端口的数据多路复用到SWO引脚上的字节流上的成帧。

如果您想确切地了解框架的构建方式,请阅读ARM文档DDI0314的“ Instrumentation Trace Macrocell”一章。