Skip to content

MCUBoot firmware loader update for NCS#27518

Merged
tomchy merged 1 commit into
nrfconnect:mainfrom
ahasztag:NCSDK-37481_fw_loader_update
Mar 30, 2026
Merged

MCUBoot firmware loader update for NCS#27518
tomchy merged 1 commit into
nrfconnect:mainfrom
ahasztag:NCSDK-37481_fw_loader_update

Conversation

@ahasztag
Copy link
Copy Markdown
Contributor

@ahasztag ahasztag commented Mar 13, 2026

This PR adds support for FW loader updates, using a dedicated installer application. The idea of the installer application is similar to the installer application from nrf-bm (copy the attached FW loader to the target location) but the differences are significant (see attached table):

image

@NordicBuilder NordicBuilder added the doc-required PR must not be merged without tech writer approval. label Mar 13, 2026
@NordicBuilder
Copy link
Copy Markdown
Contributor

NordicBuilder commented Mar 13, 2026

CI Information

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

Inputs:

Sources:

sdk-nrf: PR head: 7b34a697cfd07b9286ba8e1f6c4f084d0f6ddd78

more details

sdk-nrf:

PR head: 7b34a697cfd07b9286ba8e1f6c4f084d0f6ddd78
merge base: 97b2fe53568ada2a09d5ac755b26f72cc39ae046
target head (main): 950d004eebe7cf7b443dec2bfa60696974259934
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 (16)
CODEOWNERS
applications
│  ├── installer
│  │  ├── CMakeLists.txt
│  │  ├── Kconfig
│  │  ├── README.rst
│  │  ├── prj.conf
│  │  ├── socs
│  │  │  │ nrf54h20_cpuapp.conf
│  │  ├── src
│  │  │  │ main.c
│  │  │ sysbuild.conf
cmake
│  ├── sysbuild
│  │  │ image_signing_installer.cmake
doc
│  ├── nrf
│  │  ├── app_dev
│  │  │  ├── bootloaders_dfu
│  │  │  │  ├── mcuboot_nsib
│  │  │  │  │  │ bootloader_adding_sysbuild.rst
│  │  │  ├── device_guides
│  │  │  │  ├── nrf54h
│  │  │  │  │  │ ug_nrf54h20_partitioning_merged.rst
│  │  ├── applications.rst
│  │  ├── releases_and_maturity
│  │  │  ├── releases
│  │  │  │  │ release-notes-changelog.rst
sysbuild
│  ├── CMakeLists.txt
│  ├── Kconfig.firmware_loader
│  │ firmware_loader_installer.cmake

Outputs:

Toolchain

Version: 911f4c5c26
Build docker image: docker-dtr.nordicsemi.no/sw-production/ncs-build:911f4c5c26_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: 42
  • ✅ 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-chip
    • ✅ 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 - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ 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_mosh - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-fw-nrfconnect-nrf_lrcs_positioning - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ 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

@ahasztag ahasztag force-pushed the NCSDK-37481_fw_loader_update branch 6 times, most recently from 3bba72b to 295728e Compare March 13, 2026 13:28
@ahasztag ahasztag requested review from a team, adsz-nordic, de-nordic, nvlsianpu and tomchy March 16, 2026 12:50
@ahasztag ahasztag force-pushed the NCSDK-37481_fw_loader_update branch from 295728e to 08e1250 Compare March 16, 2026 14:10
int rc = 0;

#if CONFIG_UNBOXER_FW_LOADER_ENTRANCE_SELF_INVALIDATE_BY_ERASE
rc = self_invalidate_by_erase(source_fa);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this rc value assignment requires separate check/log on error.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I actually think that it is not strictly necessary - there is already a log in self_invalidate_by_erase and we do treat this as a method of "requesting FW loader entrance", so the log below, although not perfect is not really wrong. I'd prefer to keep this as it is so that the code does not get more complicated with more ifdefs

}

off += fw_loader_tlv_info.it_tlv_tot;
*fw_loader_total_size = fw_loader_header.ih_hdr_size
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

