From: Stephan Baerwolf Date: Tue, 31 Jul 2012 17:00:13 +0000 (+0200) Subject: optimize: reorder pageerase to gain some bytes X-Git-Tag: 2010-07-27-stephan-201207312030~3 X-Git-Url: http://git.linex4red.de/pub/USBaspLoader.git/commitdiff_plain/b22868b75829b9bc75402ea03144f3554dcbf905 optimize: reorder pageerase to gain some bytes Signed-off-by: Stephan Baerwolf --- diff --git a/firmware/main.c b/firmware/main.c index 97d7bd7..7e92970 100644 --- a/firmware/main.c +++ b/firmware/main.c @@ -292,17 +292,6 @@ uchar isLast; #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(); @@ -312,6 +301,15 @@ uchar isLast; 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();