diff --git a/src/libwolfboot.c b/src/libwolfboot.c index 17b4e07774..6a31cb166d 100644 --- a/src/libwolfboot.c +++ b/src/libwolfboot.c @@ -740,11 +740,6 @@ void RAMFUNCTION wolfBoot_update_trigger(void) uint8_t selSec = 0; #endif - /* if PART_UPDATE_ENDFLAGS straddles a sector, (all non FLAGS_HOME builds) - * align it to the correct sector */ - if (PART_UPDATE_ENDFLAGS % WOLFBOOT_SECTOR_SIZE == 0) - lastSector -= WOLFBOOT_SECTOR_SIZE; - /* erase the sector flags */ if (FLAGS_UPDATE_EXT()) { ext_flash_unlock(); @@ -763,10 +758,11 @@ void RAMFUNCTION wolfBoot_update_trigger(void) hal_flash_erase(lastSector, SECTOR_FLAGS_SIZE); #else selSec = nvm_select_fresh_sector(PART_UPDATE); - lastSector -= selSec * WOLFBOOT_SECTOR_SIZE; - XMEMCPY(NVM_CACHE, (uint8_t*)lastSector, WOLFBOOT_SECTOR_SIZE); + XMEMCPY(NVM_CACHE, (uint8_t*)lastSector - WOLFBOOT_SECTOR_SIZE * selSec, + WOLFBOOT_SECTOR_SIZE); /* write to the non selected sector */ - hal_flash_erase(lastSector - WOLFBOOT_SECTOR_SIZE * !selSec, WOLFBOOT_SECTOR_SIZE); + hal_flash_erase(lastSector - WOLFBOOT_SECTOR_SIZE * !selSec, + WOLFBOOT_SECTOR_SIZE); hal_flash_write(lastSector - WOLFBOOT_SECTOR_SIZE * !selSec, NVM_CACHE, WOLFBOOT_SECTOR_SIZE); /* erase the previously selected sector */