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?
Grundfunktion geht, solange keine Laufzeitunterstützung erforderlich ist. Also keine dynamische Speicherverwaltung, Runtime-Type-Info und Exceptions.
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.
Was meinst du mit "dynamische Speicherverwaltung"? Und wie siehts mit der Weiterentwicklung aus?
@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.
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.
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.
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.
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?
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
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 ...
> 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.