Есть ли способ или учебник по преобразованию кода Arduino в код C?

127
22

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


Есть ли учебник?


Я просто хочу изучить технику, и я знаю, что это зависит от проекта.

спросил(а) 2012-04-25T02:40:00+04:00 8 лет, 7 месяцев назад
1
Решение
154

Код Arduino, более или менее, код C.


Уникальные вещи, которые происходят с Arduino, состоят в том, что код предварительно обрабатывается (например, они дают простые перехваты, устанавливая функции setup и loop) и имеют управляемый процесс сборки/загрузки, который заботится о границах платы, включает в себя библиотеки и т.д.


Конечно, можно использовать один и тот же инструментарий для создания и запуска кода, как я это делаю. Arduino и GCC, компиляция и загрузка программ с использованием только make файлов - это самая полезная ссылка, которую я нашел, которая охватывает шаги, которые вам нужно приступить к работе.

Как я уже сказал, я покинул Arduino IDE и сам взял маршрут avr-gcc, потому что, если вы знаете инструменты GNU, вы можете делать гораздо более мощные вещи - например, использовать стандартные библиотеки С++. Я пропустил мой vector s, что я могу сказать. avr-libc немного отстает, когда дело доходит до полной функциональности С++, что затрудняет запись в STL, но Энди Браун получил большую часть работы.


Бросьте эти вещи вместе, и у вас есть довольно мощная среда разработки.

ответил(а) 2012-04-25T02:45:00+04:00 8 лет, 7 месяцев назад
100

(Редактирование: я пропустил очень полезную ссылку в ответе Мэтта при написании собственного ответа. Поэтому скажите, что ниже указано не техническое резюме ссылки).


Мэтт ответил правду. Я хотел бы добавить дополнительную информацию.

Ключом к пониманию программирования Arduino является каталог Arduino-1.0\hardware\arduino\cores\arduino


Вы найдете файл main.cpp, содержащий:


#include <Arduino.h>

int main(void)
{
init();

#if defined(USBCON)
USB.attach();
#endif

setup();

for (;;) {
loop();
if (serialEventRun) serialEventRun();
}

return 0;
}


Сделайте "setup()" и "loop()" (и даже "serialEventRun(), если вы читаете документацию Arduino) звоните в колокольчик?: -)


Ардуино скрывает только это.

Arduino использует язык С++. Конечно, вы можете использовать C, если вы скомпилируете свой код самостоятельно с помощью avr-gcc, но так как конфигурация Arduino сконфигурирована, это чистый С++.


Однако, поскольку микроконтроллеры на самом деле не адаптированы к объектно-ориентированной разработке, некоторые функции отсутствуют. Я думаю о "новых" и "удаленных" операторах. Они не существуют, поэтому из коробки вы должны избегать использования кучи при разработке с Arduino. Именно поэтому вы должны быть осторожны, если хотите использовать некоторые стандартные библиотеки С++. Они не могут быть адаптированы для программирования микроконтроллеров (слишком много операций с памятью).


В каталоге Arduino-1.0\hardware\arduino\cores\arduino вы также можете увидеть реализацию библиотеки Arduino. Он позволяет наблюдать, какие функции "низкого уровня" микроконтроллера (от avr-libc) существуют и как вы можете реализовать свои собственные библиотеки и инструменты.


Кстати, поскольку вы хотели знать, как вы могли бы поместить код Arduino на C, avr-libc является библиотекой C, а не С++. Итак, вы можете видеть, как Arduino обертывает свой код С++ кодом C.

В меню File/Preferences вы можете проверить "см. подробный вывод", чтобы узнать, какие параметры и файлы используются для сборки финального двоичного файла Arduino (и где находится временная директория сборки).


Наконец, вы также должны знать, что платы Arduino имеют загрузчик, встроенный в ваш код. Это облегчает развертывание с IDE Arduino на плате Arduino. Таким образом, плата Arduino на самом деле содержит больше кода, чем ваш собственный.

ответил(а) 2012-04-25T09:48:00+04:00 8 лет, 7 месяцев назад
59

Это не учебник по конверсии, а очень хорошая запись о том, что стоит за мир arduino hello: ТУР В АРМЕНИИ ВНУТРЕННИХ ДЕЛ: КАК МИР СЛАВЫ НАСТОЯЩИМ РАБОТАЕТ?

ответил(а) 2012-05-25T20:57:00+04:00 8 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема