Skip to content

Conversation

@tomchy
Copy link
Contributor

@tomchy tomchy commented Oct 10, 2025

This PR extends an existing firmware loader application, so it is possible to include it in projects built for nRF54H20.

It also enables building the single_slot sample on nrf54h20.

Testing:

$ west build -p -b nrf54h20dk/nrf54h20/cpuapp samples/dfu/single_slot

@NordicBuilder NordicBuilder added manifest changelog-entry-required Update changelog before merge. Remove label if entry is not needed or already added. labels Oct 10, 2025
@NordicBuilder NordicBuilder requested review from a team October 10, 2025 17:04
@NordicBuilder
Copy link
Contributor

NordicBuilder commented Oct 10, 2025

The following west manifest projects have changed revision in this Pull Request:

Name Old Revision New Revision Diff

All manifest checks OK

Note: This message is automatically posted and updated by the Manifest GitHub Action.

@NordicBuilder
Copy link
Contributor

NordicBuilder commented Oct 10, 2025

CI Information

To view the history of this post, click the 'edited' button above
Build number: 29

Inputs:

Sources:

sdk-nrf: PR head: 0d194cf7cfedf5970b19e05cfd5df352ccd1bfb9

more details

sdk-nrf:

PR head: 0d194cf7cfedf5970b19e05cfd5df352ccd1bfb9
merge base: 6983362cc851474d8d61b7641b6b19f21e3d8f90
target head (main): 6983362cc851474d8d61b7641b6b19f21e3d8f90
Diff

Github labels

Enabled Name Description
ci-disabled Disable the ci execution
ci-all-test Run all of ci, no test spec filtering will be done
ci-force-downstream Force execution of downstream even if twister fails
ci-run-twister Force run twister
ci-run-zephyr-twister Force run zephyr twister
List of changed files detected by CI (22)
samples
│  ├── dfu
│  │  ├── fw_loader
│  │  │  ├── ble_mcumgr
│  │  │  │  ├── Kconfig.sysbuild
│  │  │  │  ├── pm_static_nrf54l15dk_nrf54l15_cpuapp.yml
│  │  │  │  ├── prj.conf
│  │  │  │  ├── sample.yaml
│  │  │  │  ├── sysbuild.conf
│  │  │  │  ├── sysbuild
│  │  │  │  │  │ ipc_radio.conf
│  │  ├── single_slot
│  │  │  ├── Kconfig.sysbuild
│  │  │  ├── boards
│  │  │  │  │ nrf54h20dk_nrf54h20_cpuapp.overlay
│  │  │  ├── sample.yaml
│  │  │  ├── sysbuild
│  │  │  │  ├── ble_mcumgr
│  │  │  │  │  ├── boards
│  │  │  │  │  │  │ nrf54h20dk_nrf54h20_cpuapp.overlay
│  │  │  │  │  │ prj.conf
│  │  │  │  ├── fw_loader_ipc_radio.overlay
│  │  │  │  ├── mcuboot
│  │  │  │  │  ├── boards
│  │  │  │  │  │  ├── nrf54h20dk_nrf54h20_cpuapp.conf
│  │  │  │  │  │  ├── nrf54h20dk_nrf54h20_cpuapp.overlay
│  │  │  │  │  │  │ nrf54l15dk_nrf54l15_cpuapp.conf
│  │  │  │  │  │ prj.conf
│  │  │  │  ├── nrf54h20.overlay
│  │  │  │  │ uicr.overlay
sysbuild
│  ├── CMakeLists.txt
│  ├── Kconfig.firmware_loader_radio
│  ├── Kconfig.sysbuild
│  │ firmware_loader_radio.cmake

Outputs:

Toolchain

Version: 964ddb2c70
Build docker image: docker-dtr.nordicsemi.no/sw-production/ncs-build:964ddb2c70_5ea73affbf

Test Spec & Results: ✅ Success; ❌ Failure; 🟠 Queued; 🟡 Progress; ◻️ Skipped; ⚠️ Quarantine

  • ◻️ Toolchain - Skipped: existing toolchain is used
  • ✅ Build twister - Skipped: Skipping Build & Test as it succeeded in a previous run: 28
  • ❌ Integration tests
    • ✅ test-sdk-audio - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ desktop52_verification - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-apps - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test_ble_nrf_config - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-ble_mesh - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-ble_samples - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-chip - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-nfc - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-nrf-iot_libmodem-nrf - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-nrf-iot_zephyr_lwm2m - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-nrf-iot_samples - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-nrf-iot_lwm2m - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-nrf-iot_thingy91 - Skipped: Job was skipped as it succeeded in a previous run
    • ❌ test-fw-nrfconnect-nrf_crypto
    • ✅ test-fw-nrfconnect-rpc - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-rs - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-fem - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-tfm - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-thread-main - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-sdk-find-my - Skipped: Job was skipped as it succeeded in a previous run
    • ❌ test-fw-nrfconnect-nrf_lrcs_positioning
    • ✅ test-sdk-wifi - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-low-level - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-sdk-mcuboot - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-sdk-dfu - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-ps-main - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-secdom-samples-public - Skipped: Job was skipped as it succeeded in a previous run

Note: This message is automatically posted and updated by the CI

@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from 775467f to 4b48fc0 Compare October 10, 2025 17:36
@github-actions
Copy link

You can find the documentation preview for this PR here.

@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from 4b48fc0 to 6dbe029 Compare October 21, 2025 08:31
@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from 6dbe029 to 5ff2f77 Compare October 21, 2025 08:49
@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from 5ff2f77 to a9c83f8 Compare November 4, 2025 15:49
Copilot AI review requested due to automatic review settings November 4, 2025 15:49
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds firmware loader support for the nRF54H20 platform to the single_slot DFU sample. The implementation uses a merged slot configuration where MCUboot can boot either the main application or a lightweight firmware loader that enables over-the-air updates via Bluetooth.

Key Changes:

  • Implements merged partition layout for nRF54H20 supporting both main application and firmware loader modes
  • Adds optimized BLE MCUmgr-based firmware loader with minimal footprint
  • Configures MCUboot to support button-triggered firmware loader activation

Reviewed Changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated no comments.

Show a summary per file
File Description
samples/dfu/single_slot/sysbuild/nrf54h20.overlay Defines merged partition layout with separate slots for main app, firmware loader, and radio images
samples/dfu/single_slot/sysbuild/mcuboot/prj.conf Removes global FPROTECT configuration
samples/dfu/single_slot/sysbuild/mcuboot/boards/nrf54l15dk_nrf54l15_cpuapp.conf Adds board-specific FPROTECT configuration for nRF54L15
samples/dfu/single_slot/sysbuild/mcuboot/boards/nrf54h20dk_nrf54h20_cpuapp.overlay MCUboot overlay for nRF54H20 with button alias and partition selection
samples/dfu/single_slot/sysbuild/mcuboot/boards/nrf54h20dk_nrf54h20_cpuapp.conf Disables power domain support for MCUboot on nRF54H20
samples/dfu/single_slot/sysbuild/ble_mcumgr_ipc_radio.overlay Radio image partition configuration for firmware loader
samples/dfu/single_slot/sysbuild/ble_mcumgr_ipc_radio.conf Optimized configuration for radio core in firmware loader mode
samples/dfu/single_slot/sysbuild/ble_mcumgr/prj.conf BLE MCUmgr transport configuration with size optimizations
samples/dfu/single_slot/sysbuild/ble_mcumgr/boards/nrf54h20dk_nrf54h20_cpuapp.overlay Application partition configuration for firmware loader
samples/dfu/single_slot/sysbuild.cmake Sysbuild logic to include network core image for firmware loader
samples/dfu/single_slot/sample.yaml Adds nRF54H20 platform to test configuration
samples/dfu/single_slot/boards/nrf54h20dk_nrf54h20_cpuapp.overlay Main application overlay including partition definitions
samples/dfu/single_slot/Kconfig.sysbuild Configures ROM end offset calculation for merged binary signing

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from a9c83f8 to 5aa1aeb Compare November 13, 2025 10:09
Copilot AI review requested due to automatic review settings November 13, 2025 14:33
@ahasztag ahasztag force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from 5aa1aeb to 3829024 Compare November 13, 2025 14:33
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 16 out of 16 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@tomchy tomchy marked this pull request as ready for review November 13, 2025 15:04
@NordicBuilder
Copy link
Contributor

NordicBuilder commented Nov 13, 2025

Memory footprint analysis revealed the following potential issues

applications.hpf.gpio.icmsg[nrf54l15dk/nrf54l15/cpuflpr]: High RAM usage: 9102[B] - link (cc: @nrfconnect/ncs-ll-ursus)
applications.hpf.gpio.icmsg[nrf54l15dk/nrf54l15/cpuflpr]: High ROM usage: 5858[B] - link (cc: @nrfconnect/ncs-ll-ursus)
applications.hpf.gpio.icbmsg[nrf54l15dk/nrf54l15/cpuflpr]: High RAM usage: 12744[B] - link (cc: @nrfconnect/ncs-ll-ursus)
applications.hpf.gpio.icbmsg[nrf54l15dk/nrf54l15/cpuflpr]: High ROM usage: 9492[B] - link (cc: @nrfconnect/ncs-ll-ursus)

Note: This message is automatically posted and updated by the CI (latest/sdk-nrf/PR-24982/28)

@ahasztag ahasztag changed the title NCSDK-33237: Add firmware loader sample NCSDK-33237: Add firmware loader sample for nRF54H20 Nov 14, 2025
@tejlmand
Copy link
Contributor

This sample is not intended for standalone building. As stated inside the README.rst file:

any sample under sample should be possible to build stand-alone in order for users to have a starting point with a sane configuration from where they can include the sample into their own product.

Besides that, the same warnings are printed with twister, so please fix:

$ west twister -T samples/dfu/fw_loader/ble_mcumgr/
...
INFO    - Run completed
$ cat twister-out/[email protected]_nrf54h20_cpuapp/zephyr/nrf/samples/dfu/fw_loader/ble_mcumgr/sample.fw_loader_ble_mcumgr/build.log
....
warning: TIMESLICE_SIZE (defined at soc/sensry/ganymed/sy1xx/Kconfig.defconfig:70,
kernel/Kconfig:671) was assigned the value '0' but got the value ''. Check these unsatisfied
dependencies: ((SOC_SERIES_SY1XX && SOC_SERIES_SY1XX && SOC_FAMILY_GANYMED) || TIMESLICING) (=n).
See http://docs.zephyrproject.org/latest/kconfig.html#CONFIG_TIMESLICE_SIZE and/or look up
TIMESLICE_SIZE in the menuconfig/guiconfig interface. The Application Development Primer, Setting
Configuration Values, and Kconfig - Tips and Best Practices sections of the manual might be helpful
too.

warning: The choice symbol MCUBOOT_BOOTLOADER_MODE_FIRMWARE_UPDATER (defined at
modules/Kconfig.mcuboot:328) was selected (set =y), but no symbol ended up as the choice selection.
See
http://docs.zephyrproject.org/latest/kconfig.html#CONFIG_MCUBOOT_BOOTLOADER_MODE_FIRMWARE_UPDATER
and/or look up MCUBOOT_BOOTLOADER_MODE_FIRMWARE_UPDATER in the menuconfig/guiconfig interface. The
Application Development Primer, Setting Configuration Values, and Kconfig - Tips and Best Practices
sections of the manual might be helpful too.
...
$

@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from dac93d9 to 844aa9c Compare November 24, 2025 10:40
Copilot AI review requested due to automatic review settings November 24, 2025 10:53
@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from 844aa9c to 423f5a1 Compare November 24, 2025 10:53
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from 423f5a1 to 086435f Compare November 25, 2025 08:41
Copilot AI review requested due to automatic review settings November 26, 2025 13:07
@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from 086435f to 75e8b30 Compare November 26, 2025 13:07
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from 75e8b30 to 96c9839 Compare November 26, 2025 13:54
@tomchy tomchy added this to the 3.2.0 milestone Nov 26, 2025
@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from 96c9839 to 20ff66a Compare November 26, 2025 14:21
Copilot AI review requested due to automatic review settings November 26, 2025 14:21
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from 20ff66a to fd60882 Compare November 26, 2025 14:25
Copy link
Contributor

@tejlmand tejlmand left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the direction 👍

Please take a look at the remote board handling, we try to get a cleaner and more overall consistent approach where downstream users can more easily create their own board based on Nordic's SoCs.

Copilot AI review requested due to automatic review settings November 27, 2025 11:18
@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from fd60882 to 2380357 Compare November 27, 2025 11:18
@tomchy tomchy requested a review from tejlmand November 27, 2025 11:18
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@shanthanordic
Copy link

PR not ready, moving out of 3.2.0 scope

@shanthanordic shanthanordic removed this from the 3.2.0 milestone Nov 27, 2025
@tomchy tomchy dismissed nordicjm’s stale review November 27, 2025 11:57

co-build-system review done by @tejlmand

@tomchy tomchy added this to the 3.2.0 milestone Nov 27, 2025
Assign merged slot signing script to FW loader applications.

Ref: NCSDK-33237

Signed-off-by: Tomasz Chyrowicz <[email protected]>
Add a possibility to select radio image for the FW loader.

Ref: NCSDK-33237

Signed-off-by: Tomasz Chyrowicz <[email protected]>
Add configuration dedicated forn nRF54H20

Ref: NCSDK-33237

Signed-off-by: Tomasz Chyrowicz <[email protected]>
Add missing configuration, so the FW loader application can be built
directly.

Ref: NCSDK-33237

Signed-off-by: Tomasz Chyrowicz <[email protected]>
@tomchy tomchy force-pushed the feature/dfu/NCSDK-33237_Firmware_loader_sample branch from 2380357 to 0d194cf Compare November 27, 2025 16:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog-entry-required Update changelog before merge. Remove label if entry is not needed or already added.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants