Brennen des Arduino-Bootloaders mit Avrdude und AVR Dragon auf ATmega32U4 schlägt fehl

Ich versuche, einen Bootloader auf einem ATmega32U4 aka. Arduino Micro, das nicht erfolgreich ist. Ich verwende einen AVR Dragon mit ISP-Schnittstelle.

avrdude -c dragon_isp -p m32u4 -P usb -U flash:w:Caterina-Micro.hex -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U efuse:w:0xcb:m -U lock:w:0x2f:m

Wenn dieses Kommando ausgeführt wird, erhalte ich eine Reihe folgender Fehler:

savrdude: stk500v2_jtagmkII_recv(): failed

Betriebssystem: OSX Mavericks

Avrdude: v6.1

AKTUALISIEREN

Wenn ich das -BFlag damit setze 200, beginnt es eindeutig, den Bootloader zu brennen, aber ist dies auf einen Hardwarefehler zurückzuführen? Es dauert mehr als 3 Minuten, um zu brennen.

avrdude -c dragon_isp -p m32u4 -P usb -U flash:w:Caterina-Micro.hex -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U efuse:w:0xcb:m -U lock:w:0x2f:m -v -B 1000
avrdude: Device signature = 0x000100
avrdude: Expected signature for ATmega32U4 is 1E 95 87
         Double check chip, or use -F to override this check.

Oder:

avrdude -c dragon_isp -p m32u4 -B 1000

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.26s

avrdude: Device signature = 0x1e9587
avrdude: safemode: Verify error - unable to read efuse properly. Programmer may not be reliable.
avrdude: safemode: To protect your AVR the programming will be aborted

Und:

avrdude -c dragon_isp -p m32u4 -B 200000

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 2.46s

avrdude: Device signature = 0x1e9587
avrdude: safemode: Fuses OK (E:CB, H:D8, L:FF)
avrdude done.  Thank you.

Antworten (1)

Bei Verwendung im ISP-Modus verhält sich der AVR Dragon ähnlich wie ein AVRISP mkII (oder JTAG ICE mkII im ISP-Modus), sodass alle gerätespezifischen Kommentare dort gelten. Insbesondere der Dragon beginnt mit einer ziemlich schnellen ISP-Taktfrequenz, sodass möglicherweise die Option -B bitclock erforderlich ist, um eine stabile ISP-Kommunikation zu erreichen.

http://linux.die.net/man/1/avrdude

       -B bitclock
               Specify the bit clock period for the JTAG interface or the ISP clock (JTAG ICE only).  The
               value is a floating-point number in microseconds.  The default value of the JTAG ICE results
               in about 1 microsecond bit clock period, suitable for target MCUs running at 4 MHz clock and
               above.  Unlike certain parameters in the STK500, the JTAG ICE resets all its parameters to
               default values when the programming software signs off from the ICE, so for MCUs running at
               lower clock speeds, this parameter must be specified on the command-line.  You can use the
               'default_bitclock' keyword in your ${HOME}/.avrduderc file to assign a default value to keep
               from having to specify this option on every invocation.

http://www.nongnu.org/avrdude/user-manual/avrdude_4.html

Es hört sich so an, als würde der Dragon Daten schneller über ISP senden, als der ATmega verwalten kann. Dies ist sehr wahrscheinlich, wenn Sie den ATmega von der Standard-Taktquelle aus betreiben. Der Parameter -B ist der Weg, um diese Probleme zu lösen.

Datenblatt Absatz 6.2.1 :

Das Gerät wird mit aktiviertem Low-Power-Quarzoszillator (8,0 - 16 MHz) und mit programmierter Sicherung CKDIV8 geliefert, was zu einem 1,0-MHz -Systemtakt mit einem 8-MHz-Quarz führt.

Ich kann nicht wirklich herausfinden, auf was die Bitclock eingestellt werden sollte? Ich verwende einen externen Oszillator mit 16 MHz.
Siehe meine Änderungen. Wenn Sie die Sicherungen nicht geändert haben, taktet Ihr AVR mit 16 / 8 = 2 MHz. Überprüfen Sie das Datenblatt auf die maximale SPI-Rate bei einer bestimmten Systemuhr.
Ich habe einen Versuch und Irrtum gemacht, indem ich nur gelesen habe, und ich musste irgendwo in die Nähe gehen, 200000bevor es in der Lage war, die Gerätesignatur korrekt zu lesen und die Sicherungen zu überprüfen.
Siehe mein letztes Update. Wenn ich das Kommando danach erneut ausführe, schlägt es fehl.
Ich habe keine Erfahrung mit bestimmten Zahlen für die Bitclock. Daher kann ich bei der Größenbestimmung von @JavaCake nicht helfen