Использование отладчика swo на stm32 - PullRequest
4 голосов
/ 04 марта 2020

Как следует из названия, я хотел бы использовать swo для отладки на устройстве stm32F1 без использования утилит st-link. Я думаю, что я прошил код для отправки сообщений через swo на моем чипе, но не могу установить sh соединение с правильным портом, так как в некоторых руководствах предлагается использовать putty с te lnet портом 2332. Особенности моей конфигурации: cubemx swo configuration Относительный код на моем основном

    int _write(int file, char *ptr, int len)
{
    int DataIdx;
    for (DataIdx = 0; DataIdx < len; DataIdx++)
    {
        __io_putchar(*ptr++);
    }
    return len;
}

...

   int main(){
    while (1)
      {
        printf("Hi\n");
      }
}

Я видел некоторые учебники, использующие конфигурации Eclipse или ST -link использует, но у меня есть очень собственный набор инструментов (я использую конфигурации conan, obko cmake https://github.com/ObKo/stm32-cmake, ocb и linux) с единственной целью использования c ++ 2017 и таких библиотек, как boost, поэтому я не могу используйте утилиты st-link.

Ответы [ 2 ]

2 голосов
/ 04 марта 2020

Вам необходимо включить порт ITM 0 (или другой), а затем вывести символы с помощью этого порта.

Когда это работает, вы можете обернуть его в printf

uint32_t ITM_SendChar (uint32_t ch)
{
  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0) &&      /* ITM enabled */
      ((ITM->TER & 1) != 0)   )     /* ITM Port #0 enabled */
  {
    while (ITM->PORT[0].u32 == 0)
    {
      __NOP();
    }
    ITM->PORT[0].u8 = (uint8_t)ch;
  }
  return (ch);
}


0 голосов
/ 08 апреля 2020

Проблема с моими конфигурациями заключалась в том, что на моем компьютере не было парсера для сообщений ITM, поэтому даже после того, как у меня были правильные конфигурации на чипе, когда я открывал порт для связи с чипом, мой терминал был пусто из сообщений. Надеюсь, я нашел этот очень полезный синтаксический анализатор на github , поэтому все, что мне нужно было сделать после компиляции программы с вышеуказанными конфигурациями, это запустить openocd с настройкой двух параметров о частоте чипа f1 и факт, что ITM порт был открыт (вот мой .cfg файл):

source [find interface/stlink-v2.cfg]
source [find target/stm32f1x.cfg]
init
tpiu config internal - uart off 72000000
itm ports on

и на другом терминале я запустил скрипт парсера из github python3 swo_parser.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...