Pages: [1]   Go Down
Author Topic: Leonardo nicht mehr programmierbar  (Read 1095 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Leute,

kann plötzlich meine Leonardo nicht mehr programmieren (normal über USB). Es kommt folgende Fehlermeldung:

Binäre Sketchgröße: 6.374 Bytes (von einem Maximum von 28.672 Bytes)
Found programmer: Id = "B«J"; type =
    Software Version =  . ; Hardware Version =  .
avrdude: error: buffered memory access not supported. Maybe it isn't
a butterfly/AVR109 but a AVR910 device?


Kann man sich den Bootoader zerschießen?
Falls der Bootloader defekt ist, wie kann ich den wieder herstellen?

Danke für Eure Antworten.
« Last Edit: December 18, 2012, 05:43:27 pm by Wabbelto » Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 112
Posts: 5286
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hast Du den Upload mittel "Upload using Programmer" versucht? Welches Board und welcher Port ist ausgewählt?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Unter Board: hatte ich "Arduino Leonardo" und unter Serial Port: "Com6" ausgewählt. Hat ja auch ein paar mal funktioniert.
mit Datei\Upload mit Programmer kommt gleich der Fehler:
avrdude: usbdev_open(): did not find any USB device "usb"
Ist aber für mich erstmal nicht weiter verwunderlich, denn unter Programmer ist "AVRISP mkII" (standard?) eingestellt
und einen externen Programmer habe ich ja nicht angeschlossen. Zur Not hätte ich eine Dragon, der erscheint mit diesem
Namen aber nicht in der Programmerliste.

Aber erst einmal Danke!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ich habe gerade herausgefunden, dass es eine "verbose output" gibt:

Binäre Sketchgröße: 11.348 Bytes (von einem Maximum von 28.672 Bytes)
Forcing reset using 1200bps open/close on port COM6
PORTS {COM1, COM6, } / {COM1, COM6, } => {}
PORTS {COM1, COM6, } / {COM1, COM6, } => {}
PORTS {COM1, COM6, } / {COM1, COM6, } => {}
PORTS {COM1, COM6, } / {COM1, COM6, } => {}
PORTS {COM1, COM6, } / {COM1, COM6, } => {}
PORTS {COM1, COM6, } / {COM1, COM6, } => {}
PORTS {COM1, COM6, } / {COM1, } => {}
PORTS {COM1, } / {COM1, COM6, } => {COM6, }
Found Leonardo upload port: COM6
C:\Users\xxxxxx xxxxxx\Desktop\Arduino Leonardo\Software\arduino-1.0.2-windows\arduino-1.0.2\hardware/tools/avr/bin/avrdude -CC:\Users\xxxxxx xxxxxx\Desktop\Arduino Leonardo\Software\arduino-1.0.2-windows\arduino-1.0.2\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega32u4 -cavr109 -P\\.\COM6 -b57600 -D -Uflash:w:C:\Users\XXXXXX~1\AppData\Local\Temp\build3311597198084708295.tmp\midi_t2_disp.cpp.hex:i

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Users\xxxxxx xxxxxx\Desktop\Arduino Leonardo\Software\arduino-1.0.2-windows\arduino-1.0.2\hardware/tools/avr/etc/avrdude.conf"

         Using Port                    : \\.\COM6
         Using Programmer              : avr109
         Overriding Baud Rate          : 57600
         AVR Part                      : ATmega32U4
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    10     8    0 no       1024    8      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : butterfly
         Description     : Atmel AppNote AVR109 Boot Loader

Connecting to programmer: .avrdude: Send: . [1b]
avrdude: Send: S [53]
avrdude: Recv:


avrdude: Recv:
avrdude: Send: V [56]
avrdude: Recv:
avrdude: Send: v [76]
avrdude: Recv:
avrdude: Recv:
avrdude: Send: p [70]
avrdude: Recv:
Found programmer: Id = "öÿ("; type = |
    Software Version = E. (hier kommt noch mehr, läßt sich aber nocht mit copy paste einfügen. Entspricht aber dem Output des ersten Beitrages)
« Last Edit: December 19, 2012, 10:56:14 am by Wabbelto » Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 112
Posts: 5286
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich nehme mal an, Ausstecken und wieder Einstecken hast Du versucht und hat nicht gefruchtet...

Dann scheint Dein Bootloader irgendwie in Mitleidenschaft gezogen worden zu sein.

Mit dem Atmel Studio könntest Du mit dem Dragon den Bootloader wieder aufspielen:

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo pylon,
you made my day ;-)

Danke für den Tip und das Video. Bootloader wiederherstellen hat geklappt. Den Fehler (die "Zerstörung" des Bootloaders) kann ich auch reproduzieren.
Der Übeltäter ist erkannt:

Code:
Aufruf von
lcd.print(getMidiNote(9)[0]);
in setup();


getMidiNote() ist wie folgt definiert:


char* midi_notes[128][4] = {
{ /*0  */ "C-2 "},
{ /*1  */ "C#-2"},
...
{ /*126*/ "F#8 "},
{ /*127*/ "G8  "}};

char** getMidiNote(int byte) {
  return midi_notes[byte];
}


Das ich mich mit den Pointern vergallopiert habe, würde mich nicht wundern. War halt mein erster Versuch (irgendwie fehlen auch die abschließenden Nullen in den Strings). Wäre mir das alles um die Ohren geflogen, hätte ich mich nicht gewundert. Das Programm mit diesem Code "funktioniert" aber wie erwartet. Kommentiere ich den Aufruf aus, kann ich x mal uploaden. Ist der Aufruf aktiv, funktioniert genau einmal der upload, dann nie wieder. Was passiert da eigentlich?

Nochmals vielen Dank!
« Last Edit: December 19, 2012, 05:25:59 pm by Wabbelto » Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 112
Posts: 5286
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das ist das Problem beim Leonardo: der USB-Code läuft auf dem Haupt-Prozessor und ist somit nicht mehr ansprechbar, wenn sich der Prozessor komplett verabschiedet. Beim normalen UNO wird beim Upload ein Reset ausgelöst und in einem kurzen Zeitfenster danach ist nur der Bootloader aktiv. Beim Leonardo kann es aber passieren, dass dies nicht mehr geschieht (wenn z.B. die Interrupts deaktiviert werden und dann in eine Endlos-Schleife gesprungen wird).
Logged

Pages: [1]   Go Up
Jump to: