Встроенные отладчики аппаратного обеспечения: инструменты и советы

Содержание

DAPLink

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

Что такое аппаратный отладчик?

Аппаратный отладчик — это инструмент, который взаимодействует с микроконтроллером через отладочный интерфейс, позволяя запускать, приостанавливать, наблюдать и даже изменять состояние процесса. Другими словами, отладчик — это устройство, которое преобразует команды, отправленные с ПК (например, по протоколу USB), в язык, понятный микроконтроллеру (например, протокол SWD или JTAG), загружает код и точно контролирует его выполнение.

Типы отладчиков

Разработка встроенного программного обеспечения в значительной степени зависит от отладчиков и программаторов, которые помогают обнаруживать и исправлять ошибки в программах, выполнять программирование микроконтроллеров и многое другое. Большинство производителей полупроводников или микросхем разрабатывают отладчики для своих микроконтроллеров, чтобы улучшить экосистемы своих продуктов. В результате на рынке доступны различные классификации, включая отладчики J-Link, эмуляторы U-Link, отладчики ST-LINK и программаторы.

J-Link

J-Link — это отладчик на базе JTAG, представленный немецкой компанией SEGGER. Проще говоря, это устройство преобразования протокола JTAG, небольшой конвертер USB-JTAG, который подключается к компьютеру через интерфейс USB и к внутренним компонентам целевой платы с помощью протокола JTAG. Он выполняет преобразование из программного обеспечения в аппаратное обеспечение.

csm j link pro 500 7d8323fcda
J-Link (Изображение предоставлено SEGGER)

I-jet Trace

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

ijettrace
I-jet Trace (Изображение предоставлено: IAR System)

U-LINK

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

ulink2
Отладчик U-Link (Изображение предоставлено Keil)

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.

CMSIS DAP SWStack
CMSIS DAP (Изображение предоставлено: Keil)

DAPLink

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

DAPLink
DAPLink

Отладчик ICD

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

170207 DVTL PHOTO DV164045 Kit Transparent
Отладчик ICD (Изображение предоставлено: Microchip Technology)

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

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

ST-Link — это специализированный онлайн-отладчик и программатор для микроконтроллеров STM8 и STM32, часто называемый загрузчиком. ST-Link оснащен интерфейсами связи SWIM, JTAG и SWD для связи с микроконтроллерами STM8 или STM32 (доступны различные версии).

image.PF251168.en.feature description include personalized no cpn medium
ST-Link (Изображение предоставлено: STMicroelectronics)

MCU-Link

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

MCU LINK TOP Thubmnail
MCU Link (Изображение предоставлено: NXP Semiconductors)

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

OpenSDA

OpenSDA — это встроенная аппаратная отладочная схема, которая сочетает в себе функции отладки, преобразования USB в последовательный интерфейс и перетаскивания прошивки. Она присутствует почти на всех официальных платах разработчика NXP и Freescale. OpenSDA пользуется популярностью у пользователей благодаря своей простоте, низкой стоимости, мощной функциональности и широкой доступности.

OpenSDA FRDM
Прошивка OpenSDA V2 (Изображение предоставлено: Segger)

Не-ссылка

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

Nu Link ICP emulator downloader with offline offline download
Nu-Link (Изображение: AliExpress)

Как работают отладчики?

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

Установка условий остановок

Execution Breakpoints and Setting Conditions in Debugging
Execution Breakpoints and Setting Conditions in Debugging

На рисунке выше представлен список точек останова, всего четыре точки. Любой точке останова можно назначить условия, как показано в красной рамке 1.

Вы можете указать количество раз, когда точка останова будет действовать, т. е. сколько раз она сработает при достижении этой позиции, как показано в красной рамке 2. В этом примере она настроена на однократное срабатывание.

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

Когда точка останова срабатывает, можно выполнить скрипт Python, как показано в красном поле 4 на рисунке.

Вы также можете отобразить окно с сообщением и/или включить звуковой сигнал, чтобы предупредить о срабатывании точки останова.

Настройка триггеров точек останова

Setting Hardware Breakpoints Trigger in Debugging
Setting Hardware Breakpoints Trigger in Debugging

Триггеры точек останова похожи на заранее определенные триггеры, которые приводят к остановке кода при выполнении определенных условий во время выполнения. Место срабатывания триггера может быть неизвестно заранее.

На рисунке красная рамка 1 обозначает триггер инструкции, который останавливает код на определенной строке, аналогично установке точки останова непосредственно в коде.

Красная рамка 2 представляет триггер данных, который останавливает код при операции чтения/записи определенной переменной или адреса и может контролировать, установлен ли или сброшен ли определенный бит (доступность зависит от микроконтроллера). Код останавливается в соответствующем месте.

Красная рамка 3 — пример, в котором выбран «g_iCounter». Когда его старший бит установлен в 1, он запускает точку останова. В противном случае код продолжает выполняться.

Красная рамка 4 иллюстрирует сложное условие запуска, включающее несколько условий, которое также зависит от возможностей микроконтроллера.

Заключение

Таким образом, аппаратные отладчики и их различные типы играют важную роль в разработке встроенных систем, позволяя разработчикам находить и исправлять программные ошибки, выполнять отладку в режиме реального времени и получать информацию о выполнении программ микроконтроллера. Эти инструменты предоставляют такие важные функции, как точки останова, условия запуска и возможность выполнения скриптов, что делает процесс отладки более эффективным и результативным.

Об авторе

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Поделиться

Рекомендуемый пост

Tags

Нужна помощь?

Прокрутить вверх

Мгновенный расчет

Instant Quote