dfu: allow MCUBoot configured without scratch
When no scratch parition was defined in the DTS file, just assume that MCUBoot was built to use swap with move strategy, and never touch scratch. Signed-off-by: Fabio Utzig <utzig@apache.org>
This commit is contained in:
parent
f2c345a407
commit
6d60ce5642
1 changed files with 10 additions and 2 deletions
|
@ -75,13 +75,15 @@ struct mcuboot_v1_raw_header {
|
||||||
#ifdef CONFIG_TRUSTED_EXECUTION_NONSECURE
|
#ifdef CONFIG_TRUSTED_EXECUTION_NONSECURE
|
||||||
#define FLASH_AREA_IMAGE_PRIMARY DT_FLASH_AREA_IMAGE_0_NONSECURE_ID
|
#define FLASH_AREA_IMAGE_PRIMARY DT_FLASH_AREA_IMAGE_0_NONSECURE_ID
|
||||||
#define FLASH_AREA_IMAGE_SECONDARY DT_FLASH_AREA_IMAGE_1_NONSECURE_ID
|
#define FLASH_AREA_IMAGE_SECONDARY DT_FLASH_AREA_IMAGE_1_NONSECURE_ID
|
||||||
#define FLASH_AREA_IMAGE_SCRATCH DT_FLASH_AREA_IMAGE_SCRATCH_ID
|
|
||||||
#else
|
#else
|
||||||
#define FLASH_AREA_IMAGE_PRIMARY DT_FLASH_AREA_IMAGE_0_ID
|
#define FLASH_AREA_IMAGE_PRIMARY DT_FLASH_AREA_IMAGE_0_ID
|
||||||
#define FLASH_AREA_IMAGE_SECONDARY DT_FLASH_AREA_IMAGE_1_ID
|
#define FLASH_AREA_IMAGE_SECONDARY DT_FLASH_AREA_IMAGE_1_ID
|
||||||
#define FLASH_AREA_IMAGE_SCRATCH DT_FLASH_AREA_IMAGE_SCRATCH_ID
|
|
||||||
#endif /* CONFIG_TRUSTED_EXECUTION_NONSECURE */
|
#endif /* CONFIG_TRUSTED_EXECUTION_NONSECURE */
|
||||||
|
|
||||||
|
#ifdef DT_FLASH_AREA_IMAGE_SCRATCH_ID
|
||||||
|
#define FLASH_AREA_IMAGE_SCRATCH DT_FLASH_AREA_IMAGE_SCRATCH_ID
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_MCUBOOT_TRAILER_SWAP_TYPE
|
#ifdef CONFIG_MCUBOOT_TRAILER_SWAP_TYPE
|
||||||
#define SWAP_TYPE_OFFS(bank_area) ((bank_area)->fa_size -\
|
#define SWAP_TYPE_OFFS(bank_area) ((bank_area)->fa_size -\
|
||||||
BOOT_MAGIC_SZ - BOOT_MAX_ALIGN * 3)
|
BOOT_MAGIC_SZ - BOOT_MAX_ALIGN * 3)
|
||||||
|
@ -535,7 +537,9 @@ static int boot_read_swap_state(const struct flash_area *fa,
|
||||||
state->copy_done = boot_flag_decode(state->copy_done);
|
state->copy_done = boot_flag_decode(state->copy_done);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
#ifdef FLASH_AREA_IMAGE_SCRATCH
|
||||||
if (fa->fa_id != FLASH_AREA_IMAGE_SCRATCH) {
|
if (fa->fa_id != FLASH_AREA_IMAGE_SCRATCH) {
|
||||||
|
#endif
|
||||||
off = COPY_DONE_OFFS(fa);
|
off = COPY_DONE_OFFS(fa);
|
||||||
rc = flash_area_read_is_empty(fa, off, &state->copy_done,
|
rc = flash_area_read_is_empty(fa, off, &state->copy_done,
|
||||||
sizeof(state->copy_done));
|
sizeof(state->copy_done));
|
||||||
|
@ -547,7 +551,9 @@ static int boot_read_swap_state(const struct flash_area *fa,
|
||||||
} else {
|
} else {
|
||||||
state->copy_done = boot_flag_decode(state->copy_done);
|
state->copy_done = boot_flag_decode(state->copy_done);
|
||||||
}
|
}
|
||||||
|
#ifdef FLASH_AREA_IMAGE_SCRATCH
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
off = IMAGE_OK_OFFS(fa);
|
off = IMAGE_OK_OFFS(fa);
|
||||||
|
@ -575,7 +581,9 @@ boot_read_swap_state_by_id(int flash_area_id, struct boot_swap_state *state)
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
switch (flash_area_id) {
|
switch (flash_area_id) {
|
||||||
|
#ifdef FLASH_AREA_IMAGE_SCRATCH
|
||||||
case FLASH_AREA_IMAGE_SCRATCH:
|
case FLASH_AREA_IMAGE_SCRATCH:
|
||||||
|
#endif
|
||||||
case FLASH_AREA_IMAGE_PRIMARY:
|
case FLASH_AREA_IMAGE_PRIMARY:
|
||||||
case FLASH_AREA_IMAGE_SECONDARY:
|
case FLASH_AREA_IMAGE_SECONDARY:
|
||||||
rc = flash_area_open(flash_area_id, &fap);
|
rc = flash_area_open(flash_area_id, &fap);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue