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
  • Hello,

    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.

    I'm not sure if the nRF connec tDevice Manager application is the one you should be using. Do you see the same with the "nRF Connect" mobile application? Have you made sure that the new image has a newer version than the previous image? dfu_application.zip should work via the application. For other purposes you should use zephyr.signed.bin generated within <build/<your_app>/zephyr/zephyr.signed.bin> instead https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/releases_and_maturity/migration/migration_sysbuild.html 

    Kind regards,
    Andreas

  • 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"

Reply
  • 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"

Children
No Data
Related