Skip to content

Commit f80e824

Browse files
committed
[nrf noup] dfu: Allow to use imgtool-based headers
It is possible to add MCUboot header through --pad-header option. In such cases, the FLASH_LOAD_OFFSET does not point to the begining of the slot, but to the beginning of the executable area, thus the check for the active slot should use ranges instead of exact values. Signed-off-by: Tomasz Chyrowicz <[email protected]>
1 parent 8deddc7 commit f80e824

File tree

4 files changed

+11
-7
lines changed

4 files changed

+11
-7
lines changed

soc/nordic/nrf54h/soc.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ LOG_MODULE_REGISTER(soc, CONFIG_SOC_LOG_LEVEL);
4747
#endif
4848

4949
#define PARTITION_IS_RUNNING_APP_PARTITION(label) \
50-
(DT_REG_ADDR(DT_NODELABEL(label)) == FLASH_LOAD_OFFSET)
50+
(DT_REG_ADDR(DT_NODELABEL(label)) <= FLASH_LOAD_OFFSET && \
51+
DT_REG_ADDR(DT_NODELABEL(label)) + DT_REG_SIZE(DT_NODELABEL(label)) > FLASH_LOAD_OFFSET)
5152

5253
sys_snode_t soc_node;
5354

subsys/dfu/img_util/flash_img.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ LOG_MODULE_REGISTER(flash_img, CONFIG_IMG_MANAGER_LOG_LEVEL);
2323
#include <bootutil/bootutil_public.h>
2424
#endif
2525

26-
#define FIXED_PARTITION_IS_RUNNING_APP_PARTITION(label) \
27-
(FIXED_PARTITION_OFFSET(label) == CONFIG_FLASH_LOAD_OFFSET)
26+
#define FIXED_PARTITION_IS_RUNNING_APP_PARTITION(label) \
27+
(FIXED_PARTITION_OFFSET(label) <= CONFIG_FLASH_LOAD_OFFSET && \
28+
FIXED_PARTITION_OFFSET(label) + FIXED_PARTITION_SIZE(label) > CONFIG_FLASH_LOAD_OFFSET)
2829

2930
#include <zephyr/devicetree.h>
3031
#if defined(CONFIG_TRUSTED_EXECUTION_NONSECURE) && (CONFIG_TFM_MCUBOOT_IMAGE_NUMBER == 2)

subsys/mgmt/mcumgr/grp/img_mgmt/src/img_mgmt.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,9 @@ BUILD_ASSERT(PM_MCUBOOT_PAD_SIZE == PM_MCUBOOT_SECONDARY_PAD_SIZE);
6565
to be able to figure out application running slot.
6666
#endif
6767

68-
#define FIXED_PARTITION_IS_RUNNING_APP_PARTITION(label) \
69-
(FIXED_PARTITION_OFFSET(label) == CONFIG_FLASH_LOAD_OFFSET)
68+
#define FIXED_PARTITION_IS_RUNNING_APP_PARTITION(label) \
69+
(FIXED_PARTITION_OFFSET(label) <= CONFIG_FLASH_LOAD_OFFSET && \
70+
FIXED_PARTITION_OFFSET(label) + FIXED_PARTITION_SIZE(label) > CONFIG_FLASH_LOAD_OFFSET)
7071
#endif /* USE_PARTITION_MANAGER */
7172

7273
BUILD_ASSERT(sizeof(struct image_header) == IMAGE_HEADER_SIZE,

tests/subsys/dfu/img_util/src/main.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@
1212
#define SLOT0_PARTITION slot0_partition
1313
#define SLOT1_PARTITION slot1_partition
1414

15-
#define FIXED_PARTITION_IS_RUNNING_APP_PARTITION(label) \
16-
(FIXED_PARTITION_OFFSET(label) == CONFIG_FLASH_LOAD_OFFSET)
15+
#define FIXED_PARTITION_IS_RUNNING_APP_PARTITION(label) \
16+
(FIXED_PARTITION_OFFSET(label) <= CONFIG_FLASH_LOAD_OFFSET && \
17+
FIXED_PARTITION_OFFSET(label) + FIXED_PARTITION_SIZE(label) > CONFIG_FLASH_LOAD_OFFSET)
1718

1819
#if FIXED_PARTITION_IS_RUNNING_APP_PARTITION(slot0_partition)
1920
#define UPLOAD_PARTITION_ID FIXED_PARTITION_ID(SLOT1_PARTITION)

0 commit comments

Comments
 (0)