При разработке встроенных систем и программного обеспечения для микроконтроллеров инженеры часто используют отладчики для отладки программ. Таким образом, мы можем найти и уменьшить количество ошибок в программах микроконтроллеров, заставляя их работать так, как и предполагалось. Иногда отладка программ микроконтроллеров может быть сложной задачей, поскольку даже незначительные изменения в одном системном модуле могут привести к ошибкам в другой подсистеме. Кроме того, инструменты отладки, используемые при разработке микроконтроллеров, значительно различаются по времени разработки и возможностям отладки. В этой статье в первую очередь представлены распространенные типы отладчиков для микроконтроллеров и способы их использования.
Что такое аппаратный отладчик?
Аппаратный отладчик — это инструмент, который взаимодействует с микроконтроллером через отладочный интерфейс, позволяя запускать, приостанавливать, наблюдать и даже изменять состояние процесса. Другими словами, отладчик — это устройство, которое преобразует команды, отправленные с ПК (например, по протоколу USB), в язык, понятный микроконтроллеру (например, протокол SWD или JTAG), загружает код и точно контролирует его выполнение.
Типы отладчиков
Разработка встроенного программного обеспечения в значительной степени зависит от отладчиков и программаторов, которые помогают обнаруживать и исправлять ошибки в программах, выполнять программирование микроконтроллеров и многое другое. Большинство производителей полупроводников или микросхем разрабатывают отладчики для своих микроконтроллеров, чтобы улучшить экосистемы своих продуктов. В результате на рынке доступны различные классификации, включая отладчики J-Link, эмуляторы U-Link, отладчики ST-LINK и программаторы.
J-Link
J-Link — это отладчик на базе JTAG, представленный немецкой компанией SEGGER. Проще говоря, это устройство преобразования протокола JTAG, небольшой конвертер USB-JTAG, который подключается к компьютеру через интерфейс USB и к внутренним компонентам целевой платы с помощью протокола JTAG. Он выполняет преобразование из программного обеспечения в аппаратное обеспечение.

I-jet Trace
I-jet Trace, выпущенный компанией IAR Systems, представляет собой мощный инструмент для отладки и трассировки кода, оснащенный большим кэшем инструкций и поддерживающий высокоскоростной протокол связи USB 3.0. I-jet Trace поддерживает все ядра серии ARM Cortex-M, оснащенные модулем Embedded Trace Macrocell (ETM), включая новейшее ядро Cortex-M7. Отслеживая каждую выполненную инструкцию, ETM позволяет разработчикам глубоко наблюдать за поведением микроконтроллера во время выполнения, выявляя значительные ошибки, которые могут быть трудно обнаружить с помощью типичных методов отладки.

U-LINK
ULINK — это отладчик/эмулятор, представленный ARM/KEIL. В настоящее время доступны обновленные версии, такие как эмуляторы ULINK2 и ULINK Pro. ULINK/ULINK2 можно использовать с программным обеспечением Keil для включения функций эмуляции и в первую очередь они совместимы с программным обеспечением Keil. Они обеспечивают поддержку отладки по последовательному интерфейсу (SWD), поддержку обратного тактового генератора, отслеживание в реальном времени и другие функции. Инженеры-разработчики могут удобно выполнять отладку на чипе (с использованием встроенных интерфейсов JTAG, SWD и OCDS) и программирование флэш-памяти при использовании отладчика RealView MDK в сочетании с ULINK2.

CMSIS-DAP
CMSIS-DAP можно разделить на две части: CMSIS и DAP. CMSIS означает «стандарт программного интерфейса ARM Cortex-M», а DAP — «порт доступа для отладки». CMSIS-DAP — это реализация микропрограммы устройства отладчика USB. Программное обеспечение для отладки, работающее на хост-компьютере, связывается с устройством отладчика через интерфейс USB, что в конечном итоге позволяет отлаживать прикладное программное обеспечение, работающее на целевом микроконтроллере. Отладчик CMSIS-DAP подключается к целевому устройству через JTAG или SWD. Процессоры ARM Cortex предоставляют модули Core Sight Debug и Trace. Отладчики CMSIS-DAP могут поддерживать процессоры, содержащие одно или несколько ядер ARM.

DAPLink
DAPLink — это эмулятор с открытым исходным кодом, официально разработанный ARM, способный загружать и отлаживать программы для полного спектра чипов с ядрами Cortex-M0/M3/M4/M7.

Отладчик ICD
ICD (In-Circuit Debugger), часто называемый просто «отладчиком ICD», представляет собой аппаратное средство отладки, используемое при разработке встраиваемых систем. Оно позволяет разработчикам выполнять отладку микроконтроллеров или других встраиваемых устройств в режиме реального времени, пока они работают в целевой схеме (в схеме).

