Boot: Extend flash layout for multiple images
This patch extends the flash layout of supported platforms, and also
introduces the BOOT_IMAGE_NUMBER macro and the current_image variable
in MCUBoot to support multiple updatable images.
The FLASH_AREA_IMAGE_PRIMARY/SECONDARY object-like macros are replaced
with function-like ones and therefore some functions have been updated,
because the labels of a switch statement and the initialization
values of objects with static storage duration have to be constant
expressions.
Change-Id: Ic4425c9034f877fe2b83d80a3df211232f14a09f
Signed-off-by: David Vincze <david.vincze@arm.com>
diff --git a/bl2/ext/mcuboot/bootutil/src/bootutil_misc.c b/bl2/ext/mcuboot/bootutil/src/bootutil_misc.c
index c076c31..94fdc30 100644
--- a/bl2/ext/mcuboot/bootutil/src/bootutil_misc.c
+++ b/bl2/ext/mcuboot/bootutil/src/bootutil_misc.c
@@ -164,13 +164,12 @@
int
boot_status_entries(const struct flash_area *fap)
{
- switch (fap->fa_id) {
- case FLASH_AREA_IMAGE_PRIMARY:
- case FLASH_AREA_IMAGE_SECONDARY:
- return BOOT_STATUS_STATE_COUNT * BOOT_STATUS_MAX_ENTRIES;
- case FLASH_AREA_IMAGE_SCRATCH:
+ if (fap->fa_id == FLASH_AREA_IMAGE_SCRATCH) {
return BOOT_STATUS_STATE_COUNT;
- default:
+ } else if ((fap->fa_id == FLASH_AREA_IMAGE_PRIMARY) ||
+ (fap->fa_id == FLASH_AREA_IMAGE_SECONDARY)) {
+ return BOOT_STATUS_STATE_COUNT * BOOT_STATUS_MAX_ENTRIES;
+ } else {
return BOOT_EBADARGS;
}
}
@@ -284,16 +283,14 @@
const struct flash_area *fap;
int rc;
- switch (flash_area_id) {
- case FLASH_AREA_IMAGE_SCRATCH:
- case FLASH_AREA_IMAGE_PRIMARY:
- case FLASH_AREA_IMAGE_SECONDARY:
+ if (flash_area_id == FLASH_AREA_IMAGE_SCRATCH ||
+ flash_area_id == FLASH_AREA_IMAGE_PRIMARY ||
+ flash_area_id == FLASH_AREA_IMAGE_SECONDARY) {
rc = flash_area_open(flash_area_id, &fap);
if (rc != 0) {
return BOOT_EFLASH;
}
- break;
- default:
+ } else {
return BOOT_EBADARGS;
}