Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix mega2560 erase flash error #2

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

Ancyker
Copy link

@Ancyker Ancyker commented Dec 1, 2022

Fixes msproul#7 and makes code compatible with later avr-gcc versions.

Hex file compiled with avr-gcc 11.2.0 on FreeBSD.

Fixes msproul#7 and makes code compatible with avr-gcc.

Hex file compiled with avr-gcc 11.2.0 on FreeBSD.
@CLAassistant
Copy link

CLAassistant commented Dec 1, 2022

CLA assistant check
All committers have signed the CLA.

@Ancyker
Copy link
Author

Ancyker commented Dec 1, 2022

Tested with 2 apps, both based on the "bigprogram" app to fill 100% of the flash. One used numbers and the other letters so that the data would be different. I can add those programs if needed but they are quite simple.

Test using older bootloader

First program

Details

Sketch uses 253952 bytes (100%) of program storage space. Maximum is 253952 bytes.
Global variables use 184 bytes (2%) of dynamic memory, leaving 8008 bytes for local variables. Maximum is 8192 bytes.
C:\Developer\Tools\Arduino IDE Portable\hardware\tools\avr/bin/avrdude -CC:\Developer\Tools\Arduino IDE Portable\hardware\tools\avr/etc/avrdude.conf -v -patmega2560 -cwiring -PCOM4 -b115200 -D -Uflash:w:C:\Users\Remy\AppData\Local\Temp\arduino_build_731269/bigprogram.ino.hex:i 

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:\Developer\Tools\Arduino IDE Portable\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM4
         Using Programmer              : wiring
         Overriding Baud Rate          : 115200
         AVR Part                      : ATmega2560
         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       4096    8      0  9000  9000 0x00 0x00
           flash         65    10   256    0 yes    262144  256   1024  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 : Wiring
         Description     : Wiring
         Programmer Model: AVRISP
         Hardware Version: 15
         Firmware Version Master : 2.10
         Vtarget         : 0.0 V
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: reading input file "C:\Users\Remy\AppData\Local\Temp\arduino_build_731269/bigprogram.ino.hex"
avrdude: writing flash (253952 bytes):

Writing | ################################################## | 100% 37.45s

avrdude: 253952 bytes of flash written
avrdude: verifying flash memory against C:\Users\Remy\AppData\Local\Temp\arduino_build_731269/bigprogram.ino.hex:
avrdude: load data flash data from input file C:\Users\Remy\AppData\Local\Temp\arduino_build_731269/bigprogram.ino.hex:
avrdude: input file C:\Users\Remy\AppData\Local\Temp\arduino_build_731269/bigprogram.ino.hex contains 253952 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 28.62s

avrdude: verifying ...
avrdude: 253952 bytes of flash verified

avrdude done.  Thank you.

Second program upload

Details

Sketch uses 253952 bytes (100%) of program storage space. Maximum is 253952 bytes.
Global variables use 184 bytes (2%) of dynamic memory, leaving 8008 bytes for local variables. Maximum is 8192 bytes.
C:\Developer\Tools\Arduino IDE Portable\hardware\tools\avr/bin/avrdude -CC:\Developer\Tools\Arduino IDE Portable\hardware\tools\avr/etc/avrdude.conf -v -patmega2560 -cwiring -PCOM4 -b115200 -D -Uflash:w:C:\Users\Remy\AppData\Local\Temp\arduino_build_3372/bigprogram-num.ino.hex:i 

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:\Developer\Tools\Arduino IDE Portable\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM4
         Using Programmer              : wiring
         Overriding Baud Rate          : 115200
         AVR Part                      : ATmega2560
         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       4096    8      0  9000  9000 0x00 0x00
           flash         65    10   256    0 yes    262144  256   1024  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 : Wiring
         Description     : Wiring
         Programmer Model: AVRISP
         Hardware Version: 15
         Firmware Version Master : 2.10
         Vtarget         : 0.0 V
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: reading input file "C:\Users\Remy\AppData\Local\Temp\arduino_build_3372/bigprogram-num.ino.hex"
avrdude: writing flash (253952 bytes):

Writing | ################################################## | 100% 37.45s

avrdude: 253952 bytes of flash written
avrdude: verifying flash memory against C:\Users\Remy\AppData\Local\Temp\arduino_build_3372/bigprogram-num.ino.hex:
avrdude: load data flash data from input file C:\Users\Remy\AppData\Local\Temp\arduino_build_3372/bigprogram-num.ino.hex:
avrdude: input file C:\Users\Remy\AppData\Local\Temp\arduino_build_3372/bigprogram-num.ino.hex contains 253952 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 28.61s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x3c000
         0x04 != 0x34
