Board: custom board based loosely on PAN1783
TF-M not used
Images:
- App core: mcuboot, Firmware (main app)
- Net core: b0n, ipc_radio
Summary of configuration: using sysbuild, DFU using uncompressed images (I am aware of regression NCSDK-38697), image signing. DFU only in mcuboot via serial recovery, nRF DFU done using mcuboot, image store in flash simulator, transferred via pcd to b0n, nothing custom here.
Everything works with Partition Manager:
[0:0:0.38,299] <inf> mcuboot: Starting bootloader [0:0:0.43,487] <inf> mcuboot: LCS-awareness disabled, skipping LCS check [0:0:0.51,300] <inf> mcuboot: Image index: 0, Swap type: none [0:0:0.57,739] <inf> mcuboot: Image index: 1, Swap type: none [0:0:0.911,468] <inf> mcuboot: Bootloader chainload address offset: 0x16000 [0:0:0.918,853] <inf> mcuboot: Image version: v0.1.0 [0:0:0.924,285] <inf> mcuboot: Jumping to the first image slot
After migrating to DTS partitions (following guide):
[0:0:0.42,602] <inf> mcuboot: Starting bootloader [0:0:0.47,790] <inf> mcuboot: LCS-awareness disabled, skipping LCS check [0:0:0.55,603] <inf> mcuboot: Image index: 0, Swap type: none [0:0:0.62,42] <wrn> mcuboot: Cannot upgrade: slots have non-compatible sectors [0:0:0.70,68] <wrn> mcuboot: Cannot upgrade: slots have non-compatible sectors [0:0:0.924,652] <err> mcuboot: Binary in secondary slot of image 1 is not designated for the primary slot [0:0:0.934,936] <err> mcuboot: Erasing image from secondary slot [0:0:0.971,954] <err> mcuboot: Unable to find bootable image [0:0:0.978,271] <inf> mcuboot: Enter the serial recovery mode
sysbuild.conf:
SB_CONFIG_PARTITION_MANAGER=y SB_CONFIG_NETCORE_APP_UPDATE=y SB_CONFIG_SECURE_BOOT_NETCORE=y SB_CONFIG_SECURE_BOOT_SIGNING_KEY_FILE=... SB_CONFIG_BOOTLOADER_MCUBOOT=y SB_CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256=y SB_CONFIG_BOOT_SIGNATURE_KEY_FILE=... SB_CONFIG_MCUBOOT_UPDATEABLE_IMAGES=2 SB_CONFIG_MCUBOOT_MODE_OVERWRITE_ONLY=y SB_CONFIG_DFU_ZIP=n
mcuboot.conf snippet:
CONFIG_BOOT_MAX_IMG_SECTORS_AUTO=y # Software update via serial recovery CONFIG_BOOT_SERIAL_IMG_GRP_IMAGE_STATE=y CONFIG_BOOT_SERIAL_NO_APPLICATION=y CONFIG_BOOT_IMAGE_ACCESS_HOOKS=y CONFIG_MCUBOOT_SERIAL=y CONFIG_MCUBOOT_SERIAL_DIRECT_IMAGE_UPLOAD=y CONFIG_BOOT_SERIAL_CDC_ACM=y CONFIG_BOOT_SERIAL_DETECT_DELAY=100 CONFIG_MCUBOOT_INDICATION_LED=y CONFIG_FLASH_SIMULATOR=y CONFIG_FLASH_SIMULATOR_STATS=n CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y CONFIG_USE_NRF53_MULTI_IMAGE_WITHOUT_UPGRADE_ONLY=n
Disabling CONFIG_MCUBOOT_VERIFY_IMG_ADDRESS (and keeping CONFIG_MCUBOOT_CHECK_HEADER_LOAD_ADDRESS disabled) allows mcuboot to boot main app image, still reporting some "incompatible sectors" nonsense, that did not happen with PM:
[0:0:0.42,602] <inf> mcuboot: Starting bootloader
[0:0:0.47,790] <inf> mcuboot: LCS-awareness disabled, skipping LCS check
[0:0:0.55,603] <inf> mcuboot: Image index: 0, Swap type: none
[0:0:0.62,42] <wrn> mcuboot: Cannot upgrade: slots have non-compatible sectors
[0:0:0.70,68] <wrn> mcuboot: Cannot upgrade: slots have non-compatible sectors
[0:0:0.928,131] <inf> mcuboot: Bootloader chainload address offset: 0x16000
[0:0:0.935,546] <inf> mcuboot: Image version: v0.1.0
[0:0:0.940,948] <inf> mcuboot: Jumping to the first image slot
main app image looks like this:
(v3.4.0) bash-5.3$ ../../external/bootloader/mcuboot/scripts/imgtool.py dumpinfo Firmware/zephyr/zephyr.signed.bin
Printing content of signed image: zephyr.signed.bin
#### Image header (offset: 0x0) ############################
magic: 0x96f3b83d
load_addr: 0x16000
hdr_size: 0x200
protected_tlv_size: 0x0
img_size: 0x41a6c
flags: ROM_FIXED (0x100)
version: 0.1.0+0
############################################################
#### Payload (offset: 0x200) ###############################
| |
| FW image (size: 0x41a6c Bytes) |
| |
############################################################
#### TLV area (offset: 0x41c6c) ############################
magic: 0x6907
area size: 0x97
Snippet from board file defining partitions:
#include <nordic/nrf5340_cpuapp_partition.dtsi>
/delete-node/ &boot_partition;
/delete-node/ &slot0_partition;
/delete-node/ &slot1_partition;
/delete-node/ &storage_partition;
&flash0 {
partitions {
boot_partition: partition@0 {
compatible = "zephyr,mapped-partition";
label = "mcuboot";
reg = <0x0 0x16000>;
};
s0_partition: slot0_partition: partition@16000 {
compatible = "zephyr,mapped-partition";
label = "image-0";
reg = <0x16000 0x6c000>;
};
s1_partition: slot1_partition: partition@82000 {
compatible = "zephyr,mapped-partition";
label = "image-1";
reg = <0x82000 0x6c000>;
};
crash_storage: partition@ee000 {
compatible = "zephyr,mapped-partition";
label = "crash-storage";
reg = <0xee000 0x10000>;
};
storage_partition: partition@fe000 {
compatible = "zephyr,mapped-partition";
label = "storage";
reg = <0xfe000 0x2000>;
};
};
};
Diffs between .config files:
mcuboot:
--- rh-software-PM/Firmware/build/mcuboot/zephyr/.config 2026-07-15 22:56:49.353212143 +0200
+++ rh-software/Firmware/build/mcuboot/zephyr/.config 2026-07-16 01:58:58.905069184 +0200
@@ -5,7 +5,7 @@
# CONFIG_BOOT_USE_MIN_PARTITION_SIZE is not set
CONFIG_PM_PARTITION_SIZE_MCUBOOT_SCRATCH=0x1e000
CONFIG_PM_PARTITION_SIZE_MCUBOOT_PAD=0x200
-CONFIG_PM_PARTITION_SIZE_MCUBOOT=0x16000
+CONFIG_PM_PARTITION_SIZE_MCUBOOT=0xc000
CONFIG_MCUBOOT_NRF_CLEANUP_PERIPHERAL=y
CONFIG_BOOT_SIGNATURE_KEY_FILE="/home/maciek/Projects/ESA-PAD/rh-software/Firmware/priv.pem"
# CONFIG_BOOT_NRF_EXTERNAL_CRYPTO is not set
@@ -142,6 +142,7 @@
CONFIG_MULTITHREADING=y
CONFIG_USB_DEVICE_PRODUCT="MCUBOOT"
CONFIG_MCUBOOT_BOOTUTIL_LIB_OWN_LOG=y
+# CONFIG_MCUBOOT_CHECK_HEADER_LOAD_ADDRESS is not set
CONFIG_MCUBOOT_VERIFY_IMG_ADDRESS=y
CONFIG_NCS_MCUBOOT_IMG_VALIDATE_ATTEMPT_COUNT=1
CONFIG_PM_APP_ALIGNMENT=0x4000
@@ -253,7 +254,6 @@
CONFIG_GEN_ISR_TABLES=y
# CONFIG_INIT_STACKS is not set
CONFIG_TIMESLICE_SIZE=20
-CONFIG_FLASH_LOAD_OFFSET=0x0
CONFIG_SYS_CLOCK_EXISTS=y
CONFIG_INIT_ARCH_HW_AT_BOOT=y
# CONFIG_BUILD_OUTPUT_S19 is not set
@@ -340,9 +340,8 @@
# Bootloader
#
# CONFIG_SECURE_BOOT is not set
-CONFIG_PM_PARTITION_SIZE_PROVISION=0x280
+CONFIG_SB_IMAGE_BOOT_OFFSET=0x200
# CONFIG_B0_MIN_PARTITION_SIZE is not set
-CONFIG_PM_PARTITION_SIZE_B0_IMAGE=0x8000
# CONFIG_IS_SECURE_BOOTLOADER is not set
CONFIG_IS_BOOTLOADER_IMG=y
# CONFIG_SECURE_BOOT_CRYPTO is not set
@@ -511,15 +510,14 @@
#
# Partition Manager
#
-CONFIG_PARTITION_MANAGER_ENABLED=y
-CONFIG_FLASH_MAP_CUSTOM=y
-CONFIG_SRAM_SIZE=448
-CONFIG_SRAM_BASE_ADDRESS=0x20000000
+# CONFIG_PARTITION_MANAGER_ENABLED is not set
+# CONFIG_FLASH_MAP_CUSTOM is not set
+CONFIG_SRAM_SIZE=440
+CONFIG_SRAM_BASE_ADDRESS=0x20002000
#
# Zephyr subsystem configurations
#
-CONFIG_RPMSG_NRF53_SRAM_SIZE=0x10000
# end of Zephyr subsystem configurations
#
@@ -2615,7 +2613,7 @@
# CONFIG_LINKER_ORPHAN_SECTION_PLACE is not set
CONFIG_LINKER_ORPHAN_SECTION_WARN=y
# CONFIG_LINKER_ORPHAN_SECTION_ERROR is not set
-CONFIG_FLASH_LOAD_SIZE=0x0
+CONFIG_FLASH_USES_MAPPED_PARTITION=y
CONFIG_ROM_END_OFFSET=0
CONFIG_LD_LINKER_SCRIPT_SUPPORTED=y
CONFIG_LD_LINKER_TEMPLATE=y
main app:
--- rh-software-PM/Firmware/build/Firmware/zephyr/.config 2026-07-15 22:57:15.319652144 +0200
+++ rh-software/Firmware/build/Firmware/zephyr/.config 2026-07-15 23:51:19.051591796 +0200
@@ -91,7 +91,7 @@
CONFIG_CLOCK_CONTROL=y
CONFIG_SYS_CLOCK_TICKS_PER_SEC=32768
CONFIG_BUILD_OUTPUT_BIN=y
-CONFIG_ROM_START_OFFSET=0
+CONFIG_ROM_START_OFFSET=0x200
CONFIG_KERNEL_ENTRY="__start"
CONFIG_XIP=y
CONFIG_HAS_FLASH_LOAD_OFFSET=y
@@ -121,7 +121,6 @@
CONFIG_GEN_ISR_TABLES=y
# CONFIG_INIT_STACKS is not set
CONFIG_TIMESLICE_SIZE=20
-CONFIG_FLASH_LOAD_OFFSET=0x0
CONFIG_SYS_CLOCK_EXISTS=y
CONFIG_INIT_ARCH_HW_AT_BOOT=y
# CONFIG_BUILD_OUTPUT_S19 is not set
@@ -233,9 +232,8 @@
# Bootloader
#
# CONFIG_SECURE_BOOT is not set
-CONFIG_PM_PARTITION_SIZE_PROVISION=0x280
+CONFIG_SB_IMAGE_BOOT_OFFSET=0x200
# CONFIG_B0_MIN_PARTITION_SIZE is not set
-CONFIG_PM_PARTITION_SIZE_B0_IMAGE=0x8000
# CONFIG_IS_SECURE_BOOTLOADER is not set
# CONFIG_NRF53_ENFORCE_IMAGE_VERSION_EQUALITY is not set
@@ -738,15 +736,14 @@
#
# Partition Manager
#
-CONFIG_PARTITION_MANAGER_ENABLED=y
-CONFIG_FLASH_MAP_CUSTOM=y
-CONFIG_SRAM_SIZE=448
-CONFIG_SRAM_BASE_ADDRESS=0x20000000
+# CONFIG_PARTITION_MANAGER_ENABLED is not set
+# CONFIG_FLASH_MAP_CUSTOM is not set
+CONFIG_SRAM_SIZE=440
+CONFIG_SRAM_BASE_ADDRESS=0x20002000
#
# Zephyr subsystem configurations
#
-CONFIG_RPMSG_NRF53_SRAM_SIZE=0x10000
CONFIG_PM_PARTITION_SIZE_LITTLEFS=0x6000
CONFIG_PM_PARTITION_REGION_LITTLEFS_EXTERNAL=y
CONFIG_PM_PARTITION_SIZE_SETTINGS_STORAGE=0x2000
@@ -762,7 +759,7 @@
CONFIG_PM_EXTERNAL_FLASH_ENABLED=y
CONFIG_PM_EXTERNAL_FLASH_PATH="/soc/peripheral@50000000/qspi@2b000/w25q01jv@0"
CONFIG_PM_EXTERNAL_FLASH_SIZE_BITS=1073741824
-# CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY is not set
+CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY=y
# CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK is not set
CONFIG_PM_SRAM_BASE=0x20000000
CONFIG_PM_SRAM_SIZE=0x80000
@@ -3423,7 +3413,7 @@
# CONFIG_LINKER_ORPHAN_SECTION_PLACE is not set
CONFIG_LINKER_ORPHAN_SECTION_WARN=y
# CONFIG_LINKER_ORPHAN_SECTION_ERROR is not set
-CONFIG_FLASH_LOAD_SIZE=0x0
+CONFIG_FLASH_USES_MAPPED_PARTITION=y
CONFIG_ROM_END_OFFSET=0xc6
CONFIG_LD_LINKER_SCRIPT_SUPPORTED=y
CONFIG_LD_LINKER_TEMPLATE=y
@@ -3517,7 +3507,6 @@
# CONFIG_EMIT_ALL_SYSCALLS is not set
# end of Build Options
-CONFIG_DEPRECATED=y
CONFIG_WARN_DEPRECATED=y
CONFIG_ENFORCE_ZEPHYR_STDINT=y
# end of Build and Link Features