Как Atmel Studio 7 компилирует и отлаживает код Arduino?

Atmel заявила на своем сайте:

Atmel Studio 7 обеспечивает простой импорт проектов, созданных в среде разработки Arduino, одним щелчком мыши. Ваш эскиз, включая все библиотеки, на которые он ссылается, будет импортирован в Studio 7 как проект C ++. После импорта вы можете использовать все возможности Studio 7 для точной настройки и отладки вашего проекта. Atmel Studio 7 полностью поддерживает мощный встроенный отладчик на плате Arduino Zero. Для других плат Arduino доступны экранирующие адаптеры, которые предоставляют отладочные разъемы, или переключитесь на одну из многих доступных плат Xplained-Mini / PRO, чтобы полностью использовать экосистему Atmel HW. Независимо от того, что вы выберете, вы обязательно сделаете что-то удивительное.

Интересно, как это работает? Это просто плагин (visual-micro), означающий, что нам все еще нужно установить программное обеспечение Arduino? Или у них есть свой компилятор и отладчик?

2

Решение

Чтобы завершить Danny_ds ответ:

«Стандартный» компилятор Atmel для Arduino (и 8-битного AVR) в настоящее время avr-gcc, GCC расшифровывается как GNU Compiler Collection (так что это бесплатный программный инструмент).

Это набор инструментов, используемый в Arduino IDE и Atmel Studio. Обратите внимание, что Atmel Studio настраивается, он может использовать другие наборы инструментов / компиляторы (кто-то сказал мне, что существует как минимум 8 AVR-компиляторов).

Чтобы понять, как можно импортировать наброски Arduino в Atmel Studio, лучше понять, что такое arduino:

  • «Макет», работающий на чипе Atmega328
  • Библиотека (API импортируется, когда #include <Arduino.h> ранее Program.h IIRC)
  • IDE, которая выполняет всю работу редактора и «makefile»

Давайте вытолкнем стек:

Во-первых, вы можете стереть Arduino IDE, используя свой собственный редактор и make-файлы. Увидеть Arduino Makefile на GitHub для легкого перехода к этому.
Для этого вам, возможно, придется добавить включение Arduino.h в ваш набросок. Но у вас есть полный контроль над обработкой исходного дерева. Это было моей мотивацией, когда рано выходил из Arduino IDE, потому что к тому времени было невозможно использовать 2 библиотеки в одном наброске, что позволяло Arduino-Makefile.

Во-вторых, если вы не планируете использовать Serial класс (управление интерфейсом UART / USB для обмена текстовыми сообщениями консоли с Дуино), возникает искушение удалить зависимости … Я попытался, и я пришел к выводу, что переписывание функций, таких как setMode(), digitalRead() и пиши и т.д … просто очевидно: просто откройте таблицу данных PDF рядом с вашим кодом и установите соответствующие биты.

Преобразование АЦП, управление таймером / счетчиком, чтение / запись eeprom и даже управление подключением UART все сложнее, поскольку они подразумевают непосредственное управление регистрами ввода-вывода AVR и понимание подсистемы, с которой вы взаимодействуете … Но не невозможно !!

Более того, более вероятно, что (кроме Arduino) доступны (бесплатные) библиотеки для управления этими заданиями.

После этого шага ваше исходное дерево может быть импортировано как есть в Studio, и (при условии, что ваш компилятор все еще установлен на GCC, а Atmel Studio знает о ваших зависимостях), оно будет скомпилировано без проблем.

Поэтому Atmel Studio нужно просто импортировать библиотеку Arduino в проект (и, возможно, добавить несколько заголовков, как мы должны сделать вручную), чтобы скомпилировать ее как собственный проект.

НОТА что вставка некоторых существующих файлов и, в частности, целых существующих каталогов, является трудной задачей для Studio.

1

Другие решения

Код Arduino — это простой код C ++ (включая некоторые библиотеки C ++).

Разница в том, что в Arduino IDE вы не видите весь код. Например, main() является скрытый и составлено за кулисами.

Только в эскизе Arduino setup() а также loop() видны, но те, которые вызываются из скрытого main() (который вызывает loop() несколько раз).

Таким образом, для компилятора Atmel C ++ не должно быть проблем с компиляцией эскиза, созданного в Arduino IDE, поскольку это уже полный проект C ++.

1

По вопросам рекламы [email protected]