我开始在我的STM32发现板上使用社保功能。我将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.我在github代码中发现,他们使用前面的代码>> 3公式来获取端口号。它是有效的。
我像这样使用CubeMX & HAL实用程序:
ITM->PORT[portNum].u8 = (uint8_t)ch; 发送"ch“字符。
为什么需要使用字节操作?前面的代码除了端口号之外还有其他信息吗?我尝试在目录中提供资金,但每个示例都使用ST监视器
我能理解在SWD中什么是前面的代码吗?
发布于 2019-07-13 05:26:03
看看我的答案:https://stackoverflow.com/a/57014035/6552613
您所看到的是成帧,它使得来自多个ITM端口的数据能够多路复用到SWO引脚上的字节流。
如果您想确切地了解框架是如何构建的,请阅读ARM文档DDI0314的“仪器跟踪宏单元”一章。
https://stackoverflow.com/questions/54496794
复制相似问题