Problem mit avrdude + Bootloader von Martin Thomas (geloest)

OP Admin Persönliche Seite #459625
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
Moderator Persönliche Seite #459660
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.
Gast #459668
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,.. :)
Moderator Persönliche Seite #459671
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.)
#459713
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.
OP Admin Persönliche Seite #459829
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
Moderator Persönliche Seite #459998
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?
#460033
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
Moderator Persönliche Seite #460056
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.
Gast #725134
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren