Signed-off-by: Stephan Baerwolf <stephan.baerwolf@tu-ilmenau.de>
#endif
}
#endif
-#if !HAVE_CHIP_ERASE
- if((currentAddress.w[0] & (SPM_PAGESIZE - 1)) == 0){ /* if page start: erase */
- DBG1(0x33, 0, 0);
-# ifndef NO_FLASH_WRITE
- cli();
- boot_page_erase(CURRENT_ADDRESS); /* erase page */
- sei();
- boot_spm_busy_wait(); /* wait until page is erased */
-# endif
- }
-#endif
i += 2;
DBG1(0x32, 0, 0);
cli();
data += 2;
/* write page when we cross page boundary or we have the last partial page */
if((currentAddress.w[0] & (SPM_PAGESIZE - 1)) == 0 || (isLast && i >= len && isLastPage)){
+#if !HAVE_CHIP_ERASE
+ DBG1(0x33, 0, 0);
+# ifndef NO_FLASH_WRITE
+ cli();
+ boot_page_erase((currentAddress.w[0]-2) & (SPM_PAGESIZE - 1)); /* erase page */
+ sei();
+ boot_spm_busy_wait(); /* wait until page is erased */
+# endif
+#endif
DBG1(0x34, 0, 0);
#ifndef NO_FLASH_WRITE
cli();