Отладка Arduino UNO R4 Minima
Узнайте, как выполнять отладку UNO R4 Minima.
Отладка (debugging) — это процесс выявления и исправления ошибок в вашем коде. Это жизненно важный навык для любого, кто пишет код, особенно при работе с микроконтроллерами, такими как те, что установлены на вашем Arduino. Как и во всём, отладка может выполняться на разных уровнях, подробнее об этом можно прочитать здесь.
В данном контексте отладка — это термин, используемый для описания процесса инспектирования кода в различные моменты времени.
Часто используемая аналогия — представить это как «вхождение» в код, получение полного контроля над тактовым генератором и пошаговое прохождение строка за строкой, проверку значений переменных по ходу выполнения и чтение конкретных адресов памяти, чтобы убедиться, что информация передаётся как задумано.
Это особенно полезно при создании сложных проектов, но даже будучи новичком, полезно знать основы отладки, что в итоге сэкономит вам время и энергию при поиске той маленькой раздражающей ошибки, из-за которой ваша программа перестаёт работать.
Эта статья описывает основные шаги по отладке UNO R4 Minima с использованием контактов SWD и отладчика J-Link.
В дополнение к необходимому оборудованию нам также понадобится программное обеспечение, позволяющее устанавливать точки останова (breakpoints) в нашем коде. Точка останова — это намеренная остановка или пауза в определённом месте кода, позволяющая вам считывать значения именно в этой точке. В данном случае мы будем использовать Ozone — программное обеспечение, разработанное компанией Segger. Это графический отладчик для встраиваемых приложений, и мы можем использовать его для установки точек останова, чтения адресов памяти и чтения значения любой переменной в определённый момент времени.
Цели
Цели этого руководства:
Изучить основы отладки.
Научиться подключать UNO R4 Minima к отладчику Segger J-Link.
Научиться использовать программу отладки Ozone для отладки скетча Arduino.
Необходимое оборудование и программное обеспечение
Отладка
Отладка вашего проекта Arduino позволяет вам глубоко погрузиться в код, устранять неполадки и анализировать выполнение кода. J-Link — популярный инструмент отладки, который обеспечивает прямое соединение между вашим компьютером и платой Arduino. Подключив его, вы получаете полный доступ к внутренним регистрам микроконтроллера, памяти и переменным. Это особенно полезно при работе над более сложными проектами, где понимание потока выполнения кода имеет решающее значение. С помощью J-Link и Ozone вы можете пошагово проходить код строка за строкой, что позволяет анализировать, почему ваш код может ломаться в определённой точке.
Подключение
Подключить J-Link к вашему UNO R4 Minima очень просто, потому что на плате есть специальные контакты для отладки, обозначенные как SWD.
Контакты SWD
Ваш J-Link должен поставляться с кабелем в комплекте, и если вы присмотритесь, то увидите, что одна сторона отмечена красным цветом, указывающим ориентацию кабеля. Красная сторона кабеля должна быть на той же стороне, что и контакт VCC на площадке SWD. Чтобы узнать точную ориентацию вашего кабеля, обязательно проверьте соответствующую документацию или техническое описание вашего отладчика, но вы можете начать с ориентации, показанной ниже, и если это не сработает, вы можете попробовать расположить его по-другому, пока не получите рабочее соединение. Как только мы начнём использовать программу отладки на следующих шагах, вы узнаете, правильно ли расположен кабель.
Программное обеспечение
Настройка в Arduino IDE
Сначала, если вы ещё этого не сделали, установите Arduino IDE и подключите ваш UNO R4 Minima. При загрузке скетча на плату Arduino с помощью Arduino IDE он создаст файл .ELF скетча. Этот файл понадобится нам для отладки в Ozone на следующих шагах. Чтобы легко найти путь к файлу .ELF, мы можем включить опцию подробного вывода в Arduino IDE. Для этого откройте настройки в меню File > Preferences в Arduino IDE.
Настройки в Arduino IDE
Когда у вас откроется окно настроек, найдите опцию Show verbose output during: compilation и убедитесь, что флажок установлен.
Окно настроек Arduino IDE
Теперь мы готовы загрузить скрипт, который хотим отладить. Если у вас нет скетча для тестирования, вы можете использовать любой пример скетча, найденный в IDE.
Когда мы загружаем скетч с помощью Arduino IDE, нам нужно знать, куда будет сохранён файл .ELF. Соберите ваш проект в Arduino IDE и выделите выходной каталог; он должен выглядеть, например, так:
C:\Users\profile\AppData\Local\Temp\arduino_build_815037
Запишите путь для более лёгкого доступа на следующем шаге.
Путь к файлу .elf в Arduino IDE
Использование с Segger Ozone
Скачайте и установите отладчик Ozone. Если вы используете Windows, обязательно также скачайте J-Link Software and Documentation Pack для Windows.
При запуске Ozone убедитесь, что вы ввели правильный CPU в поле настроек. UNO R4 Minima использует R7FA4M1AB.
Настройки CPU в Ozone J-Link
Перейдите к следующему шагу. Здесь вам нужно изменить Target Interface на SWD. Затем выберите ваше устройство J-Link в списке эмуляторов и перейдите на следующую страницу.
Настройки подключения Ozone J-Link
Теперь вы попадаете в окно, которое просит вас выбрать программу для отладки — именно здесь вы загружаете файл .ELF проекта с временным путём вывода, который мы записали ранее. Перейдите в нужный каталог и выберите файл .ELF.
Расположение временного файла .ELF
В диалоге «optional settings» установите оба параметра «Initial PC» и «Initial Stack Pointer» в значение «Do not set», так как иначе будет пропущен загрузчик Arduino, что может помешать корректной работе скетча.
Дополнительные настройки подключения Ozone J-Link
Когда настройка завершена, Ozone откроет файл, содержащий главную функцию. Вы заметите, что это не тот .ino скетч, который вы написали, поскольку это уровень абстракции, сгенерированный IDE. Чтобы открыть наш .ino скетч, нужно перейти в Find > Find source file на верхней панели инструментов.
Поиск исходного файла в Ozone
В появившемся маленьком окне введите «.ino». Теперь вы должны увидеть файл — выберите его и откройте в Ozone.
Окно поиска исходного файла
Установка точек останова
Как упоминалось выше, точка останова — это намеренная остановка или пауза в определённом месте кода. Вы можете добавить их, кликнув по боковой панели рядом с вашим скетчем, и вы должны увидеть появившуюся красную точку. Теперь вы установили точку останова.
Установка точки останова
Теперь вы готовы начать отладку. Просто перейдите в Debug > Download & Reset Program, чтобы начать отладку вашего скетча.
Начало отладки в Ozone
Вы увидите, как ваш код выполняется и останавливается на строке, где вы установили точку останова. Вы можете установить столько точек останова, сколько хотите, в зависимости от того, где вы хотите остановить свой код. Для получения дополнительной информации о возможностях отладчика Ozone, пожалуйста, перейдите сюда.
Заключение
В этом руководстве вы узнали, как подключить плату UNO R4 Minima к устройству J-Link с помощью контактов SWD и использовать его с отладчиком Ozone. Мы также рассмотрели, как создать файл с помощью Arduino IDE, который можно отлаживать в Ozone. И наконец, как использовать отладчик Ozone для отладки скетча Arduino.