user

Авторизация

Добро пожаловать!

Регистрация

Graf

stm32

Прошивка STM32 с помощью ST-Link v2 SWD

Поддержка отладки STM32 ARM Cortex-M3    

 Ядро ARM Cortex®-M3 и M4 содержит аппаратные расширения для расширенных функций отладки. Расширения отладки позволяют останавливать ядро ​​либо при получении заданной инструкции (точка останова), либо при доступе к данным (точка наблюдения). При остановке можно проверить внутреннее состояние ядра и внешнее состояние системы. После завершения проверки ядро ​​и система могут быть восстановлены, а выполнение программы возобновлено. Функции отладки используются хостом отладчика при подключении и отладке микроконтроллеров STM32.

 Доступны два интерфейса для отладки:

  1. Последовательная проводная отладка (SWD)
  2. Порт отладки JTAG

 Функции отладки, встроенные в ядро ​​Cortex®-M3, являются подмножеством Arm® CoreSight Design Kit.

 В этом уроке мы будем использовать SWD. Ниже приведена схема оборудования поддержки отладки ARM Cortex-M3. Включает в себя ITM для отладки трассировки последовательных проводов и дополнительные функции.

Особенности отладки STM32 ARM Cortex-M3

 Ядро Arm® Cortex®-M3 обеспечивает встроенную поддержку отладки. Он состоит из:

  • SWJ-DP: последовательный провод/порт отладки JTAG
  • AHP-AP: порт доступа AHB
  • ITM: Макроячейка трассировки приборов
  • FPB: точка останова обновления Flash
  • DWT: триггер точки наблюдения за данными
  • TPUI: интерфейс модуля порта трассировки (доступен в более крупных корпусах, где сопоставлены соответствующие контакты)
  • ETM: встроенная макроячейка трассировки (доступна в более крупных корпусах, где сопоставлены соответствующие контакты)

ST-Link v2 (аппаратный отладчик)

Для отладки проектов с помощью Blue Pill Board

 Это тот инструмент, который вам нужен. К сожалению, китайский клон слева не поддерживает отладку трассировки последовательных проводов как таковую. Потому что он не отображает контакт SWO в его распиновке. Итак, вам понадобится оригинальный комплект справа, а контакт SWO будет подключен к контакту B3 синей таблетки.

 Альтернативно, есть хак для ST-Link v2 USB Clone (тот, что слева). Таким образом, вы можете припаять контакт SWO к любому контакту на разъеме. Обычно мы используем только 4 из 10 контактов. Таким образом, вы можете подключить вывод SWO к любому другому выводу.

 При настройке функции отладки SWD в CubeMX вы заметите, что контакт SWO имеет значение B3. Который вам понадобится подключить к отладчику ST-Link. Шаги по отладке SWD будут одинаковыми независимо от целевого микроконтроллера.

Отладка STM32 SWV

Для отладки с помощью плат Nucleo (Nucleo32-L432KC)

 Платы Nucleo оснащены встроенным чипом программатора/отладчика ST-Link v2. Это еще один микроконтроллер на самой плате. В случае с Nucleo32L432KC это небольшой микроконтроллер на задней стороне платы. Он подключен к USB-порту на плате. Это дает вам полную возможность отладки и позволяет легко перепрограммировать код на плату. Он даже определяется как запоминающее устройство, поэтому вы можете просто перетащить двоичный файл (шестнадцатеричный код) непосредственно на чип, и он уже прошит без каких-либо щелчков мыши!

Нуклео32L432KC
NUCLEO-L432KC-ST-Link V2

 Очевидно, что при использовании плат Nucleo Board никакого дополнительного оборудования не требуется. Действия по отладке одинаковы для всех плат Nucleo и синей таблетки с ST-Link v2. Однако платы Nucleo32 (малая 32-контактная версия), подобные показанным выше, не имеют контакта SWO, подключенного к встроенному отладчику ST-Link.

 Вам придется припаять перемычку к плате с помощью схемы платы, чтобы включить эту функцию трассировки последовательных проводов. И я не буду этого делать. Я дам вам инструкции по отладке с помощью средства просмотра последовательных проводов на тот случай, если вы сможете взломать свой клон ST-Link, или у вас есть плата обнаружения или, возможно, Nucleo-64, у которого нет недостатка в соединении для контакта SWO.

Создание демонстрационного проекта и отладка SWV   

 Шаг 1. Откройте CubeMX и создайте новый проект.

STM32 CubeMX Создать новый проект

Шаг 2. Выберите целевой MCU и дважды щелкните его имя.

Учебное пособие по отладке STM32 SWV

Шаг 3 : Настройте все периферийные устройства и GPIO, которые вы хотите использовать в своем проекте!

 Каким бы ни был ваш проект. Просто выполните обычные настройки в соответствии с приложением. Чтобы включить отладку последовательного провода, вам нужно всего лишь добавить дополнительный шаг, показанный ниже.

Шаг 4 : Установите отладку последовательного провода трассировки

 Примечание: контакт B3 теперь является SWO, и его необходимо подключить к соответствующему контакту отладчика ST-Link v2.

Отладка STM32 SWV

Шаг 6. Установите системную частоту на 72 МГц или на любую другую.

Конфигурация дерева часов STM32 CubeMX

Шаг 7. Назовите и сгенерируйте код инициализации проекта для CubeIDE или IDE, которую вы используете.

 Затем откройте проект в используемой вами IDE. И перейдите к файлу main.c.

 Вам нужно будет добавить эту функцию в файл main.c перед основной функцией. Если вы еще не включаете системные вызовы в свой проект. Он дает реализацию функции printf() для печати данных по трассировке ITM.

Шаг 8. Откройте настройки отладки и включите SWV.

Конфигурации отладки STM32 SWV

Шаг 9. Создайте проект и начните сеанс отладки.

Шаг 10. Откройте экран консоли данных SWV ITM.

Отладка STM32 SWV ITM

Шаг 11 : Нажмите кнопку «Настроить трассировку» и «Включить порт 0», затем нажмите «ОК». И не забудьте нажать красную кнопку, на которую указывает стрелка! Чтобы начать трассировку… И возобновить отладку, чтобы микроконтроллер продолжил печать данных.

Конфигурация отладки STM32 SWV ITM

 Я не использую точку останова в коде, поэтому строковое сообщение непрерывно печатается во время выполнения кода приложения в режиме реального времени без перерывов. Вот вид консоли данных SWV ITM

STM32 ST-Link SWV Debugging (SWO) Печать оперативных данных на консоль

Живые выражения и переменные 

 Теперь я добавил целочисленную переменную-счетчик и константную строку. Я также поместил точку останова в основной цикл while непосредственно перед инструкцией приращения счетчика.