calculating of that and the off is quite redundant. See not issue, just notice.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

It is in fact a bit redundant, but I thought that explicitily writing what values sum to *fw_loader_total_size is more informative than off - *fw_loader_data_start_offset

Comment thread applications/unboxer/src/main.c Outdated
uint32_t source_offset = fw_loader_data_start_offset;
uint32_t target_offset = 0;

rc = flash_area_flatten(target_fa, 0, flash_area_get_size(target_fa));
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actually it should avoid flatten on RRAM memory (this will reduces total lifetime endurance).
code can check flash_area device capability and perform erase if needed.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I've changed to flash_area_erase (also in self_invalidate_by_erase) - I did not find the capability you mentioned, but I assume all of the nordic devices support flash_area_erase so this does not really seem to be an issue

Comment thread applications/unboxer/src/main.c Outdated
LOG_ERR("Failed to clear flash area");
return rc;
}
while (bytes_left > BUFFER_SIZE) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

you can heck whether flash_area_copy() will fit in instead of this code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Indeed, a much better solution, changed

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Update: simply flash area copy was not enough, as the write alignment issue needed to be addressed. Please take a look now


set(output ${CMAKE_BINARY_DIR}/fw_loader_unboxer.signed)

add_custom_command(
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

just for consideration: produce also signed .hex (on Kconfig demand) for verification?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Added

@ahasztag ahasztag force-pushed the NCSDK-37481_fw_loader_update branch from 08e1250 to 58a5899 Compare March 17, 2026 12:54
@ahasztag ahasztag changed the title [DRAFT] Firmware loader update for NCS MCUBoot firmware loader update for NCS Mar 17, 2026
@ahasztag ahasztag marked this pull request as ready for review March 17, 2026 13:00
@ahasztag ahasztag requested review from a team and FrancescoSer as code owners March 17, 2026 13:00
Comment thread applications/installer/prj.conf Outdated
Comment on lines +16 to +17
CONFIG_LOG_MODE_IMMEDIATE=y
CONFIG_LOG_MODE_MINIMAL=y
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

these 2 things clash, only one can be selected

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Ok, left only CONFIG_LOG_MODE_IMMEDIATE

Comment on lines +10 to +11
sysbuild_get(CONFIG_INSTALLER_FW_LOADER_ENTRANCE_BOOT_REQ IMAGE ${installer_image}
VAR CONFIG_INSTALLER_FW_LOADER_ENTRANCE_BOOT_REQ KCONFIG)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

) goes on newline e.g.:

  sysbuild_get(CONFIG_INSTALLER_FW_LOADER_ENTRANCE_BOOT_REQ IMAGE ${installer_image}
    VAR CONFIG_INSTALLER_FW_LOADER_ENTRANCE_BOOT_REQ KCONFIG
  )

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in all instances in this file

