Skip to content

Commit 0cc0a6d

Browse files
committed
subsys: 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 0cc0a6d

File tree

4 files changed

+12
-4
lines changed

4 files changed

+12
-4
lines changed

soc/nordic/nrf54h/soc.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ 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)) > \
52+
FLASH_LOAD_OFFSET)
5153

5254
sys_snode_t soc_node;
5355

subsys/dfu/img_util/flash_img.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ LOG_MODULE_REGISTER(flash_img, CONFIG_IMG_MANAGER_LOG_LEVEL);
2424
#endif
2525

2626
#define FIXED_PARTITION_IS_RUNNING_APP_PARTITION(label) \
27-
(FIXED_PARTITION_OFFSET(label) == CONFIG_FLASH_LOAD_OFFSET)
27+
(FIXED_PARTITION_OFFSET(label) <= CONFIG_FLASH_LOAD_OFFSET && \
28+
FIXED_PARTITION_OFFSET(label) + FIXED_PARTITION_SIZE(label) > \
29+
CONFIG_FLASH_LOAD_OFFSET)
2830

2931
#include <zephyr/devicetree.h>
3032
#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 & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ BUILD_ASSERT(PM_MCUBOOT_PAD_SIZE == PM_MCUBOOT_SECONDARY_PAD_SIZE);
6666
#endif
6767

6868
#define FIXED_PARTITION_IS_RUNNING_APP_PARTITION(label) \
69-
(FIXED_PARTITION_OFFSET(label) == CONFIG_FLASH_LOAD_OFFSET)
69+
(FIXED_PARTITION_OFFSET(label) <= CONFIG_FLASH_LOAD_OFFSET && \
70+
FIXED_PARTITION_OFFSET(label) + FIXED_PARTITION_SIZE(label) > \
71+
CONFIG_FLASH_LOAD_OFFSET)
7072
#endif /* USE_PARTITION_MANAGER */
7173

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

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
#define SLOT1_PARTITION slot1_partition
1414

1515
#define FIXED_PARTITION_IS_RUNNING_APP_PARTITION(label) \
16-
(FIXED_PARTITION_OFFSET(label) == CONFIG_FLASH_LOAD_OFFSET)
16+
(FIXED_PARTITION_OFFSET(label) <= CONFIG_FLASH_LOAD_OFFSET && \
17+
FIXED_PARTITION_OFFSET(label) + FIXED_PARTITION_SIZE(label) > \
18+
CONFIG_FLASH_LOAD_OFFSET)
1719

1820
#if FIXED_PARTITION_IS_RUNNING_APP_PARTITION(slot0_partition)
1921
#define UPLOAD_PARTITION_ID FIXED_PARTITION_ID(SLOT1_PARTITION)

0 commit comments

Comments
 (0)