Опции программирования, отличные от C ++


14

Могу ли я программировать свой Arduino, используя любой другой язык программирования, кроме C ++? Если да, то какие языки программирования? Какое программное обеспечение мне понадобится для компиляции и загрузки моего кода на Arduino?



К сожалению, это эффективный дубликат вопроса, не относящегося к Arduino.SE: смотрите здесь, я думаю, что вопрос, который я связал, должен быть перенесен сюда после окончания бета-тестирования, но не только пока.
Апнортон

@anorton Этот вопрос задает об альтернативных IDE. Этот вопрос не является дубликатом, потому что он говорит об альтернативных языках программирования.
tstew

@ user2202326 Извините ... Похоже, я вспомнил, что в этой теме больше людей отвечали на разных языках, чем на IDE, но, видимо, я ошибался. Продолжать.
Апнортон

Вы можете заглянуть в Netduino, если вы знакомы с C # (Visual Studio - это путь, но есть и другие способы компиляции кода C #). Я не знаю, какая у вас плата и совместима ли она. netduino.com
Джейсон Даун

Ответы:


5

Некоторые общеизвестные:

Теоретически, вы должны иметь возможность расширять avr-gcc для поддержки других языков, хотя это немалая задача. Я хотел бы также предостережение , что поддержка других языков , чем C , как правило , поставляется с некоторыми довольно весомые ограничения на компоненты языка - например, даже с C ++ это не рекомендуется , чтобы быть инстанцировании новые объекты , как mallocи freeочень дорогие и в пространстве памяти и циклов.

Помимо использования Google, следующие ссылки применимы Нажмите здесь.


8

Теоретически, можно использовать любой компилятор, который выводит сборку AVR (ограничения по модулю на размер кода, использование оперативной памяти и т. Д.).

Бэкэнды AVR существуют как для LLVM, так и для GCC, поэтому теоретически, при определенных усилиях, большинство языков, которые поддерживаются LLVM и интерфейсами GCC, могут быть скомпилированы в AVR. Большим вопросом будет поддержка библиотеки и т. Д.

Тем не менее, вот несколько странных вариантов для духа вопроса, а не его буквы [1].

  • Далее , четвертый диалект может быть перенесен на Arduino.
  • AVR-Ada : Ada для микроконтроллеров AVR.
  • ОСНОВНЫЕ : Верните Goto!

Ох, и вы могли бы написать сырье AVR Assembly !

[1] - Я не пробовал это все же!


2

Есть также некоторые люди, работающие над системами на основе Javascript node.js. Один из них уже доступен для общественности - Espruino, а другой - Tessel, который будет выпущен весной 2014 года.


1

Поскольку avr-g ++ должен поддерживать все стандартные конструкции C / C ++, можно кодировать встроенную сборку. Больше информации на этой ветке arduino.cc


Встроенная сборка не является частью стандартов C / C ++, но gcc и компилятор Microsoft c поддерживают ее, хотя и несовместимо.
tbodt

правда, и так же avr_gcc.
Faux_Clef

В любом случае ничто не сравнится с написанием исполняемого кода в шестнадцатеричном формате.
Faux_Clef

1

Я удивлен, что никто не упомянул AVR Assembly !

Сборка не часто считается самым интересным или даже простым методом программирования, но, тем не менее, она на 100% возможна для всех Arduino на базе AVR. Платы SAM, скорее всего, не будут работать с этим видом, но все же возможно использовать ассемблер в их программировании.

Все платы Arduino (на момент публикации) поддерживают программирование сборки через Atmel Studio . SDK создан для чипов Atmel.

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


2
Обратите внимание, что сборка также поддерживается набором инструментов gcc, который включен в установку Arduino IDE.
Эдгар Бонет

@EdgarBonet Правильно, поэтому __asm__("Assembly code here")работает, чтобы добавить встроенную сборку в любой эскиз. Однако для большинства программ это плохая идея, поскольку с помощью этого метода трудно добиться независимости от платформы.
Tuskiomi
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.