Das einzige was ich mir vorstellen kann (da ich die Funktion zum
beschreiben des Flash nicht verändert habe) das ich irgendwo nen
Overflow produziert habe, aber da bis auf die ersten Zeilen der Rest
korrekt beschrieben wird, halte ich das für unwahrscheinlich.
Was heißt nicht verändert??
Die Register müssen für den Mega2560 angepasst werden. Zudem hat dieser µC mehr als 128kb flash. Das muss auch noch hinzugefügt werden.
Eine Besonderheit ist zu beachten, wenn der verfügbare Flash-Speicher größer als 128kB ist. In der Regel wird der Bootloader im oberen Teil des Speichers liegen und daher ist ein einfacher Rücksprung mit normaler 2Byte Wordadressierung nicht möglich. Leider hat GCC hier einen Bug und verwendet das vom Controller zusätzlich herangezogene Register EIND nicht. Dieses Register muß daher explizit vor dem Rücksprung auf 0 gesetzt werden.
Das sollte auch beachtet werden:
Die erweiterten Adressräume (HEX-Zeilentyp 2 bis 5) werden noch nicht unterstützt. Für ATmega-Devices mit > 64K Flash muss der Bootloader noch erweitert werden.

Wie wahrscheinlich ist es, das das auslesen des EEPROM am Anfang des
Bootloaders und das beschreiben des EEPROMs am Ende des Bootloaders
Einfluss auf den Flash hat?
Wie wärs, wenn du einfach die E2PROM Abfrage entfernst und es dann probierst?? Wobei es aber vermutlich nicht daran liegt, sondern an einem anderem (vermutlich vorher genanntem) Problem.

mfg