Написание программы на C вне Arduino IDE?


12

Мне нравится идея использовать Arduino IDE для простых проектов и для начала работы с Arduino, но до сих пор я достиг консенсуса, что он предназначен для тех, кто плохо знаком с Arduino и / или программированием в целом.

Насколько я понимаю , можно написать программу на C с нуля, полностью вне Arduino IDE, а затем использовать инструмент, такой как AVRDUDE, для загрузки ее в MC Arduino. Этот вариант, хотя и привлекательный и интересный, оставляет у меня несколько проблем:

  • Какие библиотеки Arduino необходимо импортировать / связывать с помощью такой «сырой C» программы? Я предполагаю, что когда программа на Arduino IDE выполняет a, digitalWrite(...)она на самом деле вызывает библиотеку C, вероятно, предоставляемую Arduino, изнутри. Я обеспокоен тем, чтобы все эти «базовые библиотеки» были включены в мою C-программу. Мысли?
  • Что-нибудь еще "потеряно", летая соло и рискуя вне Arduino IDE? Какие-нибудь возможности / функции, которые мне теперь пришлось бы «катать самостоятельно»?

arduino.stackexchange.com/questions/9538/… Ответы на мой вопрос помогли мне его настроить. Вы можете заменить / пропустить что-нибудь из Arduino. Вы можете: -Сделать свою доску. -Используй свою собственную IDE. -Используйте свои собственные библиотеки.
Пол

Ответы:


4

Вот две хорошие статьи о том, как Arduino работает в фоновом режиме. Как это убрало трение из программирования микроконтроллера.

  1. Тур по Arduino Internals: как на самом деле работает Hello World?
  2. Arduino и GCC, компиляция и загрузка программ с использованием только make-файлов

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


Спасибо @Michal Foksa (+1) - я просто потрясен, что ответ на этот вопрос не намного более известен! Я бы подумал, что в Arduino IDE есть, скажем, lib/каталог где-то под установочным корнем, где есть такие вещи, как arduino-core.dll, arduino-io.dllи т. Д.
smeeb

@smeeb: Вы правы, установка Arduino IDE содержит - должна - включать библиотеки основных функций времени выполнения плюс предоставляемые пользователем. На полпути вниз по странице ссылки 2 в make-файле на них указывает символ LIBS. Они не являются .dll (которые в Windows вызываются во время выполнения); это объектные файлы (.o в unix-подобных системах, вероятно, те же в Windows), которые статически связаны с вашими скомпилированными объектными файлами в (в конечном счете) загрузочный файл .hex, который является полным образом загрузчика. ...
JRobert

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

К сожалению, по старым причинам вы создаете программное обеспечение Arduino совсем не так, как принято. В «устранении трений», чтобы сделать это простым, они создали огромное несовместимое сообщество. Каждый «плагин» IDE - это попытка заставить что-то нестандартное работать почти стандартным способом. Имейте это в виду, когда сталкиваетесь с проблемами.

5

Вы абсолютно правы в отношении ссылок на другие библиотеки. Однако вам не обязательно беспокоиться обо всех деталях самостоятельно, если вы не хотите / не должны делать что-то необычное. Несколько альтернативных IDE уже поддерживают Arduino, обычно с помощью плагинов, которые автоматически обрабатывают многие детали.

Обычно я рекомендую Eclipse, поскольку это очень широко используемая среда разработки для различных целей. Однако есть несколько других возможностей. Смотрите этот вопрос для получения дополнительной информации:


Спасибо @Peter R. Bloomfield (+1) - однако я действительно ищу не ориентированный на IDE ответ. Не то чтобы я имел что-то против IDE, просто для того, чтобы понять «библиотечный ландшафт» Arduino, я чувствую, что IDE - просто ненужный посредник. Сказав это, я бы предположил, что есть 1+ «базовых библиотек», с которыми должны связываться ВСЕ приложения Arduino, и что существуют дополнительные библиотеки, которые могут вам понадобиться или не понадобиться, в зависимости от того, что на самом деле делает ваше приложение. Можете ли вы указать мне список этих «основных библиотек», а также любые другие дополнительные? Еще раз спасибо!
Смееб

И чтобы уточнить то, что я говорил выше о том, что IDE являются «ненужными посредниками», я действительно имею в виду следующее: я должен иметь возможность писать приложение на C вне любой IDE (Arduino, Eclipse или иным образом), ссылаться на библиотеки Arduino, которые мое приложение нуждается, и все еще компилировать / развертывать приложение на оборудовании Arduino. Мне интересно, что это за библиотеки и где я могу найти документацию по ним.
Смееб

@smeeb Учитывая, что Arduino предназначен для начинающих, я не думаю, что есть много (если таковые имеются) официальной документации в этом направлении. Я ожидаю, что лучший способ исследовать это - поискать в Интернете примеры make-файлов Arduino. Внизу этой страницы есть несколько старых примеров .
Питер Блумфилд

@smeeb: Как и вы, я не фанат IDE. В Интернете есть несколько универсальных make-файлов Arduino. По сути, вам нужно скомпилировать базовую библиотеку Arduino в libore.a, а затем скомпилировать ваш файл .ino, -x c++ -include Arduino.hчтобы ваш компилятор понял его (плюс кучу -D, -Iи т. Д.) И связать с libcore.a.
Эдгар Бонет

0

Да, вы можете написать программу вне Arduino IDE. Например, я попробовал Eclipse IDE с плагином AVR, и теперь я использую AVR Studio. Конечно, у вас не будет некоторых функций, которые вы обычно используете при написании в Arduino IDE, а также некоторые библиотеки. Но почему бы не попробовать реализовать вещи. Зачем ограничивать себя функциями и библиотеками, созданными другими, когда вы можете изучать и писать свои собственные, возможно, лучше, чем существующие.


-3

ESP8266 + Arduino IDE 1.6.4 Portable - Полное руководство по быстрой установке www.instructables.com /.../ ESP8266-Arduino-IDE-164-Portable-F ...

Все ваши файлы Arduino IDE v 1.6.4, включая расширение ESP8266, эскизы, установленные библиотеки и т. Д., Должны находиться только в новой созданной папке «arduino-1.6.4».


Это не очень полезный ответ. Ссылка не является реальной ссылкой. И даже если бы это было так, Stack Exchange не одобряет ответы только по ссылкам, так как связанный сайт может выйти из строя. Пожалуйста, уточните свой ответ.
Ник Гэммон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.