Forum: Mikrocontroller und Digitale Elektronik AVR Dragon Firmware und DW/ISP Wechsel Problem


von Klaus W. (Firma: privat) (texmex)


Lesenswert?

Hallo,

nach vielen Jahren habe ich meinen AVR Dragon mal wieder rausgeholt.

Dabei ist mir ein Problem aufgefallen, was ich schon vor 15 Jahren auch 
so hatte:

Wenn man versucht einen Controller zu programmieren, z.B. so:

avrdude -P usb -c dragon_isp -p atmega8 -B 10  \
 -Uflash:w:netmon.hex:i

und das fehl schlägt. Hier im Beispiel war die Versorgungsspannung des 
Controllers viel zu gering, dann passiert folgendes:

avrdude: jtagmkII_getsync(): sign-on command: status -1
avrdude: jtagmkII_setparm(): bad response to set parameter command: 
RSP_FAILED
avrdude: jtagmkII_getsync(): ISP activation failed, trying debugWire
avrdude: jtagmkII_setparm(): bad response to set parameter command: 
RSP_DEBUGWIRE_SYNC_FAILED
avrdude: failed to sync with the AVR Dragon in ISP mode


Soweit alles ok! Nur lässt sich anschließend der Dragon erst wieder zu 
weiterer Zusammenarbeit mit avrdude bewegen wenn man ihn vom USB Bus ab- 
und wieder ansteckt. (Es leuchtet sonst auch nur noch eine der beiden 
LEDs)
Das ist jetzt nicht weiter schlimm, aber manchmal etwas nervig. Gibt es 
keine andere Möglichkeit? Liegt es daran weil avrdude versucht mit 
debugWire etwas zu erreichen nachdem ISP fehlschlägt? Kann man das 
verhindern?

Macht es evtl. Sinn mal die Firmware auf dem Dragon zu aktualisieren? 
Soweit ich weiß geht das ja mit dem AVR Studio. Seither gibt es 
mindestens 4 neue major Versionen. Kann man damit einen so alten Dragon 
noch updaten? Und läuft die neue Firmware besser? Oder handelt man sich 
damit evtl. andere Probleme ein? Abgesehen von dem beschriebenen Problem 
lief das Ding nämlich immer nur vollsten Zufriedenheit.

von Stefan F. (Gast)


Lesenswert?

Mein Dragon ist schon recht alt (ohne Firmware upgrade) und kann 
jedenfalls Problemlos zwischen ISP und DW Modus umschalten. Probiert 
habe ich das allerdings nicht mit avrdude, sondern mit dem AVR Studio.

Deswegen vermute ich den Knackpunkt eher beim Target, nicht beim Dragon.

Vermutlich ist in deinem Mikrocontroller die DWEN Fuse aktiviert. 
Dadurch ist implizit ISP deaktiviert, der Chip ist nur im Debug-Wire 
Modus ansprechbar.

Jetzt kann man im Debug-Wire Modus temporär auf ISP umschalten. Das hält 
dann so lange an, bis man die Stromversorgung aus und wieder ein 
schaltet. Danach ist er wieder im Debug-Wire Modus weil die Fuse immer 
noch aktiviert ist.

Ich würde einfach mal die Fuse kontrollieren und ggf. abschalten.

von Klaus W. (Firma: privat) (texmex)


Lesenswert?

Hm, ne, das lässt sich ja auch völlig ohne Target reproduzieren.
Mit dem Dragon ist dann per USB keine Kommunikation mehr möglich.
Bis man ihn Aus- und wieder Ansteckt.

Wohlgemerkt bezieht sich das alles auf avrdude als Software.

avrdude version 6.3-20171130

von Stefan F. (Gast)


Lesenswert?

Klaus W. schrieb:
> Hm, ne, das lässt sich ja auch völlig ohne Target reproduzieren.

Schade, dann ist es wirklich was anderes.

von Klaus W. (Firma: privat) (texmex)


Lesenswert?

Also grundsätzlich scheint es so zu sein, dass sich der dragon nach 
jedem erfolgreichen Programmiervorgang mit avrdude am usb Bus neu 
anmeldet.

Und falls er das mal nicht tut, weil der Vorgang nicht korrekt 
abgeschlossen werden konnte, lässt er sich nur durch ab- und Anstecken 
vom Bus wieder zur Mitarbeit bewegen.

Update habe ich inzwischen gemacht:

         Programmer Type : DRAGON_DW
         Description     : Atmel AVR Dragon in debugWire mode
         M_MCU hardware version: 1
         M_MCU firmware version: 7.38
         S_MCU hardware version: 6
         S_MCU firmware version: 7.38

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.