Forum: Mikrocontroller und Digitale Elektronik AVR flashen mit Dragon & Linux geht nicht


von Hegy (Gast)


Lesenswert?

Hallo,

warum kann ich mit dem Dragon keine AVR flashen auf einem STK500v2-Board 
flashen? Verbindung zum Dragon steht, Meldung von avrdude:

> avrdude -p m48 -c dragon_isp -P usb -e -U flash:w:file.hex
avrdude: jtagmkII_getsync(): sign-on command: status -1
avrdude: jtagmkII_getsync(): sign-on command: status -1
avrdude: jtagmkII_getsync(): sign-on command: status -1
.....

Liegt es an meinem 2.4.30 Kernel? Oder ist es die Verbindung vom Dragon 
zum STK500? Verbunden ist die 6polige Stiftleiste namens ISP auf dem 
Dragon mit dem 6poligen Stiftleiste SPROG2 (grün) auf dem STK500.

Nach Anschluß übrigens des Dragons sind die grüne und rote LED an, nach 
dem avrdude das erste Mal versucht hat zu flashen, ist die rote LED aus 
und bleibt auch aus, die grüne geht ca. alle 5 Sek. kurz aus.

Hegy

von SiO2 (Gast)


Lesenswert?

Du hast noch nen 2.4er Kernel? Ungewoehnlich, aber versuch doch mal ne 
Livecd mit nem 2.6er und dann weisst du obs daran liegt. zwischen 2.4 
und 2.6 sind schon einige Welten.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Schalt mal -vvvv ein.

Hast du den RESET-Jumper des STK500 entfernt?  Kann sein, dass mit
aktivem Treiber am RESET der Dragon keine Chance hat, die
Initialisierung durchzuziehen.

Dumme Frage, warum überhaupt den Dragon benutzen, wenn du doch
einen STK500 hast?  Da kannste doch gleich den STK selbst nehmen...

An der Kernelversion liegt das sicher nicht, die USB-Kommunikation
selbst funktioniert ja offensichtlich.

von Elmar H. (elmar69)


Lesenswert?

> warum kann ich mit dem Dragon keine AVR flashen auf einem STK500v2-Board
> flashen? Verbindung zum Dragon steht, Meldung von avrdude:

Soll der Steuer-Controller des STK500 umprogrammiert werden oder 
möchtest Du einen der Sockel auf dem STK500 zur Programmierung eines 
anderen AVR verwenden?

Letzteres ist vermutlich Unsinn, da das STK500 ja selbst ein 
Programmiergerät ist.

von Norgan (Gast)


Lesenswert?

So unsinnig ist es nicht einen Dragon mit einem STK500 zu verwenden.Der 
Dragon hat ein USB-Interface, das STK500 nicht.

Bezüglich der Dragon-LEDs: Leider hatte Atmel die hirnrissige Idee die 
Dragon-Dokumentation nur als Hilfedatei in das AVRStudio zu packen. 
Entweder hat man als Linux-Nutzer doch noch irgendwo ein Windows um 
AVRStudio zu installieren und die Dokumentation zu bekommen, oder man 
hofft auf einen Glückstreffer mit Google.

von Hegy (Gast)


Lesenswert?

@Norgan:
Mit USB oder Serieller Schnitte hast du vollkommen recht, aber das war 
der Grund nicht. Vielmehr ist es die Tatsache, daß, wie ich in einem 
anderen [Thread]Beitrag "STK500 ISP-Freq. verstellt sich von selbst" 
geschrieben habe, daß ich mit der ISP-Frequenz oder was auch immer ab 
und wann Probleme habe und dann nicht mehr flashen kann. Daher dachte 
ich über den Drachen wird es schon gehen. Zu der Hilfedatei: Es gibt für 
Linux auch Programme, die die compilierten HTML (chm) anzeigen können. 
Ich weiß gerade nicht, wie es heißt, kann aber @home mal nachkukken.

@Jörg W.
Mit -vvvv werde ich es mal versuchen, WENN ich nachgesehen habe, ob der 
RST-Jumper gezogen ist. Ich meine nicht, da ich bisher eigentlich nur 
die Jumper für Quarzgeschichten geändert habe, sind galubich 2 oder 3 
Stück.
Aber erst nachher, wenn ich mal zuhause bin. Zu deiner "dummen Frage", 
siehe Link oben. Auch ein Problem, was ich nicht verstehe.

von Hegy (Gast)


Lesenswert?

Endlich @home, die Lage mal gecheckt, was es mit dem Dragon und dem 
STK500 auf de Hacken hat. Resultat: RESET-Jumper gezogen, avrdude 
aufgerufen mit -vvvv, Ergebnis:

> avrdude -p ATMEGA48 -c dragon_isp -P usb -t -vvvv
1
avrdude: Version 5.4, compiled on Jul 14 2007 at 23:16:29
2
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
3
4
         System wide configuration file is "/usr/local/etc/avrdude.conf"
5
         User configuration file is "/root/.avrduderc"
6
         User configuration file does not exist or is not a regular file, skipping
7
8
         Using Port            : usb
9
         Using Programmer      : dragon_isp
10
avrdude: stk500v2_dragon_isp_open()
11
avrdude: usbdev_open(): Found AVRDRAGON, serno: 00A2000032F1
12
avrdude: jtagmkII_getsync()
13
avrdude: jtagmkII_getsync(): Sending sign-on command:
14
avrdude: jtagmkII_send(): sending 1 bytes
15
avrdude: Sent: . [1b] . [00] . [00] . [01] . [00] . [00] . [00] . [0e] . [01] . [f3] . [97]
16
avrdude: jtagmkII_recv():
17
avrdude: usb_fill_buf(): usb_bulk_read() error error reading from bulk 
18
avrdude: jtagmkII_recv(): Timeout receiving packet
19
avrdude: jtagmkII_getsync(): sign-on command: status -1

Womit bewiesen wäre, daß es am RESET-Jumper nicht liegt. Der Block 
wiederholt sich übrignens immer wieder.

von Hegy (Gast)


Angehängte Dateien:

Lesenswert?

Habe heute mal wieder weitergeforscht, was es mit dem Dragon, dem STK500 
und avrdude auf de Hakken hat, warum es nicht gehen will.

Es geht mit einem Umweg, aber auch nur einmal. Dann Umweg wieder von 
vorne. Es ist übrigens ein Zufallsfund gewesen.

Ich habe mir avarice 2.7 gezogen, übersetzt, Dragon ans STK 
angeschlossen und dann das Kommando abgefeuert.

> avarice -gjusb -B250 -vf irgendeineDatei.pdf
Ok, PDF's vergleichen geht zwar nicht, ist auch nur ein Dummy Befehl, 
die gesamte Zeile. Bevor ich das Kommando abschieße, leuchtet am Dragon 
die rote und grüne LED. Nachdem avarice durch ist, übrigens mit 
Fehlermeldung und fehlendem Parameter -P <dev>, ist die rote LED aus und 
nur noch die grüne ist an.
Die Fehlermeldung von avarice:
1
AVaRICE version 2.7, Feb 21 2008 23:00:06
2
3
JTAG config starting.
4
Found a device: AVRDRAGON
5
Serial number:  00:a2:00:00:32:f1
6
Reported JTAG device ID: 0xFFFF
7
No configuration available for device ID: ffff
So, das war der Umweg, jetzt kommt avrdude ins Spiel und flasht mir über 
USB/Dragon die SW, was erstaunlicherweise geht.
>avrdude -p m168 -P usb -c dragon_isp -v -U flash:w:Datei.hex

(s. Log-Datei im Anhang)

Warum das nur so geht, verstehe ich überhaupt nicht.
Ich habe das deswegen gemacht, weil mal wieder die ISP-Frequenz auf dem 
STK irgendwo da steht, wo kein Mensch die braucht. Das flashen des 1,5kB 
Files dauerte über 20 Sek., das anschließende Vergleichen irgendwo zw. 
40 und 60 Sekunden. Nachdem ich avarice/avrdude via USB benutzt habe, 
kann ich per seriell jetzt wieder etwas schneller flashen/vergleichen, 
dauert jeweils ca. 4 Sekunden.

