Error while burning bootloader for Leonardo (Device signature = 0xff0000)

TL DR: Trying to revive a Leonardo board with another Uno, but writing the bootloader fails.

Hi,

I have a complicated sketch that somehow manages to ruin the bootloader of the Leonardo board I am working with (probably accessing too much memory). After giving up on the first board, I got another one and managed to brick this one too within an hour. So, I definitely have to learn how to write a new bootloader, as I cannot buy a new one every time I debug :slight_smile:

I followed this page to set up another Arduino Uno as ISP. However something is going wrong, because I get the following output:

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM3
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         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    20     4    0 no       1024    4      0  9000  9000 0x00 0x00
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Error while burning bootloader.
Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0xff0000
avrdude: Expected signature for ATmega32U4 is 1E 95 87
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.

Sometimes the Device signature is 0x00ff00.

I am attaching a photo with the wiring. Note that I tried a few combinations with the RESET line, in the photo it's going from PIN 4 (from the code) to the reset, but I tried using the SPI reset pin too. And on the Leonardo I also tried it on the Reset pin on the board.

Any help appreciated.

Thanks!

Arduino ISP IDE.jpg

What happened to the bootloader ? How did it get damaged ? What is your sketch about which bricks the leonardo ? What is the problem with reset pin as pin 10 ? Please ellaborate

Thanks a million m_k_akash, you actually hinted me in the right direction :slight_smile:

I misread the code, I saw RESET defined as 4, but I was looking in the wrong place, as there was an #ifndef block above that actually was defining it to 10. So I was using the wong pin :roll_eyes:

As for my project I am working on a MIDI controller that is driving an OLED and has a lot of input, and I am running low on memory. I suspect that somewhere I am writing out of bounds (maybe in a snprintf?)

I didn't notice the reset pin when I replied then when I saw your pic, I felt something weird with the reset pin. I can't make it sure that it is the exact problem, so I asked you. If memory is a issue try switching to any other board.how much bytes does it need ? All the best for your project

I think it would be much better if I had at least 4KB available, but I picked Leonardo because it is easy to make a USB MIDI controller without much hassle.

Would any other board do the same as a Leonardo but with more memory?

I also bought a 8KB SPI FRAM module to use that as a memory extension, but haven't got it working yet.

Is your code more than 28 kB ?

m_k_akash:
Is your code more than 28 kB ?

Currently no, 28k is the max on Leonardo

Yep, that's why I asked. Will it go more than 28 kB ?

m_k_akash:
Yep, that's why I asked. Will it go more than 28 kB ?

Currently a lot of code space is used by fonts from u8g2 library. I could definitely go over 28k if I crammed more stuff in there.