Я начинаю использовать функцию 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?