avrdude: verification error; content mismatch

avrdude done.  Thank you.

the selected serial port 
 does not exist or your board is not connected

Test using new bootloader

First program

Details

Sketch uses 253952 bytes (100%) of program storage space. Maximum is 253952 bytes.
Global variables use 184 bytes (2%) of dynamic memory, leaving 8008 bytes for local variables. Maximum is 8192 bytes.
C:\Developer\Tools\Arduino IDE Portable\hardware\tools\avr/bin/avrdude -CC:\Developer\Tools\Arduino IDE Portable\hardware\tools\avr/etc/avrdude.conf -v -patmega2560 -cwiring -PCOM4 -b115200 -D -Uflash:w:C:\Users\Remy\AppData\Local\Temp\arduino_build_731269/bigprogram.ino.hex:i 

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:\Developer\Tools\Arduino IDE Portable\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM4
         Using Programmer              : wiring
         Overriding Baud Rate          : 115200
         AVR Part                      : ATmega2560
         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       4096    8      0  9000  9000 0x00 0x00
           flash         65    10   256    0 yes    262144  256   1024  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 : Wiring
         Description     : Wiring
         Programmer Model: AVRISP
         Hardware Version: 15
         Firmware Version Master : 2.10
         Vtarget         : 0.0 V
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: reading input file "C:\Users\Remy\AppData\Local\Temp\arduino_build_731269/bigprogram.ino.hex"
avrdude: writing flash (253952 bytes):

Writing | ################################################## | 100% 37.42s

avrdude: 253952 bytes of flash written
avrdude: verifying flash memory against C:\Users\Remy\AppData\Local\Temp\arduino_build_731269/bigprogram.ino.hex:
avrdude: load data flash data from input file C:\Users\Remy\AppData\Local\Temp\arduino_build_731269/bigprogram.ino.hex:
avrdude: input file C:\Users\Remy\AppData\Local\Temp\arduino_build_731269/bigprogram.ino.hex contains 253952 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 28.78s

avrdude: verifying ...
avrdude: 253952 bytes of flash verified

avrdude done.  Thank you.

Second program upload

Details

Sketch uses 253952 bytes (100%) of program storage space. Maximum is 253952 bytes.
Global variables use 184 bytes (2%) of dynamic memory, leaving 8008 bytes for local variables. Maximum is 8192 bytes.
C:\Developer\Tools\Arduino IDE Portable\hardware\tools\avr/bin/avrdude -CC:\Developer\Tools\Arduino IDE Portable\hardware\tools\avr/etc/avrdude.conf -v -patmega2560 -cwiring -PCOM4 -b115200 -D -Uflash:w:C:\Users\Remy\AppData\Local\Temp\arduino_build_3372/bigprogram-num.ino.hex:i 

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:\Developer\Tools\Arduino IDE Portable\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM4
         Using Programmer              : wiring
         Overriding Baud Rate          : 115200
         AVR Part                      : ATmega2560
         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       4096    8      0  9000  9000 0x00 0x00
           flash         65    10   256    0 yes    262144  256   1024  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 : Wiring
         Description     : Wiring
         Programmer Model: AVRISP
         Hardware Version: 15
         Firmware Version Master : 2.10
         Vtarget         : 0.0 V
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: reading input file "C:\Users\Remy\AppData\Local\Temp\arduino_build_3372/bigprogram-num.ino.hex"
avrdude: writing flash (253952 bytes):

Writing | ################################################## | 100% 37.42s

avrdude: 253952 bytes of flash written
avrdude: verifying flash memory against C:\Users\Remy\AppData\Local\Temp\arduino_build_3372/bigprogram-num.ino.hex:
avrdude: load data flash data from input file C:\Users\Remy\AppData\Local\Temp\arduino_build_3372/bigprogram-num.ino.hex:
avrdude: input file C:\Users\Remy\AppData\Local\Temp\arduino_build_3372/bigprogram-num.ino.hex contains 253952 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 28.79s

avrdude: verifying ...
avrdude: 253952 bytes of flash verified

avrdude done.  Thank you.

Edit: Put avrdude output in collapsable "details" blocks.

@Ancyker
Copy link
Author

Ancyker commented Apr 2, 2023

Just want to add that I've been nearly daily using several MEGAs with this bootloader since my original PR without incident. The one I've been uploading to, I have been averaging 2-3 uploads per week minimum, hitting 10-20+ on busy weeks. I've encountered no issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

bootloader not erasing all usable flash on atmega2560
2 participants