Forum: Mikrocontroller und Digitale Elektronik Atmel Studio 7, ATMEGA2560/2561 debuggen


von Helge T. (htefs)


Lesenswert?

Hallo Allerseits!
Wer keine langen Vorreden lesen will, springt bitte direkt zum letzten 
Abschnitt dieses Postings.

Ich verwende seit geraumer Zeit ATMEGS2560 und ATMEGA2561 für diverse 
Projekte. In der Vergangenheit habe ich immer mit dem uralten AVR Studio 
4 und WinAVR gearbeitet. Als Debugger habe ich den JTAG ICE MK II oder 
den AVR Dragon verwendet. Funktionierte soweit ganz gut und problemlos.
Dann kam Windows 10. Danach hatte ich ein Problem mit dem Compilieren 
das sich aber durch den Austausch einer Datei vom WinAVR beheben lies. 
Allerdings dachte ich, dass es an der Zeit wäre, doch mal zu einer 
neueren Version vom Atmel Studio zu wechseln. Also Studio 7 
heruntergeladen und installiert. Projekt Importieren und Kompilieren 
ging problemlos. Beim Programmieren musste erstmal die Firmware vom JTAG 
ICE MK II aktualisiert werden, was ich auch getan habe. Danach das gute 
Stück neu gestartet, alles nichts Besonderes. Der ATMEGS2561 lies sich 
danach auch programmieren und die Software lief auch. Aber wenn ich mal 
debuggen wollte, bekam ich eine Fehlermeldung (leaveprogmode failed). 
Das Ganze mit dem Dragon probiert, gleiches Ergebnis. Da ich fertig 
werden musste, habe ich das Studio 7 wieder runtergeworfen und das alte 
4-er wieder aufgespielt: Weder der JTAG, noch der Dragon wurden vom 
Studio 4 erkannt. Firmwaredowngrade ging nicht. Also alten Laptop 
vorgekramt (WinXP), Studio 4 war da noch drauf, JTAG und Dragon wurden 
erkannt, Firmwaredowngrade funktionierte, ich konnte erstmal 
weiterarbeiten...
Dann auf der embedded world am Stand von Atmel mal gefragt, ob da ein 
Problem bekannt ist. Die drei befragten Herren waren nicht in der Lage, 
eine vernünftige Auskunft zu geben. "Was? Mit dem alten Ding 
programmieren Sie noch? Da sollten Sie sich vielleicht den neuen ATMEL 
ICE zulegen. Der JTAG ICE MK II ist doch schon mindestens 10 Jahre 
alt..." - "Hier am Stand wird Ihnen keiner helfen können. Da müssen Sie 
mal online einen Case beim Support eröffnen, da sitzen dann die 
Spezialisten, die können garantiert helfen.". Ich habe Beides getan. 
Einen ATMEL ICE gekauft und eine Anfrage an den Atmel Support 
geschrieben. Letzterer fragte noch zusätzliche Infos ab und lies sich 
ein ausführliches Log schicken, danach teilte man mir mit, dass der Fall 
an die interne Abteilung weitergegeben wurde. Seit nichts mehr. Der 
zwischenzeitlich angekommene nagelneue ATMEL ICE brachte auch keine 
Lösung, der steigt mit der gleichen Fehlermeldung aus.
Der Witz am Ganzen ist: Ich kann mit dem Studio 7 und dem JTAG ICE MK II 
"kleinere" Prozessoren, wie den ATMEGA32 oder den ATMEGS1284 debuggen. 
Nur bei den 256-er geht es nicht. Die Installation ist also 
grundsätzlich in Ordnung. Ich habe das Ganze auch noch auf einem 
weiteren Rechner und auf einem "jungfräulichen" Laptop probiert. Das 
Ergebnis blieb immer das Gleiche.

Nun meine eigentliche Frage: Hat hier schon einmal jemand mit dem Atmel 
Studio 7 ein Programm auf einem ATMEGA2560 oder ATMEGA2561 debuggen 
können, oder bin ich der Einzige mit diesem Problem?
Gruß, Helge

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Hab genau diese Konfiguration (demnächst) im Einsatz,  ich geb Dir dazu 
noch eine Rückmeldung falls hier keine Reaktion mehr kommt!

