Update issue with bootloader chain

Hi everyone, I'm trying to set up a bootloader chain using sysbuild (NSIB → MCUboot → APP) so that MCUboot can act as an upgradable bootloader. I'm working with the nRF54L15 and followed the guides:
https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.html
https://docs.nordicsemi.com/bundle/ncs-3.0.1/page/nrf/applications/nrf_desktop/bootloader_dfu.html
With the firmware flashed, the full boot chain works fine. However, when I attempt to update the application using dfu_application.zip via the nRF Connect Device Manager, after the upload and test, the device reboots, but MCUboot can't find a bootable image.

Here's the relevant log output before and after the DFU update:

00> Booting nRF Connect SDK v3.0.1-9eb5615da66b

00> Using Zephyr OS v4.0.99-77f865b8f8d0

00> Fprotect disabled. No protection applied.

00> Attempting to boot slot 0.

00> Attempting to boot from address 0x10800.

00> I: Trying to get Firmware version

00> I: Firmware signature verified.

00> Firmware version 1

00> I: Setting monotonic counter (version: 1, slot: 0)

00> Booting (0x10800).

00> Booting MCUboot v2.1.0-dev-ae1ee57f3906

00> Using nRF Connect SDK v3.0.1-9eb5615da66b

00> Using Zephyr OS v4.0.99-77f865b8f8d0

00> I: Starting Direct-XIP bootloader

00> I: Primary slot: version=0.2.1+0

00> I: Secondary slot: version=0.2.1+0

00> I: Image 1 Primary slot: Image not found

00> I: Secondary slot: version=0.2.1+0

00> I: Image 0 loaded from the primary slot

00> I: Image 1 loaded from the secondary slot

00> I: Bootloader chainload address offset: 0x2b000

00> I: Image version: v0.2.1

00> I: Jumping to the image slot

00> Booting My Application v0.2.1-475bc1ecb46c

00> Using nRF Connect SDK v3.0.1-9eb5615da66b

00> Using Zephyr OS v4.0.99-77f865b8f8d0

(Connection lost)

00> Booting nRF Connect SDK v3.0.1-9eb5615da66b

00> Using Zephyr OS v4.0.99-77f865b8f8d0

00> Fprotect disabled. No protection applied.

00> Attempting to boot slot 0.

00> Attempting to boot from address 0x10800.

00> I: Trying to get Firmware version

00> I: Firmware signature verified.

00> Firmware version 1

00> Booting (0x10800).

00> Booting MCUboot v2.1.0-dev-ae1ee57f3906

00> Using nRF Connect SDK v3.0.1-9eb5615da66b

00> Using Zephyr OS v4.0.99-77f865b8f8d0

00> I: Starting Direct-XIP bootloader

00> I: Primary slot: version=0.2.1+0

00> I: Secondary slot: version=0.2.2+0

00> I: Image 1 Primary slot: Image not found

00> I: Secondary slot: version=0.2.2+0

00> I: No slot to load for image 1

00> E: Unable to find bootable image

Parents Reply Children
  • Do you see the same with the "nRF Connect" mobile application?

    Yes

    Have you made sure that the new image has a newer version than the previous image?

    Yes

    Adding more context, previously a bootloader system using direct-XIP with revert and a simple single-stage bootloader (MCUboot) was working perfectly. However, since the intention was to have an upgradable bootloader, we migrated from a single-stage to a two-stage bootloader setup, as described. To support this the following configuration were added:

    SB_CONFIG_SECURE_BOOT_APPCORE=y
    SB_CONFIG_SECURE_BOOT_SIGNING_KEY_FILE="${ZEPHYR_BASE}/../m_band/ota/keys/secure_boot_ed25519_priv_key.pem"

    SB_CONFIG_MCUBOOT_UPDATEABLE_IMAGES=1

    SB_CONFIG_MCUBOOT_APP_SYNC_UPDATEABLE_IMAGES=y

    SB_CONFIG_SECURE_BOOT_MCUBOOT_VERSION="2.1.0+0"

Related