Wenn ich übrignes bei avarice ein Device angebe (Parameter "-P 
atmega168"), dann geht das nicht, dann sieht auch die Fehlermeldung 
anders aus, nämlich
1
AVaRICE version 2.7, Feb 21 2008 23:00:06
2
3
JTAG config starting.
4
Found a device: AVRDRAGON
5
Serial number:  00:a2:00:00:32:f1
6
Reported JTAG device ID: 0xFFFF
7
Configured for device ID: 0x9406 atmega168 -- FORCED with atmega168
8
JTAG config complete.
9
JTAG ICE: Cannot synchronise

Es gibt auch Meldungen dazu:
1
Feb 22 01:14:59 camelita kernel: usb_control/bulk_msg: timeout
2
Feb 22 01:14:59 camelita kernel: usbdevfs: USBDEVFS_BULK failed dev 33 ep 0x82 len 64 ret -110
3
Feb 22 01:19:52 camelita kernel: usb.c: USB disconnect on device 00:10.1-1 address 33 [Dragon abgestöpselt]
4
Feb 22 01:20:16 camelita kernel: hub.c: new USB device 00:10.1-1, assigned address 34 [Dragon wieder angestöpselt]
5
Feb 22 01:20:16 camelita kernel: usb.c: USB device 34 (vend/prod 0x3eb/0x2107) is not claimed by any active driver.
6
7
Feb 22 01:20:17 camelita usbmgr[621]: vendor:0x3eb product:0x2107
8
Feb 22 01:20:17 camelita usbmgr[621]: class:0xff subclass:0x0 protocol:0x0
9
Feb 22 01:20:17 camelita usbmgr[621]: USB device isn't matched the configuration

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Das riecht alles fürchterlich nach USB-Problemen in deinem System,
insbesondere sowas:

avrdude: usb_fill_buf(): usb_bulk_read() error error reading from bulk

Dein zwischendurch angeschobenes AVaRICE macht ja nur einen kurzen
Smalltalk auf dem USB, da es anschließend feststellt, dass es keine
JTAG-Kommunikation mit dem Target zu Stande bekommt (was angesichts
des ATmega168 nicht verwunderlich ist).

Leider ist USB mittlerweile an Schrottigkeit praktisch das absolut
letzte, was auf dem PC-Markt verscherbelt wird.  Das wird wohl alles
nach der Prämisse gebaut: Hauptsache, es ist billig.  Wir haben in
der Firma auch USB-Hubs, die hin und wieder einen ,,Reboot'' benötigen,
weil die Kommunikation darüber nur noch so halb, aber nicht mehr
richtig funktioniert.

Versuch mal, ob du in diesem Bereich was umbauen kannst an deinem
Setup (Hub weglassen, Hub ersetzen etc.).

Der CHM-Viewer für Unix heißt übrigens xchm.  Dafür, dass die
Dokumentation für ihre Produkte nur unter Windows verfügbar ist, habe
ich bei Atmel schon vor einiger Zeit ein Ticket aufgemacht.  Das
Minimum, was sie tun könnten wäre, die CHM-Dateien wenigstens noch
irgendwo zu veröffentlichen.

von Hegy (Gast)


Lesenswert?

Meine USB-Hardware scheint zu funktionieren, mit Windohs 2000 kann ich 
ohne Probleme mit dem Dragon rumkacheln, auch flashen geht. Ich vermute 
mal, daß es evtl. mit meiner SW zu tun haben könnte. Ich verwende Linux 
mit Kernel 2.4.30, really outdated, ok. Auf ein Update auf die 2.6er 
Serie habe ich mich noch nicht so richtig drangetraut, generell liegt 
das letzte Update über ein Jahr zurück. Aber da hat sich ja einiges in 
sachen USB geändert, z.B. ist udev reingekommen. Bei mir rödelt 
usb_uhci, und ehci_hcd. Angestöpselt habe ich den Dragon direkt am PC 
"Hinterausgang" (Motherboard), auf dem Motherboard sitzt natürlich ein 
Hub, somit habe ich 6 USB-Anschlüsse.
Und das sind meine USB betreffende Boot-Meldungen, übrigens war der 
Drache dabei angestöpselt:
1
usb-uhci.c: $Revision: 1.275 $ time 02:27:24 Apr  9 2005
2
usb-uhci.c: High bandwidth mode enabled
3
usb-uhci.c: USB UHCI at I/O 0xd800, IRQ 10
4
usb-uhci.c: Detected 2 ports
5
usb.c: new USB bus registered, assigned bus number 1
6
hub.c: USB hub found
7
hub.c: 2 ports detected
8
usb-uhci.c: USB UHCI at I/O 0xd400, IRQ 5
9
usb-uhci.c: Detected 2 ports
10
usb.c: new USB bus registered, assigned bus number 2
11
hub.c: USB hub found
12
hub.c: 2 ports detected
13
usb-uhci.c: USB UHCI at I/O 0xd000, IRQ 11
14
usb-uhci.c: Detected 2 ports
15
usb.c: new USB bus registered, assigned bus number 3
16
hub.c: USB hub found
17
hub.c: 2 ports detected
18
usb-uhci.c: v1.275:USB Universal Host Controller Interface driver
19
ehci_hcd 00:10.3: VIA Technologies, Inc. USB 2.0
20
ehci_hcd 00:10.3: irq 10, pci mem e0c84c00
21
usb.c: new USB bus registered, assigned bus number 4
22
ehci_hcd 00:10.3: USB 2.0 enabled, EHCI 1.00, driver 2003-Dec-29/2.4
23
hub.c: USB hub found
24
hub.c: 6 ports detected
25
hub.c: connect-debounce failed, port 1 disabled
26
usbdevfs: remount parameter error
27
hub.c: new USB device 00:10.1-1, assigned address 2
28
usb.c: USB device 2 (vend/prod 0x3eb/0x2107) is not claimed by any active driver.

Ich habe deswegen Windohs mal gebooted, damit ich die ISP-Frequenz auf 
dem STK mal wieder richtig drehen kann. Die stand auf 14,07kHz, jetzt 
steht sie wieder auf 460kHz oder sowas. Dabei habe ich mir den 
Datenverkehr auf der seriellen Schnitte mit aufgezeichnet 
(Registry-Hack, s. Atmel App-Note AVR068 oder so, STK500 Communication 
Protocol) und werde das mal in C reinhacken und mir ein Tool bauen, 
welches die ISP-Frequenz wieder richtig biegt. Alternativ könnte ich 
auch den Quellcode von avrdude ergänzen/vergewaltigen oder auch avarice, 
mal sehen, welcher einfacher zu durchblicken ist.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Alter Schwede was is denn das fuer ne olle Kiste? :D Mal Software 
aktualisieren dann klappt das auch...

von Hegy (Gast)


Lesenswert?

Woran siehst du das, wie alt das alles ist?

Ok, den Pezeh habe ich vor 5 Jahren gekauft aus Einzelteilen (1,6Ghz, 
512 MB RAM, 80GB Platte usw.) und damals Debian Sarge draufgepackt, vor 
einiger Zeit umgestiegen auf Debian Etch und das war es bis heute.

von Andreas B. (bitverdreher)


Lesenswert?

@Michael.G: FULL ACK

>Woran siehst du das, wie alt das alles ist?
Das sieht man an der eingesetzten Software:
Kernel 2.4.30. Wir sind mittlerweile bei 2.6.25. Bei der USB 
Unterstützung hat sich zwischenzeitlich erhebliches getan.

Gruss
Andy

von Hegy (Gast)


Lesenswert?

Die 2.4er Kernelreihe wird dennoch weiter geupdated, auch in Sachen USB. 
Vllt sollte ich auf 2.4.36 upgraden, kukkense mal den hier:

ftp://ftp.eu.kernel.org/pub/linux/kernel/v2.4/LATEST-IS-2.4.36.1
02/16/08   13:21:00

Gerade mal 8 Tage alt.

Aber mit 2.6 lt. ChangeLog hat sich da einiges getan, habe mal die div. 
Changelogs nach dem Begriff USB durchsucht.

An die 2.6er Kerneljuhser: Geht das bei euch mit dem Dragon?

von Olaf D. (Firma: O.D.I.S.) (dreyero)


Lesenswert?

Hi Ihr Alle,

habe zwei Gentoo Systeme am laufen (kernel 2.6.23 und 2.6.24).
Hatte die gleichen Fehlermeldungen bei avarice:
1
olaf@lnxsrvr ~ $ avarice -j /dev/ttyUSB1 --mkII -B250 -l -r
2
AVaRICE version 2.7.20071102, Mar  6 2008 16:18:54
3
4
JTAG config starting.
5
Found a device: JTAGICEmkII
6
Serial number:  00:b0:00:00:0d:a8
7
Reported JTAG device ID: 0xFFFF
8
No configuration available for device ID: ffff

Wenn man einen ATmega168 flashen will muß man debugWire verwenden
1
olaf@lnxsrvr ~ $ avarice -j /dev/ttyUSB1 --mkII -B250 -w -l -r
2
AVaRICE version 2.7.20071102, Mar  6 2008 16:18:54
3
4
JTAG config starting.
5
Found a device: JTAGICEmkII
6
Serial number:  00:b0:00:00:0d:a8
7
Reported debugWire device ID: 0x9406
8
Configured for device ID: 0x9406 atmega168
9
JTAG config complete.
10
11
Reading Fuse Bytes:
12
  Extended Fuse byte -> 0x00
13
      High Fuse byte -> 0x00
14
       Low Fuse byte -> 0x00
15
16
Reading Lock Bits:
17
Lock bits -> 0x00
18
19
    Bit 7 [ Reserved ] -> 0
20
    Bit 6 [ Reserved ] -> 0
21
    Bit 5 [ BLB12    ] -> 0
22
    Bit 4 [ BLB11    ] -> 0
23
    Bit 3 [ BLB02    ] -> 0
24
    Bit 2 [ BLB01    ] -> 0
25
    Bit 1 [ LB2      ] -> 0
26
    Bit 0 [ LB1      ] -> 0

Gruß

Olaf

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Hegy wrote:
> Die 2.4er Kernelreihe wird dennoch weiter geupdated, auch in Sachen USB.
> Vllt sollte ich auf 2.4.36 upgraden, kukkense mal den hier:

Ne ne, nur Bugfixes. Features kommen da nicht mehr rein. Also sorry aber 
ich haett etz da keine Lust ewig nach nem Fehler zu suchen mit nem 
Kernel der 5 Jahre alt is.

von Thomas K. (thkusch)


Lesenswert?

Achso... der Dude ist mit libusb kompiliert..

von Thomas K. (thkusch)


Lesenswert?

Sorry! Falsches Thread!!!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Hegy wrote:

> Dabei habe ich mir den
> Datenverkehr auf der seriellen Schnitte mit aufgezeichnet
> (Registry-Hack, s. Atmel App-Note AVR068 oder so, STK500 Communication
> Protocol) und werde das mal in C reinhacken und mir ein Tool bauen,
> welches die ISP-Frequenz wieder richtig biegt.

Das gibt's schon.  Es heißt AVRDUDE. ;-)

von coldtobi (Gast)


Lesenswert?

> Auf ein Update auf die 2.6er
> Serie habe ich mich noch nicht so richtig drangetraut, generell liegt
> das letzte Update über ein Jahr zurück. Aber da hat sich ja einiges in
> sachen USB geändert, z.B. ist udev reingekommen.

Hast Du konkrete GRünde/Anwendungen, warum Du dich nicht traust?
Schon alleine udev ist so ein Quantensprung, dass es sich rentiert. Das 
usbfs existiert ja trotzdem weiter, so dass eigentlich hier alles 
klargehen sollte.

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.