von Helge T. (htefs)


Lesenswert?

Na da bin ich mal gespannt. Sobald sich Atmel mit einer Lösung meldet, 
werde ich das natürlich auch hier verkünden.
Gruß, Helge

von Helge T. (htefs)


Lesenswert?

So...
Da ich versprochen habe, hier das Ergebnis der Supportanfrage 
mitzuteilen, werde ich das mal noch nachholen...

Atmel hat sich viel Zeit gelassen und trotzdem keine Lösung gefunden. 
Die konnten das Problem nicht nachstellen. Ich sollte das Studio 
deinstallieren, alles bereinigen und dann neu installieren. Hab ich 
gemacht, hat nichts gebracht. War auch logisch, denn auf dem 
"jungfräulichen" Laptop lief es ja auch nicht.
Ich hatte zwischenzeitlich ein kurzes Testprogramm geschrieben, das ich 
auf allen bei mir vorhandenen ATMEGA ausprobieren wollte. Ich habe ein 
STK500 und dazu verschiedene Aufsätze, so dass ich eine Menge 
Prozessoren testen konnte. Prozessor im Studio ändern, richtigen 
Prozessor auf das Board stecken, neu compilieren, auf den Prozessor 
spielen, Debuggen starten. Ist alles kein großer Zeitaufwand. Ich hatte 
mit den kleinen Prozessoren angefangen und da lief alles, wie gewollt. 
Erstaunlicherweise lief das Testprogramm auch auf den großen 
Prozessoren, auf denen mein "Arbeitsprogramm" nicht laufen wollte. Ich 
dachte erst, das es mit der Größe des Programmes zusammenhängen könnte 
und habe angefangen, mein "Arbeitsprogramm" soweit runterzurüsten, bis 
es die Größe des Testprogrammes hatte. Erstaunlicherweise kam aber immer 
noch die gleiche Fehlermeldung. Die Größe ist also nicht der Auslöser. 
Also habe ich nachgedacht, worin sich das Test- und das Arbeitsprogramm 
unterscheiden und was der Unterschied zu den anderen, auf den kleineren 
Prozessoren getesteten Programmen, ist.
Die Lösung ist recht simpel:

Ich hatte in den Arbeitsprogrammen in der Hauptdatei unter dem #define- 
und include-Teil folgende Zeilen stehen (Beispiel ATMEGS2560):
1
FUSES = 
2
    {
3
        .low = 0xf7,
4
        .high = 0x9e,
5
        .extended = 0xfc,
6
    };

Das hatten wir reingeschrieben, damit die Fuses in der elf-Datei 
auftauchten und beim Flashen mit gesetzt werden. Mit dem Studio 4 hatte 
das nie Probleme gemacht. Wir haben das auch nicht aus der Luft 
gegriffen, denn laut der Info unter folgendem Link ist das so korrekt:
http://www.nongnu.org/avr-libc/user-manual/group__avr__fuse.html

Wenn ich den Abschnitt auskommentiere, funktioniert das Debuggen im 
Studio 7 auch auf dem ATMEGS2560 mit dem ungekürzten Arbeitsprogramm. 
Und das auch mit dem JTAG ICE MK II und dem AVR Dragon.
Ich vermute, dass im Studio 7 erst die OCD-Fuse gesetzt wird und danach 
der FUSES-Abschnitt abgearbeitet und die Fuses entsprechend gesetzt 
werden. Dabei wird die OCD-Fuse wieder resettet und man kann nicht mehr 
debuggen.

Wir leben jetzt damit, dass wir die Fuses nicht mehr in der elf-Datei 
haben. Hatten das sowieso eher selten genutzt. Ich habe die Lösung 
meines Problems trotzdem an Atmel geschickt und die haben das an die 
interne Bearbeitung weitergeleitet. Vielleicht funktioniert das Ganze ja 
wieder in einer der Folgeversionen.

Gruß, Helge


EDIT: Gerade gefunden, das selbst Atmel das in ihrer Beschreibung zur 
AVR-libc hat:
http://www.atmel.com/webdoc/AVRLibcReferenceManual/group__avr__fuse.html

: Bearbeitet durch User
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.