Mercurial > ecos
changeset 2175:55e180a14a91
* src/flash.c (fis_update_directory): Fixed flash region size when
CYGSEM_REDBOOT_FLASH_COMBINED_FIS_AND_CONFIG is enabled.
CVS: ----------------------------------------------------------------------
| author | asl |
|---|---|
| date | Tue, 04 Apr 2006 16:15:32 +0000 |
| parents | d07decb23fa2 |
| children | a70dd1fde406 |
| files | packages/redboot/current/ChangeLog packages/redboot/current/src/flash.c |
| diffstat | 2 files changed, 11 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/redboot/current/ChangeLog +++ b/packages/redboot/current/ChangeLog @@ -1,3 +1,8 @@ +2006-04-03 Lars Povlsen <lpovlsen@vitesse.com> + + * src/flash.c (fis_update_directory): Fixed flash region size when + CYGSEM_REDBOOT_FLASH_COMBINED_FIS_AND_CONFIG is enabled. + 2006-03-27 Gary Thomas <gary@mlbassoc.com> * src/net/tcp.c (__tcp_write_block): Fix calculation of actual
--- a/packages/redboot/current/src/flash.c +++ b/packages/redboot/current/src/flash.c @@ -245,6 +245,7 @@ fis_lookup(char *name, int *num) void fis_update_directory(void) { + int blk_size = fisdir_size; int stat; void *err_addr; @@ -252,23 +253,24 @@ fis_update_directory(void) #ifdef CYGSEM_REDBOOT_FLASH_COMBINED_FIS_AND_CONFIG memcpy((char *)fis_work_block+fisdir_size, config, cfg_size); conf_endian_fixup((char *)fis_work_block+fisdir_size); + blk_size += cfg_size; #endif #ifdef CYGSEM_REDBOOT_FLASH_LOCK_SPECIAL // Ensure [quietly] that the directory is unlocked before trying to update - flash_unlock((void *)fis_addr, fisdir_size, (void **)&err_addr); + flash_unlock((void *)fis_addr, blk_size, (void **)&err_addr); #endif - if ((stat = flash_erase(fis_addr, fisdir_size, (void **)&err_addr)) != 0) { + if ((stat = flash_erase(fis_addr, blk_size, (void **)&err_addr)) != 0) { diag_printf("Error erasing FIS directory at %p: %s\n", err_addr, flash_errmsg(stat)); } else { if ((stat = FLASH_PROGRAM(fis_addr, fis_work_block, - fisdir_size, (void **)&err_addr)) != 0) { + blk_size, (void **)&err_addr)) != 0) { diag_printf("Error writing FIS directory at %p: %s\n", err_addr, flash_errmsg(stat)); } } #ifdef CYGSEM_REDBOOT_FLASH_LOCK_SPECIAL // Ensure [quietly] that the directory is locked after the update - flash_lock((void *)fis_addr, fisdir_size, (void **)&err_addr); + flash_lock((void *)fis_addr, blk_size, (void **)&err_addr); #endif fis_endian_fixup(fis_work_block); }