Отладчики ICD обычно подключаются к целевому устройству через его интерфейс отладки, такой как JTAG (Joint Test Action Group) или SWD (Serial Wire Debug). Эти отладчики предлагают ряд важных функций отладки, включая установку точек останова, пошаговое выполнение кода, проверку значений переменных и мониторинг потока выполнения программы.
Одним из ключевых преимуществ отладчиков ICD является их способность отлаживать программное обеспечение в реальных аппаратных условиях, что позволяет разработчикам выявлять и устранять проблемы, которые могут возникать только при работе целевого устройства в предполагаемой среде.
ST-Link — это специализированный онлайн-отладчик и программатор для микроконтроллеров STM8 и STM32, часто называемый загрузчиком. ST-Link оснащен интерфейсами связи SWIM, JTAG и SWD для связи с микроконтроллерами STM8 или STM32 (доступны различные версии).

MCU-Link
MCU-Link, разработанный совместно компаниями NXP и Embedded Artist, представляет собой мощный и экономичный отладчик, который легко интегрируется с MCUXpresso IDE. Он также совместим со сторонними IDE, поддерживающими протокол CMSIS-DAP, такими как широко используемые MDK Keil и IAR Embedded Workbench.

MCU-Link основан на микроконтроллере LPC55S69, оснащенном высокоскоростным интерфейсом USB для высокопроизводительной отладки. LPC55S69 — это двухъядерный микроконтроллер Cortex-M33 с тактовой частотой до 150 МГц. Он включает в себя функцию USB-to-serial (VCOM), позволяющую разработчикам выводить данные со стороны MCU на ПК во время отладки.
OpenSDA
OpenSDA — это встроенная аппаратная отладочная схема, которая сочетает в себе функции отладки, преобразования USB в последовательный интерфейс и перетаскивания прошивки. Она присутствует почти на всех официальных платах разработчика NXP и Freescale. OpenSDA пользуется популярностью у пользователей благодаря своей простоте, низкой стоимости, мощной функциональности и широкой доступности.

Не-ссылка
Nu-Link — это инструмент для отладки и программирования, разработанный компанией Nuvoton, который предлагает возможности отладки и онлайн/офлайн-программирования. Инструмент включает в себя USB-порт для подключения к хост-компьютеру, светодиодные индикаторы состояния, кнопку офлайн-программирования и интерфейс SWD для подключения к целевому чипу для отладки и программирования (порт SWD работает при напряжении 5 В по умолчанию).

Как работают отладчики?
Принцип отладки микроконтроллера заключается в обмене данными между инструментом отладки и микроконтроллером, что облегчает отладку программы микроконтроллера. Точки останова — это широко используемый метод отладки, позволяющий точно определять ошибки в коде.
Установка условий остановок

На рисунке выше представлен список точек останова, всего четыре точки. Любой точке останова можно назначить условия, как показано в красной рамке 1.
Вы можете указать количество раз, когда точка останова будет действовать, т. е. сколько раз она сработает при достижении этой позиции, как показано в красной рамке 2. В этом примере она настроена на однократное срабатывание.
Вы можете задать выражение для оценки, как показано в красной рамке 3 на рисунке. Например, точка останова сработает, когда «g_iCounter» будет больше или равен 100. Такие условия комбинируются с условием в красной рамке 2 с помощью логического отношения «AND». Оба условия должны быть выполнены, чтобы точка останова сработала; в противном случае код продолжает выполняться.
Когда точка останова срабатывает, можно выполнить скрипт Python, как показано в красном поле 4 на рисунке.
Вы также можете отобразить окно с сообщением и/или включить звуковой сигнал, чтобы предупредить о срабатывании точки останова.
Настройка триггеров точек останова

Триггеры точек останова похожи на заранее определенные триггеры, которые приводят к остановке кода при выполнении определенных условий во время выполнения. Место срабатывания триггера может быть неизвестно заранее.
На рисунке красная рамка 1 обозначает триггер инструкции, который останавливает код на определенной строке, аналогично установке точки останова непосредственно в коде.
Красная рамка 2 представляет триггер данных, который останавливает код при операции чтения/записи определенной переменной или адреса и может контролировать, установлен ли или сброшен ли определенный бит (доступность зависит от микроконтроллера). Код останавливается в соответствующем месте.
Красная рамка 3 — пример, в котором выбран «g_iCounter». Когда его старший бит установлен в 1, он запускает точку останова. В противном случае код продолжает выполняться.
Красная рамка 4 иллюстрирует сложное условие запуска, включающее несколько условий, которое также зависит от возможностей микроконтроллера.
Заключение
Таким образом, аппаратные отладчики и их различные типы играют важную роль в разработке встроенных систем, позволяя разработчикам находить и исправлять программные ошибки, выполнять отладку в режиме реального времени и получать информацию о выполнении программ микроконтроллера. Эти инструменты предоставляют такие важные функции, как точки останова, условия запуска и возможность выполнения скриптов, что делает процесс отладки более эффективным и результативным.


