0

I'm using the most recent Arduino IDE to upload a sketch to an Arduino Uno, and the upload seems to succeed, but the final verification step fails with the error:

avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e950f
avrdude: reading input file ".build_ano/uno/firmware.hex"
avrdude: writing flash (30908 bytes):
Writing | ################################################## | 100% 5.01s
avrdude: 30908 bytes of flash written
avrdude: verifying flash memory against .build_ano/uno/firmware.hex:
avrdude: load data flash data from input file .build_ano/uno/firmware.hex:
avrdude: input file .build_ano/uno/firmware.hex contains 30908 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 3.96s
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x7800
 0xff != 0xfe
avrdude: verification error; content mismatch
avrdude: safemode: Fuses OK (H:00, E:00, L:00)
avrdude done. Thank you.

I've re-ran the upload several times, and tried different USB cables, but I get the exact same verification error each time. Does this mean the upload effectively failed (presumably because the flash memory has gone bad), and that my sketch is not running on the Arduino? Is there any way I can fix this?

I tried uploading to a different Arduino Uno, and I received the exact same error.

asked Jan 15, 2017 at 21:47
4
  • Try uploading a simply sketch link blinking the onboard LED on pin 13. Commented Jan 15, 2017 at 21:51
  • @AndreCourchesne, That works. I only get the error for my sketch. Commented Jan 15, 2017 at 22:26
  • Genuine Arduino or cheap chinese knock-off? Commented Jan 15, 2017 at 22:29
  • I think your sketch is to big. The Uno has 32k of flash. 2k is used by the bootloader leaving 30k or 30720 bytes. Your binary is 30908 bytes. Commented Jan 15, 2017 at 23:28

1 Answer 1

1

So here is my official answer ;-)

Your sketch goes above the 30k flash available on the Arduino Uno.

Yes the Uno has 32k of flash, but 2k is used for the Arduino bootloader. if you convert 0x7800 in decimal that gives you 30720 which is exactly 30k. And your sketch is 30908 bytes so it's 188 bytes too long.

Try optimizing it.

A second alternative would be to use the Optiboot bootloader replacement (https://github.com/Optiboot/optiboot) which only uses 512 bytes.

answered Jan 16, 2017 at 0:15
1
  • This seems to be the cause. I flashed a bootloader from a more recent Arduino IDE. I'm assuming it comes with that more efficient bootloader, because it fixed the error. Commented Jan 16, 2017 at 6:41

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.