Forum: Compiler & IDEs Problem mit avrdude + Bootloader von Martin Thomas (geloest)


von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hallo,

ich verwende den Bootloader von mthomas 
(http://www.siwawi.arubi.uni-kl.de/avr_projects/index.html#avrprog_boot) 
auf einem ATmega16. Mit dem AVR-Studio lässt sich der Controller 
programmieren, mit avrdude 5.1 bekomme ich aber beim Schreiben folgende 
Fehlermeldung (Lesen funktioniert problemlos):
1
$ avrdude -p m16 -P /dev/tty.usbserial-3B1 -c avr109 -b 38400 -F -e \
2
  -U flash:w:/Users/andreas/test.hex:i
3
4
Connecting to programmer: .
5
Found programmer: Id = "AVRBOOT"; type = S
6
    Software Version = 0.8; No Hardware Version given.
7
Programmer supports auto addr increment.
8
Programmer supports buffered memory access with buffersize=128 bytes.
9
10
Programmer supports the following devices:
11
    Device code: 0x75
12
13
avrdude: error: selected device is not supported by programmer: m16
14
avrdude: initialization failed, rc=-1
15
avrdude: AVR device initialized and ready to accept instructions
16
17
Reading | ################################################## | 100% 0.01s
18
19
avrdude: Device signature = 0x1e9403
20
avrdude: programmer operation not supported
21
avrdude: programmer operation not supported
22
avrdude: programmer operation not supported
23
avrdude: programmer operation not supported
24
avrdude: programmer operation not supported
25
avrdude: programmer operation not supported
26
avrdude: erasing chip
27
avrdude: reading input file "/Users/andreas/test.hex"
28
avrdude: writing flash (16156 bytes):
29
30
Writing |                                                    | 0% 0.00s
31
avrdude: error: programmer did not respond to command: write block

Hat jemand eine Idee woran das liegen könnte?

Danke

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


Lesenswert?

Probier mal, ob "avr910" besser funktioniert.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hab ich schon probiert, damit tut sich gar nichts: avrdude: 
avr910_recv(): programmer is not responding

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


Lesenswert?

Dann kannst du es nur mit -vvvv mal debuggen.

von kosmonaut pirx (Gast)


Lesenswert?

hallo,
mal "butterfly" probiert? die baudrate, soll die wirklich so krumm sein?
bye kosmo

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


Lesenswert?

kosmonaut pirx wrote:

> mal "butterfly" probiert?

Ist nur ein anderer Name fuer "avr910".

> die baudrate, soll die wirklich so krumm sein?

Was ist an 38400 denn krumm?  Das ist die hoechste der
standardisierten Baudraten.  57600 und 115200 ergaben sich
lediglich aus der eigenartigen Quarzfrequenz, die im Ur-PC
fuer die UART verbaut worden war.

von kosmonaut pirx (Gast)


Lesenswert?

ohne abzuschweifen: warum gibt es in avrdude zwei implementationen, für 
avr910 und butterfly? dass die sehr ähnlich sein sollen, ist mir 
bekannt. wo der unterschied liegt, kA.

und ja, 38400 ist die höchste standardisierte, da haste recht (und wer 
recht hat,.. :)

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


Lesenswert?

kosmonaut pirx wrote:

> ohne abzuschweifen: warum gibt es in avrdude zwei implementationen, für
> avr910 und butterfly?

Gibt es gar nicht: beides sind nur verschiedene Namen in der
avrdude.conf fuer ein und dieselbe Implementierung.  "butterfly"
war zuerst da, weil dieser Bootloader im AVR Butterfly sein
Leben begonnen hat.  Spaeter hat Atmel diesen in der Appnote
AVR910 ein wenig verallgemeinert implementiert, wir haben den
AVRDUDE-Code des Butterfly ein wenig angepasst, und im avrdude.conf
einen zweiten Namen dafuer hinterlegt.  (Der Code der Appnote
enthaelt in einem Unterverzeichnis auch noch den originalen Sourcecode
des Butterfly-Bootloaders.)

von kosmonaut pirx (Gast)


Lesenswert?

hm, avr910.c avr910.h und butterfly.c und butterfly.h . wenn ich's 
richtig kapiert habe, ist avr910 eine verallgemeinerte implementierung 
des butterfly.

anyway, ot.

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


Lesenswert?

Sorry, ich hab' AVR910 und AVR109 verwechselt.

Ja, AVR910 ist in der Tat getrennt davon.  Butterfly/AVR109 ist zwar
davon abgeleitet, aber an vielen Stellen doch unterschiedlich
geworden.  Hat nicht viel Sinn, die in eins zu quetschen.

von Joe D. (kosmonaut_pirx)


Lesenswert?

ok.

nochmal zu dem bootloader zurück:
ich habe festgestellt, das dessen berechnung der baudrate zwar so im 
handbuch drinsteht, aber bei mehr als 8 mhz clock nicht korrekt ist. 
gibt da eine alternativformel von atmel, aber bevor ich nicht kapiert 
habe, warum die besser rechnet, erübrigen sich weitere schritte 
meinerseits bisher.

daher dachte ich, die baudrate macht probleme, so war es bei mir. weiß 
nicht, wieviel clock der mega16 überhaupt mag, beim mega32 habe ich 
grade was von max. 16mhz gelesen.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Folgendes bekomme ich mit -vvvv:
Connecting to programmer: .avrdude: Send: . [1b]
avrdude: Send: S [53]
avrdude: Recv: A [41]

avrdude: Recv: V [56] R [52] B [42] O [4f] O [4f] T [54]
avrdude: Send: V [56]
avrdude: Recv: 0 [30] 8 [38]
avrdude: Send: v [76]
avrdude: Recv: ? [3f]
avrdude: Send: p [70]
avrdude: Recv: S [53]
Found programmer: Id = "AVRBOOT"; type = S
    Software Version = 0.8; No Hardware Version given.
avrdude: Send: a [61]
avrdude: Recv: Y [59]
Programmer supports auto addr increment.
avrdude: Send: b [62]
avrdude: Recv: Y [59]
avrdude: Recv: . [00]
avrdude: Recv: . [80]
Programmer supports buffered memory access with buffersize=128 bytes.
avrdude: Send: t [74]

Programmer supports the following devices:
avrdude: Recv: u [75]
    Device code: 0x75
avrdude: Recv: . [00]

avrdude: error: selected device is not supported by programmer: m16
avrdude: Send: T [54] t [74]
avrdude: Recv: . [0d]
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading |                                                    | 0% 
0.00savrdude: Send: s [73]
avrdude: Recv: . [03] . [94] . [1e]
Reading | ################################################## | 100% 
0.03s

avrdude: Device signature = 0x1e9403
avrdude: Send: F [46]
avrdude: Recv: ? [3f]
avrdude: programmer operation not supported
avrdude: Send: F [46]
avrdude: Recv: ? [3f]
avrdude: programmer operation not supported
avrdude: Send: F [46]
avrdude: Recv: ? [3f]
avrdude: programmer operation not supported
avrdude: safemode: lfuse reads as 0
avrdude: Send: N [4e]
avrdude: Recv: ? [3f]
avrdude: programmer operation not supported
avrdude: Send: N [4e]
avrdude: Recv: ? [3f]
avrdude: programmer operation not supported
avrdude: Send: N [4e]
avrdude: Recv: ? [3f]
avrdude: programmer operation not supported
avrdude: safemode: hfuse reads as 0
avrdude: Send: A [41] . [01] . [fc]
avrdude: Recv: . [0d]
avrdude: Send: g [67] . [00] . [01] E [45]
avrdude: Recv: . [ff]
avrdude: Send: A [41] . [01] . [fd]
avrdude: Recv: . [0d]
avrdude: Send: g [67] . [00] . [01] E [45]
avrdude: Recv: . [ff]
avrdude: Send: A [41] . [01] . [fe]
avrdude: Recv: . [0d]
avrdude: Send: g [67] . [00] . [01] E [45]
avrdude: Recv: . [ff]
avrdude: Send: A [41] . [01] . [ff]
avrdude: Recv: . [0d]
avrdude: Send: g [67] . [00] . [01] E [45]
avrdude: Recv: . [ff]
avrdude: erasing chip
avrdude: Send: e [65]
avrdude: Recv: . [0d]
avrdude: reading input file "/Users/andreas/test.hex"
avrdude: writing flash (16156 bytes):

Writing |                                                    | 0% 
0.00savrdude: Send: A [41] . [00] . [00]
avrdude: Recv: . [0d]
avrdude: Send: B [42] . [00] . [80] F [46] . [0f] . [ef] . [07] . [bb] . 
[0c] . [ef] . [08] . [bb] . [ff] . [cf] . [ff] . [ff] . [ff] . [ff] . 
[ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . 
[ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . 
[ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . 
[ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . 
[ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . 
[ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . 
[ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . 
[ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . 
[ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . 
[ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . 
[ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . [ff] . 
[ff] . [ff] . [ff] . [ff]
avrdude: Recv: . [00]
avrdude: error: programmer did not respond to command: write block

von kosmonaut pirx (Gast)


Lesenswert?

durch -F zwingst du avrdude fortzufahren, obwohl folgender fehler 
aufgetreten ist:

>avrdude: error: selected device is not supported by programmer: m16

von kosmonaut pirx (Gast)


Lesenswert?

ich vermute, du hast den bootloader nicht auf deine mcu angepasst, wie 
es im readme steht

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Doch, wird auch vom AVR-Studio richtig als ATmega16 erkannt. -F braucht 
man, weil avrdude die Bootloader-Signatur für den ATmega16 nicht 
erkennt. Steht auch irgendwo im Readme.

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


Lesenswert?

Andreas Schwarz wrote:

> Doch, wird auch vom AVR-Studio richtig als ATmega16 erkannt. -F braucht
> man, weil avrdude die Bootloader-Signatur für den ATmega16 nicht
> erkennt. Steht auch irgendwo im Readme.

Nimm mal ein aktuelles AVRDUDE (u. U. aus dem CVS), dort wird das nun
endlich über die Signature gemacht bei avr109/butterfly.

> avrdude: Send: F [46]
> avrdude: Recv: ? [3f]
> avrdude: programmer operation not supported
> avrdude: Send: F [46]
> avrdude: Recv: ? [3f]
> avrdude: programmer operation not supported
> avrdude: Send: F [46]
> avrdude: Recv: ? [3f]
> avrdude: programmer operation not supported
> avrdude: safemode: lfuse reads as 0
> avrdude: Send: N [4e]
> avrdude: Recv: ? [3f]
> avrdude: programmer operation not supported
> avrdude: Send: N [4e]
> avrdude: Recv: ? [3f]
> avrdude: programmer operation not supported
> avrdude: Send: N [4e]
> avrdude: Recv: ? [3f]
> avrdude: programmer operation not supported
> avrdude: safemode: hfuse reads as 0

Fuses lesen wird offenbar von diesem Bootloader nicht unterstützt.
Damit kann "safemode" nicht wirklich funktionieren, kannst es auch
gleich mit -u abschalten.  (Stört aber nicht, da safemode überall
immer nur eine 0 zu sehen bekommt.)

> Writing |                                                    | 0%
> 0.00savrdude: Send: A [41] . [00] . [00]
> avrdude: Recv: . [0d]
> avrdude: Send: B [42] . [00] . [80] F [46] . [0f] . [ef] . [07] . [bb] .

Das Kommando sieht völlig in Ordnung aus.  Da kann dir wohl nur der
Bootloader selbst erklären, warum er darauf nicht mehr reagiert.

Gibt's einen Grund, nicht gleich den originalen AVR109 zu benutzen?

von Joe D. (kosmonaut_pirx)


Lesenswert?

ok, denke, hier dran liegts:
1
/* Device-Type:
2
   For AVRProg the BOOT-option is prefered 
3
   which is the "correct" value for a bootloader.
4
   avrdude may only detect the part-code for ISP */
5
#define DEVTYPE     DEVTYPE_BOOT
6
//#define DEVTYPE     DEVTYPE_ISP
aus der main des bootloaders.

avrdude sendet als devicetype
>avrdude: Send: T [54] t [74]

in der mega16.h des bootladers:
1
/* Part-Code ISP */
2
#define DEVTYPE_ISP     0x74

wieder in der main.c:
1
    // Start buffer load
2
    } else if (val == 'B') {
3
[..]
4
      if (device == DEVTYPE) {
5
        if (val == 'F') {
6
          address = writeFlashPage(address, size);
7
8
        } else if (val == 'E') {
9
          address = writeEEpromPage(address, size);
10
        }
11
        sendchar('\r');
12
13
      } else {
14
        sendchar(0);
15
      }

wenn der devicetpe nicht stimmt, schickt er eine 0 zurück anstatt des 
'\r',. das erkennt avrdude als fehler.

denke, das ist es.
bye kosmo

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Danke, das wird's gewesen sein. Mit avrdude 5.2 funktioniert es, der 
kennt den richtigen device type.

@Jörg: Ich wusste nicht dass es AVR109 auch für GCC gibt.

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


Lesenswert?

Andreas Schwarz wrote:

>  Ich wusste nicht dass es AVR109 auch für GCC gibt.

Hab ich mal portiert, und irgendwann haben die Leute von Atmel
Norwegen das dann auch endlich in das Zip-File mit reingenommen.
Den alten, unportablen IAR-Code haben sie aber auch noch liegen
lassen :-(, obwohl mein geänderter Code locker beides unterstützt.

von mA (Gast)


Lesenswert?

Hallo zusammen,

ich habe auch ein kleines Problem, und zwar ich bekomme eine 
Fehlermeldung programmer did not respond to command:exit bootloader

Habe einen MCU atmega8, Programmer avr911

Kann mit einer Verraten was ich falsch gemacht habe?

Sowie bekomme ich leider nicht das Porgramm geöffnet auf meinem Rechner 
Mfile  woran kann das liegen.

Ich habe jetzt einfach ein anderes makefile genommen eins vom meinem 
Laptop. Beide Com Anschlüsse sind an beiden Rechnern gleich.
Habe auf meinem Rechner Windows 2000 SP4 installiert. Sollte doch kein 
Problem geben, aber wieso bekomme ich das Programm Mfile nicht geöffnet 
den auf dem Laptop habe ich XP Prof. installiert.

Vielen Dank

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.