Forum: Compiler & IDEs C++-support


von Michael Stather (Gast)


Lesenswert?

Hallo,

Ich möchte mal in die Mikrocontroller-Programmierung einsteigen, und
bin von den Features der AVL-yCs richtig begeistert. Bin schon ganz
gespannt wann mein Board-Bausatz kommt...
Wie sieht es denn mit dem C++-Support aus, überall höre ich nur von C.
Was funktioniert und was nicht? Stimmt es dass new und delete nicht
funktionieren?

Und wird der gcc/g++-port noch weiterentwickelt, wenn ja von Atmel?

von A.K. (Gast)


Lesenswert?

Grundfunktion geht, solange keine Laufzeitunterstützung erforderlich
ist. Also keine dynamische Speicherverwaltung, Runtime-Type-Info und
Exceptions.

von Christoph _. (chris)


Lesenswert?

new/delete funktionieren IIRC auch korrekt (sie rufen also
Konstruktor/Destruktor auf); eventuell muss man sie jedoch noch
definieren, am einfachsten mit Hilfe von malloc/free.

von Michael Stather (Gast)


Lesenswert?

Was meinst du mit "dynamische Speicherverwaltung"?

Und wie siehts mit der Weiterentwicklung aus?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du wirst auf so Dinge wie die STL oder gar boost verzichten müssen.

von Rolf Magnus (Gast)


Lesenswert?

@Christoph: Stimmt.

new und delete sind bei g++ normalerweise in der libstdc++ enhalten. Da
es diese nicht gibt, sind new und delete zunächst auch nicht definiert.
Sie selbst zu definieren, so daß sie malloc nutzen, ist aber trivial.
Natürlich können sie bei vollem Speicher keine bad_alloc-Exception
werfen.
Ich frage mich, wer noch alles g++ mit AVRs verwendet. Ich habe schon
ein paar nette Klassen, von denen einige aber noch gar nicht getestet
bzw. vollständig sind. Hat jemand anders noch was? Dann könnte man
vielleicht mal eine avr++-lib starten.

@Michael:
Was meinst du im Bezug auf Weiterentwicklung? Was genau soll denn
entwickelt werden? Exceptions und große Teile der Standardbiblothek
(Streams, Container, Strings z.B.) bräuchten viel zu viele Ressourcen
für eine sinnvolle Nutzung auf AVRs. Natürlich könnte man stattdessen
andere - AVR-gerechtere - Klassen basteln.
Das einzige, was mich im Moment wirklich stört, ist, daß vtables im RAM
abgelegt werden.

von Michael S. (kyromaster)


Lesenswert?

Ich meine generell ob das Ganze noch "gepflegt" wird oder ob es (der
C++-support) zB ne beta ist die vor 3 Jahren irgendjemand mal erstellt
hat und die zB bei einem Wechsel der internen gcc-Architektur nicht
mehr funktioniert.

von A.K. (Gast)


Lesenswert?

Der C++-Compiler ist ein fester Bestandteil der GCC - die heisst ja
mittlerweise offiziell "GNU Compiler Collection". Der Codegenerator
ist für alle Varianten immer gleich, und nur der ist AVR-spezifisch.

Insofern besteht allenfalls das Risiko, dass eine fertige binäre
Distribution wie WinAVR irgendwann entscheiden könnte, den C++-Compiler
nicht mit zu übersetzen. Was ich für ziemlich unwahrscheinlich halte.

von Ingo (Gast)


Lesenswert?

Habe mit C++ auf dem AVR schon ein bisschen gearbeitet. Für meinen Teil
habe ich new/delete nicht sehr vermisst. Was mich dazu gebracht hat zu
C zu wechseln ist, dass WinAVR das C++ Debugging nicht unterstützt.

von Michael S. (kyromaster)


Lesenswert?

Kann man denn C debuggen? Also richtig während der Controller läuft.
Also auch Variablen anzeigen und so?
Ich habe gelesen dass es bei manchen Typen ein JTAG-Interface gibt, wie
schliesst man dieses denn an den Computer an? GEht das über den
Programmer?

von A.K. (Gast)


Lesenswert?

Seit wann interessiert sich WinAVR dafür, ob man C oder C++ debuggt?
Freilich geht das mit C++.

von Ingo (Gast)


Lesenswert?

Also bei mir hat das mit der Version von Oktober letzten Jahres nicht
vernünftig funktioniert. Durch den Code steppen (im Simulator) hast
zwar geklappt, aber die Watches wurden nicht sauber geupdated.

Mit C geht das Debuggen sowohl im Simulator als auch via JTAG

von Michael S. (kyromaster)


Lesenswert?

Gibt es eigentlich "billige" JTAG-Interfaces oder Bausätze, oder
kosten die alle 200€ und mehr?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das hängt vom Prozessor ab.
ARMe beispielsweise können mit einem einfachen
Parallelport-JTAG-Interface ("Wiggler"-Nachbau) verwendet werden -
und das gibt es hier im Shop für 20 EUR.

Warum dieses Interface nicht auch für AVRs verwendet werden kann,
entzieht sich meiner Kenntnis. Vermutlich liegt es nur daran, daß noch
niemand eine geeignete Softwareunterstützung dafür geschrieben hat ...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Warum dieses Interface nicht auch für AVRs verwendet werden kann,
> entzieht sich meiner Kenntnis. Vermutlich liegt es nur daran, daß
> noch niemand eine geeignete Softwareunterstützung dafür geschrieben
> hat ...

Yep, wobei die Methode zum Debuggen der AVRs als Firmengeheimnis von
Atmel gilt, lediglich das Programmieren via JTAG ist offiziell
dokumentiert.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das sieht mir nach einer Erklärung aus.
Wobei man mal wieder sieht, daß "Firmengeheimnisse" durchaus nicht
fortschrittsfördernd sind.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.