From c5a528ba4eee76a9a57a2557313dd3873385b52e Mon Sep 17 00:00:00 2001 From: Petr Buchta Date: Sat, 24 Feb 2024 08:10:38 +0100 Subject: [PATCH] New OVERWRITE_ONLY_KEEP_BACKUP option It builds on top of OVERWRITE_ONLY mode and uses secondary slot as a backup of the primary slot. The main difference is that after image copy to the primary slot the secondary slot is not erased. This is meant to be used together with BOOTSTRAP option that will reinstall the primary image with the backup in case it's not valid. Signed-off-by: Petr Buchta --- boot/bootutil/src/loader.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/boot/bootutil/src/loader.c b/boot/bootutil/src/loader.c index 807a566c..bd3a7f09 100644 --- a/boot/bootutil/src/loader.c +++ b/boot/bootutil/src/loader.c @@ -1450,6 +1450,7 @@ boot_copy_image(struct boot_loader_state *state, struct boot_status *bs) } #endif /* MCUBOOT_HW_ROLLBACK_PROT */ +#ifndef MCUBOOT_OVERWRITE_ONLY_KEEP_BACKUP /* * Erases header and trailer. The trailer is erased because when a new * image is written without a trailer as is the case when using newt, the @@ -1460,6 +1461,8 @@ boot_copy_image(struct boot_loader_state *state, struct boot_status *bs) boot_img_sector_off(state, BOOT_SECONDARY_SLOT, 0), boot_img_sector_size(state, BOOT_SECONDARY_SLOT, 0)); assert(rc == 0); +#endif + last_sector = boot_img_num_sectors(state, BOOT_SECONDARY_SLOT) - 1; BOOT_LOG_DBG("erasing secondary trailer"); rc = boot_erase_region(fap_secondary_slot,