sysbuild_get(mcuboot_CONFIG_BOOT_FIRMWARE_LOADER_BOOT_MODE IMAGE mcuboot
VAR CONFIG_BOOT_FIRMWARE_LOADER_BOOT_MODE KCONFIG)
if(NOT mcuboot_CONFIG_BOOT_FIRMWARE_LOADER_BOOT_MODE)
message(WARNING
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

rather than allowing these to mismatch, maybe a Kconfig should be added to sysbuild which sets it in the images?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Actually looking at this currently these warnings should not be in this file at all, as Kconfigs like CONFIG_INSTALLER_FW_LOADER_ENTRANCE_BOOT_MODE are local to the application.

Removing this whole "configuration checks" part - the proper way to set the Kconfig-s is documented and errors are immediately detectable in runtime.

Comment on lines +146 to +153
dt_partition_addr(code_addr PATH "${code_flash}" TARGET ${installer_image} REQUIRED)

math(EXPR start_offset_dts "${code_addr} - ${slot0_addr}")
if(start_offset_dts GREATER 0)
math(EXPR header_size "${header_size} + ${start_offset_dts}")
set(pad_header "--pad-header")
endif()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

not following this, if pad header is needed then it should always be used, there shouldn't be a case of some things need it and some do not, that is the case with PM vs dts which is caused by PM but there is no PM here

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The code can be a bit simplified here (removed the start_offset_dts GREATER 0) as the "header by DTS offset" should be always used with SB_CONFIG_MCUBOOT_SIGN_MERGED_BINARY - so if you meant the if(start_offset_dts GREATER 0) - removed the if.

The code is copied from sign_nrf54h20.cmake - this case is specifically for the nRF54H20 merged image firmware loader. In this case we do not use CONFIG_ROM_START_OFFSET for the header, instead we offset the cpuapp_slot0_partition from slot0_partition and use this space for the MCUBoot header, see for example here:

cpuapp_slot0_partition: partition@800 {

Changing this approach would require the rework of the firmware loader merged image functionalities, which would be way out of scope of this PR.

Comment thread cmake/sysbuild/image_signing_installer.cmake
Comment thread sysbuild/CMakeLists.txt Outdated
include(${ZEPHYR_NRF_MODULE_DIR}/cmake/sysbuild/mcuboot_nrf54h20.cmake)
endif()

if(SB_CONFIG_FIRMWARE_LOADER_UPDATE_ENABLE)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

-enable from the option name, that's what enabling a Kconfig implies

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

refactored (changed name to SB_CONFIG_FIRMWARE_LOADER_UPDATE)

@ahasztag ahasztag force-pushed the NCSDK-37481_fw_loader_update branch 3 times, most recently from 6ea15ae to 35dda0e Compare March 26, 2026 07:54
@ahasztag ahasztag requested a review from nordicjm March 26, 2026 07:54
Copy link
Copy Markdown
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.

Much better.

Small prompt proposals.
Only blocking prompt comments are the word Use, and missing help text.
Rest is just additional suggestions, but those are not blocking.

Comment thread applications/installer/Kconfig Outdated
Comment thread applications/installer/Kconfig Outdated
Comment thread applications/installer/Kconfig Outdated
bool "Use boot mode"
depends on RETAINED_MEM
depends on RETENTION
depends on RETENTION_BOOT_MODE
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

why is there no help text ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Added

Comment thread applications/installer/Kconfig Outdated
depends on RETAINED_MEM || SOC_NRF54H20
depends on RETENTION || SOC_NRF54H20
depends on NRF_MCUBOOT_BOOT_REQUEST
depends on IMG_MANAGER
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

why is there no help text ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Indeed would be helpful, added

Comment thread applications/installer/Kconfig Outdated
@ahasztag ahasztag force-pushed the NCSDK-37481_fw_loader_update branch from bb7ff4b to 914c2f7 Compare March 26, 2026 10:15
@ahasztag ahasztag added this to the 3.3.0 milestone Mar 27, 2026
@ahasztag ahasztag force-pushed the NCSDK-37481_fw_loader_update branch from 914c2f7 to 5b4f8ac Compare March 27, 2026 11:32
Comment thread applications/installer/README.rst Outdated
Comment thread applications/installer/README.rst Outdated
Comment thread applications/installer/README.rst Outdated
Comment thread applications/installer/README.rst Outdated
Comment thread applications/installer/README.rst Outdated
* :kconfig:option:`SB_CONFIG_BOOTLOADER_MCUBOOT`
* :kconfig:option:`SB_CONFIG_MCUBOOT_MODE_FIRMWARE_UPDATER`
* :kconfig:option:`SB_CONFIG_FIRMWARE_LOADER_UPDATE`
This option selects :kconfig:option:`SB_CONFIG_FIRMWARE_LOADER_INSTALLER_BASIC` by default, which causes this application to be built.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
This option selects :kconfig:option:`SB_CONFIG_FIRMWARE_LOADER_INSTALLER_BASIC` by default, which causes this application to be built.
This option selects :kconfig:option:`SB_CONFIG_FIRMWARE_LOADER_INSTALLER_BASIC` by default, which causes this application to be built.

Comment thread applications/installer/README.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread applications/installer/Kconfig Outdated
Comment on lines +28 to +30
depends on RETAINED_MEM
depends on RETENTION
depends on RETENTION_BOOT_MODE
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

surely it should just be RETENTION_BOOT_MODE since RETENTION_BOOT_MODE depends on RETENTION and RETENTION depends on RETAINED_MEM?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Leftover from a previous iteration when select was used, left only RETENTION_BOOT_MODE

Comment thread applications/installer/Kconfig Outdated
Comment on lines +41 to +44
depends on RETAINED_MEM || SOC_NRF54H20
depends on RETENTION || SOC_NRF54H20
depends on NRF_MCUBOOT_BOOT_REQUEST
depends on IMG_MANAGER
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
depends on RETAINED_MEM || SOC_NRF54H20
depends on RETENTION || SOC_NRF54H20
depends on NRF_MCUBOOT_BOOT_REQUEST
depends on IMG_MANAGER
depends on (RETENTION || SOC_NRF54H20) && NRF_MCUBOOT_BOOT_REQUEST && IMG_MANAGER

if I read it rightly?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Changed as suggested

Comment thread cmake/sysbuild/image_signing_installer.cmake
Comment thread cmake/sysbuild/image_signing_installer.cmake
generate_dfu_zip(
OUTPUT ${CMAKE_BINARY_DIR}/dfu_fw_loader_installer.zip
BIN_FILES ${output}.bin
TYPE application
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

type is application, trying to see what this means, seemingly in cmake/fw_zip.cmake it just passes it on to the script but scripts/bootloader/generate_zip.py doesn't even read it - what consumes this value and what does it do with it?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The python script for zip generation puts an additional field "type" in the manifest - the mobile app then uses it for differentiating it from the mcuboot update. As the installer upload currently behave exactly like a normal application upload from the mobile app-s perspective - the application type is used here.


The project must also configure MCUboot to operate in firmware loader mode and specify a firmware loader image in the :file:`sysbuild.conf` file.
For example to select ``smp_svr``, set the following options:
For example, to select the ``ble_mcumgr`` firmware loader image, set the following options:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is there documentation for this sample? If so, might want to link to that here

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Added reference

Comment thread sysbuild/Kconfig.firmware_loader Outdated
Comment on lines +42 to +66
config FIRMWARE_LOADER_UPDATE
bool "Firmware loader update"
depends on MCUBOOT_MODE_FIRMWARE_UPDATER && !FIRMWARE_LOADER_IMAGE_NONE
help
Firmware loader update.
This will allow to update the firmware loader image with the help of the installer image.

if FIRMWARE_LOADER_UPDATE

choice FIRMWARE_LOADER_INSTALLER
prompt "Firmware loader installer image"
default FIRMWARE_LOADER_INSTALLER_BASIC

config FIRMWARE_LOADER_INSTALLER_BASIC
bool "Basic fw loader installer"

endchoice

config FIRMWARE_LOADER_INSTALLER_IMAGE_NAME
string
default "installer" if FIRMWARE_LOADER_INSTALLER_BASIC

config FIRMWARE_LOADER_INSTALLER_IMAGE_PATH
string
default "$(ZEPHYR_NRF_MODULE_DIR)/applications/installer" if FIRMWARE_LOADER_INSTALLER_BASIC
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

these things should all match the image name, so FIRMWARE_LOADER_INSTALLER_BASIC would mean installer_basic etc. easier to just rename to FIRMWARE_LOADER_INSTALLER

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Ok, changed - I had to change the name of the choice itself (it used to be FIRMWARE_LOADER_INSTALLER, now it is FIRMWARE_LOADER_INSTALLER_APPLICATION) and changed the option name to FIRMWARE_LOADER_INSTALLER as suggested

@ahasztag ahasztag requested a review from nordicjm March 27, 2026 12:48
@ahasztag ahasztag force-pushed the NCSDK-37481_fw_loader_update branch from 5b4f8ac to bdb78fb Compare March 27, 2026 12:49
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
@ahasztag ahasztag force-pushed the NCSDK-37481_fw_loader_update branch 2 times, most recently from b3de8bf to c27391c Compare March 27, 2026 13:05
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Copy link
Copy Markdown
Contributor

@FrancescoSer FrancescoSer left a comment

Choose a reason for hiding this comment

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

Approving but please implement the previous suggestions

Comment on lines +418 to +421
The following are the DFU steps for updating the firmware loader image.

.. figure:: ../images/dfu_steps_firmware_loader_update.svg
:alt: DFU operations for a firmware loader image update in MCUboot firmware-loader mode
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This should probably be added as a separate task, as it needs new pictures to be created from scratch.

@ahasztag ahasztag force-pushed the NCSDK-37481_fw_loader_update branch from 3da9898 to debce80 Compare March 27, 2026 13:18
Comment thread CODEOWNERS Outdated
/applications/matter_weather_station/*.rst @nrfconnect/ncs-matter-doc
/applications/nrf5340_audio/**/*.rst @nrfconnect/ncs-audio-doc
/applications/nrf_desktop/**/*.rst @nrfconnect/ncs-si-xcake-doc
/applications/installer/ @nrfconnect/ncs-eris
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Perhaps this could be moved up to line 39

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Moved


* Added support for the nRF54H20 SoC.

* Added support for firmware loader updates using the :ref:`installer` application.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Shouldn't we have this as a new application under Applications?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Added, I assume that if IPC radio is there this should be also here, although this is a helper application used specifically from the MCUBoot firmware loader update, so this is not really a separate entity - take a look if the added changelog entry is OK.

Comment thread applications/installer/README.rst Outdated
@@ -0,0 +1,50 @@
.. _installer:

Installer
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Should the name be more specific?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The "installer" name was used in the NCS baremetal and we were asked by PMT to used the same name - however, I've added "(MCUboot Firmware Loader installer)" in parentheses - this should make the purpose clearer

Comment thread applications/installer/Kconfig Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
Comment thread doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_adding_sysbuild.rst Outdated
@ahasztag ahasztag force-pushed the NCSDK-37481_fw_loader_update branch from 524ea74 to cda75c5 Compare March 30, 2026 07:11
This commit adds support for FW loader updates,
using a dedicated installer application.

Signed-off-by: Artur Hadasz <artur.hadasz@nordicsemi.no>
@ahasztag ahasztag force-pushed the NCSDK-37481_fw_loader_update branch from cda75c5 to 7b34a69 Compare March 30, 2026 07:17
@NordicBuilder
Copy link
Copy Markdown
Contributor

Memory footprint analysis revealed the following potential issues

applications.hpf.gpio.icmsg[nrf54l15dk/nrf54l15/cpuflpr]: High RAM usage: 9014[B] - link (cc: @nrfconnect/ncs-ll-ursus)
applications.hpf.gpio.icmsg[nrf54l15dk/nrf54l15/cpuflpr]: High ROM usage: 5770[B] - link (cc: @nrfconnect/ncs-ll-ursus)
applications.hpf.gpio.icbmsg[nrf54l15dk/nrf54l15/cpuflpr]: High RAM usage: 12662[B] - link (cc: @nrfconnect/ncs-ll-ursus)
applications.hpf.gpio.icbmsg[nrf54l15dk/nrf54l15/cpuflpr]: High ROM usage: 9410[B] - link (cc: @nrfconnect/ncs-ll-ursus)

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

@tomchy tomchy merged commit 73b85a4 into nrfconnect:main Mar 30, 2026
21 checks passed
@ahasztag ahasztag deleted the NCSDK-37481_fw_loader_update branch May 4, 2026 07:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog doc-required PR must not be merged without tech writer approval.

Projects

None yet

Development

Successfully merging this pull request may close these issues.