Hallo zusammen, ich habe leider ein kleines Problem mit meinem Atmel Studio. Ich habe vor meinen Arduino Due (Chip Atsam3x8e) mit einem Atmel-ICE Basic über die JTAG-Schnittstelle zu debuggen. Das funktioniert auch soweit wunderbar. Ich kann schrittweise durch meinen Code steppen. Allerdings kann ich mir keine Variablen anzeigen lassen. Wenn ich z.B. dem Watch-Fenster eine Variable hinzufüge, wird mir nur bei Value "Unknown identifier" und bei Type "Error" angezeigt... Die Lösungsansätze, die Variablen als "volatile" zu deklarieren habe ich schon probiert, funktioniert aber leider nicht. Hätte jemand vielleicht eine Idee was ich machen muss? Es wäre echt nett wenn mir jemand helfen könnte!!! Mfg Kilian
Kilian K. schrieb: > Hätte jemand vielleicht eine Idee was ich machen muss? Für Probleme mit deren IDE kannst du natürlich immer auch den Support von AtMicrochip kontaktieren. Ansonsten kannst du ja hier die ELF-Datei mal als Anhang hochladen und sagen, welche Variablen das beispielsweise so betrifft.
Ich habe hier mal ein ganz einfaches Test-Programm geschrieben. Wenn ich dann versuche, die Variablen "state" und "counter" mir im Debugger anzeigen zu lassen, erhalte ich immer nur "Unknown identifier". Wenn ich die Variablen mit "volatile" global deklariere, funktioniert das. Allerdings habe ich bereits ein größeres Projekt, welches ich debuggen möchte und möchte jetzt ehrlich gesagt nicht jede einzelnen Variable global machen. Ich finde leider auch echt keine Lösung wie das funktionieren soll.
Kilian K. schrieb: > Ich finde leider auch echt keine Lösung wie das funktionieren soll. Gibt es immer noch die relativ banale Erklärung dass der Compiler die gewünschte Variable weg-optimiert, dann sieht man sie im Debugger auch nicht. Also im Zweifelsfall mit Null-Optimierung debuggen.
Kilian K. schrieb: > möchte jetzt ehrlich gesagt nicht jede einzelnen Variable global machen. Damit sie nicht wegoptimiert werden, müssen sie ja nur (vorübergehend) "volatile" deklariert werden, deshalb müssen sie nicht unbedingt global werden. Aruinoquäler schrieb: > Also im Zweifelsfall mit Null-Optimierung debuggen. Dann debuggt man allerdings eben auch etwas komplett anderes als das, was man eigentlich möchte.
:
Bearbeitet durch Moderator
Ich habe mal alle Optimierungen ausgeschaltet aber dennoch wurden die Variablen nicht angezeigt...
Die Studio-Version ist aber auch eine aktuelle, oder? Wenn ja, dann kannst du ja mal einen Bugreport bei Atmel dafür aufmachen.
Jörg W. schrieb: > Dann debuggt man allerdings eben auch etwas komplett anderes als das, > was man eigentlich möchte. Der logische Verlauf des Programms sollte sich dadurch nicht ändern, sonst hat der Programmierer was falsch gemacht. Gute Lehrstunde .... Kilian K. schrieb: > aber dennoch wurden die Variablen nicht angezeigt... Glaub ich nich .... (alle Objects gelöscht und neu compiliert?)
Aruinoquäler schrieb: > Der logische Verlauf des Programms sollte sich dadurch nicht > ändern Selbst wenn: allein das geänderte Timing durch die fehlende Optimierung kann im Embedded-Bereich schnell zum k.o.-Kriterium werden, ganz davon abgesehen, dass der Salat danach vielleicht gar nicht mehr in den Controller passt.
Jörg W. schrieb: > Die Studio-Version ist aber auch eine aktuelle, oder? Die Version 7.0.1188 ist installiert. Aruinoquäler schrieb: > Glaub ich nich .... > (alle Objects gelöscht und neu compiliert?) Ich habe alles mal gelöscht aber dennoch wird mir nichts angezeigt... Ich habe noch Visual Micro für Atmel Studio installiert. Könnte das vielleicht der Grund sein??
Kilian K. schrieb: > Ich habe alles mal gelöscht aber dennoch wird mir nichts angezeigt... Mach doch mal ein kleines Beispielprogramm welches den Fehler nachvollziehbar macht und lade es hier hoch. Ich hab hier auch das Studio 7.0.1188 laufen, dann könnte "man" mal nachschauen.
Im Anhang ist ein ganz simples Programm mit 2 Variablen. Wenn ich mir "counter" und "state" im Debugger anzeigen lassen möchte, bekomme ich immer nur " Unknwon identifier". Das zweite Projekt ist das zum debuggen mit dem Atmel-ICE Basic.
:
Bearbeitet durch User
Also ich habe mich in das Chaos deines Projekts nicht eingearbeitet (da geht es wild durch den Gemüsegarten), dafür aber ein neues Projet generiert das eigentlich das tun sollte was du in deinem Beispiel angedacht hast. Prinzipiell fehlt es dir vermutlich am Detailwissen wie man so ein Projekt anlegt. Der Arduino Due braucht auch ein Minimum an Initialisierungs- Code sonst funktioniert er wohl nicht wie erwartet. Das alles wird einem von der Arduino IDE abgenommen (wenn man sie benutzt), aber auch Atmel bietet ja beim Anlegen einenes neuen Projektes einen Arduino Due an (siehe mein Projekt) .....
Arduinoquäler schrieb: > das tun sollte was du in deinem Beispiel angedacht hast. ... und ja, man kann die Variablen im Debugger (ATMEL ICE) tatsächlich sehen!
Jetzt wurden mir die Variablen angezeigt. Wie hast du das denn genau gemacht??? Ich habe leider vorher noch nie mit Atmel Studio gearbeitet... Arduinoquäler schrieb: > Der Arduino Due braucht auch ein Minimum an Initialisierungs- > Code sonst funktioniert er wohl nicht wie erwartet. Das alles > wird einem von der Arduino IDE abgenommen (wenn man sie benutzt), > aber auch Atmel bietet ja beim Anlegen einenes neuen Projektes > einen Arduino Due an (siehe mein Projekt) Ich habe eigentlich nur ein ganz normales Arduino Projekt angelegt. Muss man noch irgenwas spezielles einstellen? Danke schon mal für deine Hilfe!!
Kilian K. schrieb: > Ich habe eigentlich nur ein ganz normales Arduino Projekt angelegt. Ich habe ein ganz normales C-Projekt angelegt und den SAM3X8E angenommen wie er auch auf dem Due vorhanden ist. Will man wirklich den SAM3X8E so laufen lassen wie er auf dem Due drauf ist dann muss man noch etwas mehr tun damit Takt etc stimmen (aber das wird wohl mit dem Arduino Projekt im ATMEL Studio auch so funktionieren). Das ist aber dann Gegenstand eines Lernprozesses den du selbst (eigenständig) durchgehen musst.
Arduinoquäler schrieb: > Will man wirklich den SAM3X8E so laufen lassen wie er auf dem > Due drauf ist dann muss man noch etwas mehr tun damit Takt > etc stimmen (aber das wird wohl mit dem Arduino Projekt im > ATMEL Studio auch so funktionieren). Ich habe jetzt mal versucht mit der Vorlage weiterzuarbeiten und mein bestehndes Projekt zu debuggen. Aber das bekomme ich einfach nicht hin... Ich bekomme die Arduino Libraries nicht eingebunden, weil dann die "Arduino.h" etc. nicht gefunden werden. Was müsste ich machen damit es funktioniert? Bin nämlich gerade etwas am verzweifeln...
Früher gab's mal Schalter dafür, ob überhaupt Debug-Informationen eingebunden werden sollen.
Also mittlerweile bin ich etwas weiter gekommen... Allerdings habe ich leider doch noch paar kleine Fehler, die ich irgendwie nicht wegbekommen. Wenn ich jetzt mein Projekt kompilieren möchte bekomme ich immer folgende Fehlermeldung:
1 | conflicting declaration of C function 'char* utoa(long unsigned int, char*, int)' |
Weiß jemand villeicht wie ich das behoben bekomme???
Kilian K. schrieb: > Weiß jemand villeicht wie ich das behoben bekomme??? Indem du den Konflikt auflöst. Da nur du weißt, was du wo wie hingeschrieben hast, können wir nur raten … Der Prototyp, der dort steht, sieht aber seltsam aus. <stdlib.h> hat als Prototypen:
1 | char *utoa (unsigned int __val, char *__s, int __radix) |
Man beachte insbesondere den Typ des ersten Parameters.
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.