Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Отладка двухъядерной системы Arduino Portenta H7 с Segger J-Link

Компоненты и материалы

Arduino Portenta H7 ×1
Arduino Portenta H7 Breakout Board ×1
Segger J-Link Debug Probe ×1
Segger Cortex M Adapter ×1

Программное обеспечение и сервисы

Обзор проекта

Arduino Portenta H7 предоставляет мощную двухъядерную архитектуру: Cortex-M7 на 480 МГц и Cortex-M4 на 240 МГц. Два ядра могут выполнять независимую прошивку и общаться через разделяемую память или семафоры.

Одновременная отладка обоих ядер требует выделенный SWD-интерфейс и отладчик с поддержкой мультитаргетных сессий. В этом руководстве показано, как подключить Segger J-Link к каждому ядру, настроить среду разработки и запустить простой пример blink, демонстрирующий независимое управление светодиодом каждого ядра.

Аппаратная настройка

  1. Установите Portenta H7 на breakout-плату. Она выводит 20-пиновый MIPS-стиль разъём, соединяющий SWD-пины обоих ядер.
  2. Подключите 20-пиновый MIPS-конвертер к разъёму breakout для разделения сигналов отладки.
  3. Соедините конвертер с Segger J-Link согласно распиновке ниже. При желании можно использовать кастомное решение с 0.05-дюймовыми коннекторами по примеру второй картинки.
Отладка двухъядерной системы Arduino Portenta H7 с Segger J-Link
Стандартное подключение через MIPS-конвертер
Отладка двухъядерной системы Arduino Portenta H7 с Segger J-Link
Пример кастомной проводки с 0.05" коннекторами

Программная настройка

  1. Установите Arduino IDE (скачать с официального сайта).
  2. Установите Microsoft Visual Studio (2017, 2019 или 2022) и расширение Visual Micro (подробные инструкции на сайте Visual Micro).
  3. Добавьте пакет Arduino Mbed OS Portenta Boards через Visual Micro Explorer или Board Manager в Arduino IDE.
  4. Замените USB-драйвер интерфейса 0 Segger J-Link на WinUSB с помощью Zadig. Короткое видео-руководство приведено ниже.

Пишем код

Подготовьте два отдельных проекта — по одному для каждого ядра. Приведённые ниже примеры Blink зажигают разные светодиоды на каждом ядре и могут отлаживаться независимо.

Важно: в проекте M7 вызовите bootM4() в начале setup() для активации обоих ядер.

Настройка отладки: ядро M7

Откройте скетч M7 в Visual Studio, перейдите в Debug > Hardware и выберите Segger J-Link Debugger (не версию NoOpenOCD). Соберите и загрузите скетч в ядро M7.

Отладка двухъядерной системы Arduino Portenta H7 с Segger J-Link
Выбор Segger J-Link Debugger для M7

Настройка отладки: ядро M4

Откройте скетч M4, выберите Debug > Hardware и выберите Segger J-Link Debugger (NoOpenOCD). Соберите и загрузите в ядро M4.

Запуск отладчика

Сначала запустите сессию отладки для скетча M7 через Debug > Attach to Process. Повторите для скетча M4. Теперь вы можете устанавливать точки останова в любом проекте, ставить на паузу, выполнять пошагово или продолжать — каждое ядро отвечает на свои команды независимо.

Отладка двухъядерной системы Arduino Portenta H7 с Segger J-Link
Независимые сессии отладки для обоих ядер

Видео-разбор

Пошаговая демонстрация на YouTube:

Отладка Portenta H7 Dual-Core с Segger J-Link

Полезные ссылки

Исходный код

H7 M4 Blink Code

// Blink на ядре Portenta M4
void setup() {
  pinMode(LED_BLUE, OUTPUT);
}
void loop() {
  digitalWrite(LED_BLUE, HIGH);
  delay(1000);
  digitalWrite(LED_BLUE, LOW);
  delay(1000);
}

H7 M7 Blink Code

// Blink на ядре Portenta M7
void setup() {
  bootM4(); // Активация ядра M4
  pinMode(LED_RED, OUTPUT);
}
void loop() {
  digitalWrite(LED_RED, HIGH);
  delay(1000);
  digitalWrite(LED_RED, LOW);
  delay(1000);
}

Схемы

Подключение SWD-пинов на Breakout Board к Segger J-Link:

Отладка двухъядерной системы Arduino Portenta H7 с Segger J-Link
Схема подключения SWD к J-Link

Производственный процесс

  1. Arduino запускает Portenta H7: Industrial-Grade IoT Board дебютирует на CES
  2. Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
  3. FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
  4. DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
  5. Создание пользовательских LED-часов с будильником — видно с 12 метров
  6. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  7. Оптимизированные решения питания для проектов на Arduino
  8. Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
  9. Пошаговое руководство: сборка умного четырёхногого робота на Arduino
  10. Своё рулевое управление (джойстик) для игр на Arduino