Как вы отлаживаете код Arduino, работающий на оборудовании Arduino? - PullRequest
36 голосов
/ 29 августа 2011

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

Ответы [ 3 ]

31 голосов
/ 14 апреля 2013

Плагин Visual Micro для Microsoft Visual Studio 2015 Community Edition (бесплатно) предоставляет отладчик USB для Arduino.Это позволяет вам делать именно так, как вы описываете.(Не забудьте нажать, чтобы установить C ++ во время установки IDE)

Отладчик поддерживает последовательный порт, RF, Bluetooth и некоторые Wi-Fi.Он позволяет просматривать или обновлять значения переменных во время работы Arduino.Визуализация диаграмм и данных / выводов вместе с наблюдением, трассировкой, разрывом включена.

Enter image description here

Новости: Январь 2016 также включает выпуск отладчика GDB для Arduino Zero.Как и в случае с отладчиком Serial / Bluetooth, версия GDB поддерживает исходный код ino / cpp, но дополнительно поддерживает отладку ядра и библиотек Arduino.Он поддерживает множество функций, таких как: шаг за шагом, шаг, пошаговая инструкция или строка источника, память, регистры, локальные объекты, наблюдение, выражения в реальном времени и трассировка стека.

24 голосов
/ 30 августа 2011

Способ установки «исходных точек останова» на Arduino состоит в добавлении последовательного выхода для отправки значения, которое вы хотите видеть, на последовательный монитор.

Когда вы будете готовы, следующим шагом будет перемещениедля WinAVR, AVR Studio и Atmel JTAG Mark II или Atmel Dragon.

Эти программы и устройства позволят вам создавать код на C и выполнять пошаговые шаги по коду, а также отслеживать переменные и регистры.Устройства JTAG могут выполнять пошаговый просмотр кода C или кода сборки, созданного компилятором.

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

2 голосов
/ 22 апреля 2015

Для проверки переменных я просто печатаю их на последовательном мониторе. Вот пример, над которым я сейчас работаю:

# Setup
Serial.begin(9600);

# Loop
Serial.println(String(index) + " : " + String(total) + " : " + String(average));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...