mikrocontroller.net

Forum: Compiler & IDEs C++-support


Autor: Michael Stather (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: A.K. (Gast)
Datum:

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

Autor: Christoph __ (chris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael Stather (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was meinst du mit "dynamische Speicherverwaltung"?

Und wie siehts mit der Weiterentwicklung aus?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael Stather (kyromaster)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael Stather (kyromaster)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: A.K. (Gast)
Datum:

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

Autor: Ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Stather (kyromaster)
Datum:

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.