Нет SWV или ITM с программатором эмулятора st-link v2 и stm32f103c8t6

Я купил дешевый "программатор эмулятора st-link v2" и STM32f013C8T6 от Ebay. Используя Atollic в Windows 8 и SWD-интерфейс MCU, я могу загружать и запускать код, устанавливать точки останова и наблюдать за переменными, но я не могу использовать printf поверх ITM или SWV Trace.

Я также попытался использовать подлинную ST-LINK v2 платы Nucleo stm32l152re с теми же результатами.

Соединения между ST-LINK и MCU следующие:

ST-LINK - MCU:

SWDIO - SWDIO, GND - GND, SWCLK - SWCLK, 3,3 В - 3,3 В

Неиспользованные булавки на ebay ST-LINK: RST, SWIM

Неиспользованные контакты на оригинальной ST-LINK: NRST, SWO

Буду признателен за любые советы по этому вопросу, и я был бы рад предоставить больше информации, если это необходимо.

4 ответа

Попробуйте прочитать Добавление поддержки трассировки клонам ST-Link. Обычные дешевые клоны ST-Link необходимо модифицировать на аппаратном уровне, чтобы выставить вывод SWO, от которого зависит трассировка ITM. (Тогда, конечно, вы также должны подключить этот сигнал.)

У меня есть два разных клона ST-Link, оба из которых ничего не подключают к выводу PA10, как в связанной статье.

Я понимаю, что этот вопрос очень старый. Я надеюсь, что вы нашли решение, но я все еще хотел бы положить свои два цента, потому что я столкнулся с той же проблемой.

Насколько я понимаю, для функциональности SWV вам нужно подключить контакт SWO. Когда у вас возникла эта проблема, вы могли просматривать журналы трассировки исключений или любую функцию SWV, кроме перенаправления printf?

В свете этой реализации я модифицирую свое оборудование для поддержки вывода SWO для будущего использования.

Сегодня я столкнулся с той же проблемой. Я использую клон STLink V2, у которого нет контакта SWO(SWV), и я нашел два решения :

  1. Модификация HW для платы клонирования, как ей ответили другие люди, которая находится здесь . Добавление поддержки трассировки для клонов ST-Link .

  2. Техника полухостинга с использованием openOCD:

    2.1 в настройках отладки выберите «ST-LINK (OpenOCD)» из списка отладочных зондов , как показано здесь, отладчик .

    2.2 на вкладке запуска прокрутите вниз и в заполнителе Run Commands введите «monitor arm semihosting enable» , как показано здесь Run Commands . 2.3 нажмите « Применить », а затем закройте настройки отладки.

    2.4 открыть свойства проекта . В сборке C/C++ откройте настройки инструмента . В MCU GCC Linker выберите Miscellaneous . в разделе « Другие флаги » нажмите кнопку « Добавить » и введите «-specs= -lc -lrdimon» , как показано здесь .rdimon.specs

    2.5 нажмите «Применить », затем «Применить» и «Закрыть » .

    2.6, вам нужно исключить syscalls.c . откройте его свойства . из сборки C/C++ , выберите «Настройки » и установите флажок «Исключить источник из сборки », затем нажмите «Применить и закрыть », как показано здесь . «Исключить syscalls.c » .

    2.7 Последний шаг перед любым printf , вы должны вызвать initialise_monitor_handles() , и его прототип должен быть включен, как показано ниже, и после сборки и входа в режим отладки и нажатия возобновления сообщение печатается на самой консоли, как показано здесь print .

Я полагаю, вы уже сделали то, что говорит Atollic по этой ссылке? По сути, ITM требуют следующие вещи для перенаправления printf()

Приложение должно отправить вывод printf() на канал ITM

Зонд JTAG должен поддерживать SWV

Отладчик должен иметь трассировку SWV с включенным соответствующим каналом ITM

Несмотря на вашего поставщика, я предполагаю, что все ST-Links должны поддерживать перенаправление printf. (В противном случае используйте утилиту ST-Link и обновите прошивку ST Link)

Надеюсь это поможет.

Другие вопросы по тегам