Andere Programmieroptionen als C ++


14

Kann ich mein Arduino mit einer anderen Programmiersprache als C ++ programmieren? Wenn ja, welche Programmiersprachen? Welche Software benötige ich, um meinen Code zu kompilieren und auf das Arduino zu laden?



Leider ist dies ein effektives Duplikat einer Nicht-Arduino.SE-Frage: siehe hier Ich denke, die Frage, die ich verlinkt habe, sollte nach Ende der Beta hierher verschoben werden, aber noch nicht.
Apnorton

@anorton Diese Frage bezieht sich auf alternative IDEs. Diese Frage ist kein Duplikat, da es sich um alternative Programmiersprachen handelt.
Dienstag,

@ user2202326 Entschuldigung ... Ich erinnere mich an mehr Leute, die in diesem Thread mit anderen Sprachen als IDEs geantwortet haben, aber anscheinend habe ich mich geirrt. Mach weiter.
Apnorton

Sie könnten sich mit Netduino befassen, wenn Sie mit C # vertraut sind (Visual Studio ist der richtige Weg, aber es gibt auch andere Möglichkeiten, C # -Code zu kompilieren). Ich weiß nicht, welches Board du hast und ob es trotzdem kompatibel ist. netduino.com
Jason Down

Antworten:


5

Einige allgemein bekannte:

Theoretisch sollten Sie in der Lage sein, avr-gcc auf andere Sprachen auszudehnen, auch wenn dies kein kleines Unterfangen ist. Ich sollte auch Vorbehalt , dass die Unterstützung für andere Sprachen als C typischerweise mit einigen ziemlich gewichtige Beschränkungen für Sprachkomponenten kommt - zum Beispiel auch mit C ++ es entmutigt als neue Objekte zu instanziieren mallocund freesind extrem teuer in sowohl Speicherplatz und Zyklen.

Neben der Verwendung von Google gelten die folgenden Verweise. Klicken Sie hier.


8

Theoretisch könnte jeder Compiler verwendet werden, der AVR-Assembler ausgibt (Modulo-Beschränkungen in Bezug auf Codegröße, RAM-Nutzung usw.).

AVR-Backends gibt es sowohl für LLVM als auch für GCC. Theoretisch könnten mit einigem Aufwand die meisten Sprachen, die von LLVM und den Frontends von GCC unterstützt werden, für AVR kompiliert werden. Eine große Frage wird die Bibliotheksunterstützung usw. sein.

Nichtsdestotrotz gibt es hier ein paar seltsame Möglichkeiten für den Grundgedanken der Frage und nicht für den Buchstaben [1].

Oh, und Sie könnten rohe AVR Assembly schreiben !

[1] - Ich habe das aber nicht ausprobiert!


2

Es gibt auch einige Leute, die an Systemen arbeiten, die auf Javascript node.js basieren. Eine, die bereits öffentlich verfügbar ist, ist Espruino und eine andere ist Tessel, die im Frühjahr 2014 auf den Markt kommt .


1

Da avr-g ++ alle Standard-C / C ++ - Konstrukte unterstützen sollte, ist es möglich, Inline-Assemblys zu codieren. Mehr Infos in diesem arduino.cc Forum Thread


Inline-Assemblierung ist nicht Teil der C / C ++ - Standards, aber gcc und der Microsoft C-Compiler unterstützen sie, obwohl sie nicht kompatibel sind.
Bis zum

true, und avr_gcc auch.
Faux_Clef

Es gibt nichts Schöneres, als ausführbaren Code in Hex zu schreiben.
Faux_Clef

1

Ich bin überrascht, dass niemand die AVR-Versammlung erwähnt hat !

Assemblieren wird oft nicht als die interessanteste oder einfachste Programmiermethode angesehen, aber es ist dennoch 100% ig mit jedem AVR-basierten Arduino möglich. SAM-Boards werden wahrscheinlich nicht mit dieser Variante funktionieren, aber es ist immer noch möglich, Assembly in ihrer Programmierung zu verwenden.

Alle Arduino-Boards (ab Veröffentlichung) unterstützen die Assembler-Programmierung über Atmel Studio , das SDK für Atmel-basierte Chips.

Assembly wird von allen Atmel-Geräten naiv unterstützt und benötigt keinen Bootloader, um zu funktionieren, sodass alle Programme von Natur aus in Echtzeit ausgeführt werden.


2
Beachten Sie, dass Assembly auch von der gcc-Toolchain unterstützt wird, die in der Arduino IDE-Installation enthalten ist.
Edgar Bonet

@EdgarBonet Korrigieren, weshalb das __asm__("Assembly code here")Hinzufügen einer Inline-Baugruppe zu jeder Skizze funktioniert. Für die meisten Programme ist dies jedoch eine schlechte Idee, da es mit dieser Methode schwierig ist, Plattformunabhängigkeit zu erreichen.
Tuskiomi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.