www.mikrocontroller.net

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


Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich verwende den Bootloader von mthomas 
(http://www.siwawi.arubi.uni-kl.de/avr_projects/ind...) 
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):
$ avrdude -p m16 -P /dev/tty.usbserial-3B1 -c avr109 -b 38400 -F -e \
  -U flash:w:/Users/andreas/test.hex:i

Connecting to programmer: .
Found programmer: Id = "AVRBOOT"; type = S
    Software Version = 0.8; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.

Programmer supports the following devices:
    Device code: 0x75

avrdude: error: selected device is not supported by programmer: m16
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9403
avrdude: programmer operation not supported
avrdude: programmer operation not supported
avrdude: programmer operation not supported
avrdude: programmer operation not supported
avrdude: programmer operation not supported
avrdude: programmer operation not supported
avrdude: erasing chip
avrdude: reading input file "/Users/andreas/test.hex"
avrdude: writing flash (16156 bytes):

Writing |                                                    | 0% 0.00s
avrdude: error: programmer did not respond to command: write block

Hat jemand eine Idee woran das liegen könnte?

Danke

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier mal, ob "avr910" besser funktioniert.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann kannst du es nur mit -vvvv mal debuggen.

Autor: kosmonaut pirx (Gast)
Datum:

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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: kosmonaut pirx (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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,.. :)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.)

Autor: kosmonaut pirx (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Joe Die (kosmonaut_pirx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: kosmonaut pirx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
durch -F zwingst du avrdude fortzufahren, obwohl folgender fehler 
aufgetreten ist:

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

Autor: kosmonaut pirx (Gast)
Datum:

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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Joe Die (kosmonaut_pirx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, denke, hier dran liegts:
/* Device-Type:
   For AVRProg the BOOT-option is prefered 
   which is the "correct" value for a bootloader.
   avrdude may only detect the part-code for ISP */
#define DEVTYPE     DEVTYPE_BOOT
//#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:
/* Part-Code ISP */
#define DEVTYPE_ISP     0x74

wieder in der main.c:
    // Start buffer load
    } else if (val == 'B') {
[..]
      if (device == DEVTYPE) {
        if (val == 'F') {
          address = writeFlashPage(address, size);

        } else if (val == 'E') {
          address = writeEEpromPage(address, size);
        }
        sendchar('\r');

      } else {
        sendchar(0);
      }

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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: mA (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.