STM32 SWD протокол - номер порта - PullRequest
0 голосов
/ 02 февраля 2019

Я начинаю использовать функцию SWD на моей плате обнаружения STM32.Я перенаправил вывод трассировки openocd в текстовый файл (потому что я не нашел хорошего монитора SWD для Linux).Я не знаю, почему я получаю два символа, когда отправляю только один.

В моем выходном файле каждому символу предшествует различный код 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?

1 Ответ

0 голосов
/ 13 июля 2019

Посмотрите на мой ответ здесь: https://stackoverflow.com/a/57014035/6552613

То, что вы видите, - это кадрирование, которое позволяет мультиплексировать данные из нескольких портов ITM в поток байтов на выводе SWO.

Если вы хотите точно знать, как создается кадрирование, прочитайте главу «Инструментарий Trace Macrocell» документа ARM DDI0314.

...