STM32 SWD протокол - номер порта
Я начинаю использовать функцию 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;
отправить символ "ч".
Почему мне нужно использовать байтовую операцию? Этот предшествующий код имеет другую информацию, кроме номера порта? Я пытаюсь финансировать это в документации, но каждый пример использует монитор ST
Я пойму, что именно предшествует код в SWD?
0 ответов
Взгляните на мой ответ здесь: /questions/48582130/poluchenie-dopolnitelnyih-bajtov-s-ispolzovaniem-poluhostinga-na-chipe-stm32l4-s/50466356#50466356
Вы видите кадрирование, которое позволяет мультиплексировать данные из нескольких портов ITM в поток байтов на выводе SWO.
Если вы хотите точно знать, как строится фрейм, прочтите главу "Макроячейка инструментальной трассировки" в документе ARM DDI0314.