Mercurial > ecos
changeset 1738:9091309eb665
* src/flash.c (fis_init): Avoid potentially unnecessary erase
attempt at end of flash.
| author | jlarmour |
|---|---|
| date | Tue, 31 Aug 2004 19:44:14 +0000 |
| parents | 462d6c993869 |
| children | 5ee8bd19b4f5 |
| files | packages/redboot/current/ChangeLog packages/redboot/current/src/flash.c |
| diffstat | 2 files changed, 13 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/redboot/current/ChangeLog +++ b/packages/redboot/current/ChangeLog @@ -1,3 +1,8 @@ +2004-08-31 Jonathan Larmour <jifl@eCosCentric.com> + + * src/flash.c (fis_init): Avoid potentially unnecessary erase + attempt at end of flash. + 2004-08-27 Peter Korsgaard <jacmet@sunsite.dk> * doc/redboot_cmds.sgml: Fixed a minor typo with fis list
--- a/packages/redboot/current/src/flash.c +++ b/packages/redboot/current/src/flash.c @@ -422,12 +422,14 @@ fis_init(int argc, char *argv[]) } erase_start += (erase_size + flash_block_size); #endif - // Lastly, anything at the end - erase_size = ((CYG_ADDRESS)flash_end - erase_start) + 1; - if ((stat = flash_erase((void *)erase_start, erase_size, - (void **)&err_addr)) != 0) { - diag_printf(" initialization failed at %p: %s\n", - err_addr, flash_errmsg(stat)); + // Lastly, anything at the end, if there is any + if ( erase_start < (((CYG_ADDRESS)flash_end)+1) ) { + erase_size = ((CYG_ADDRESS)flash_end - erase_start) + 1; + if ((stat = flash_erase((void *)erase_start, erase_size, + (void **)&err_addr)) != 0) { + diag_printf(" initialization failed at %p: %s\n", + err_addr, flash_errmsg(stat)); + } } #ifndef CYGDAT_REDBOOT_FIS_MAX_FREE_CHUNKS // In this case, 'fis free' works by scanning for erased blocks. Since the
