Skip to content

Conversation

@tomchy
Copy link
Contributor

@tomchy tomchy commented Oct 14, 2025

Add A/B sample variant, that describe multi-image FW through a MCUboot manifest with digests.

@NordicBuilder NordicBuilder added doc-required PR must not be merged without tech writer approval. manifest changelog-entry-required Update changelog before merge. Remove label if entry is not needed or already added. labels Oct 14, 2025
@NordicBuilder
Copy link
Contributor

NordicBuilder commented Oct 14, 2025

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

Name Old Revision New Revision Diff
mcuboot nrfconnect/sdk-mcuboot@3839107 nrfconnect/sdk-mcuboot@9ba25b8 (main) nrfconnect/[email protected]

All manifest checks OK

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

@NordicBuilder
Copy link
Contributor

NordicBuilder commented Oct 14, 2025

CI Information

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

Inputs:

Sources:

sdk-nrf: PR head: 445ebb3fc58df6ae2f5f4beac511c2f5c34a4d63
mcuboot: PR head: 9ba25b87567fceaea2e290fbda6be30ebc00625c

more details

sdk-nrf:

PR head: 445ebb3fc58df6ae2f5f4beac511c2f5c34a4d63
merge base: 4d30ec68e3b28425ba031e4255d4046bdf450fb0
target head (main): 0ebd718d51a7b4f29fe2e9bcc0721b4baee4e7f0
Diff

mcuboot:

PR head: 9ba25b87567fceaea2e290fbda6be30ebc00625c
merge base: 3839107e52c7228eba123129a3806fb3391781d6
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 (62)
CODEOWNERS
bootloader
│  ├── mcuboot
│  │  ├── boot
│  │  │  ├── boot_serial
│  │  │  │  ├── src
│  │  │  │  │  │ boot_serial_encryption.c
│  │  │  ├── bootutil
│  │  │  │  ├── CMakeLists.txt
│  │  │  │  ├── include
│  │  │  │  │  ├── bootutil
│  │  │  │  │  │  ├── bootutil.h
│  │  │  │  │  │  ├── enc_key.h
│  │  │  │  │  │  ├── image.h
│  │  │  │  │  │  │ mcuboot_manifest.h
│  │  │  │  ├── src
│  │  │  │  │  ├── bootutil_area.c
│  │  │  │  │  ├── bootutil_area.h
│  │  │  │  │  ├── bootutil_img_hash.c
│  │  │  │  │  ├── bootutil_loader.c
│  │  │  │  │  ├── bootutil_loader.h
│  │  │  │  │  ├── bootutil_misc.c
│  │  │  │  │  ├── bootutil_misc.h
│  │  │  │  │  ├── bootutil_priv.h
│  │  │  │  │  ├── bootutil_public.c
│  │  │  │  │  ├── ed25519_psa.c
│  │  │  │  │  ├── encrypted.c
│  │  │  │  │  ├── image_validate.c
│  │  │  │  │  ├── loader.c
│  │  │  │  │  ├── loader_manifest_xip.c
│  │  │  │  │  ├── mcuboot_manifest.c
│  │  │  │  │  ├── ram_load.c
│  │  │  │  │  ├── swap_misc.c
│  │  │  │  │  ├── swap_offset.c
│  │  │  │  │  │ swap_scratch.c
│  │  │  │  ├── zephyr
│  │  │  │  │  │ CMakeLists.txt
│  │  │  ├── espressif
│  │  │  │  │ CMakeLists.txt
│  │  │  ├── zephyr
│  │  │  │  ├── CMakeLists.txt
│  │  │  │  ├── Kconfig
│  │  │  │  ├── decompression.c
│  │  │  │  ├── include
│  │  │  │  │  ├── mcuboot_config
│  │  │  │  │  │  │ mcuboot_config.h
│  │  ├── docs
│  │  │  │ design.md
│  │  ├── scripts
│  │  │  ├── imgtool
│  │  │  │  ├── image.py
│  │  │  │  │ main.py
│  │  ├── sim
│  │  │  ├── Cargo.toml
│  │  │  ├── mcuboot-sys
│  │  │  │  ├── Cargo.toml
│  │  │  │  │ build.rs
│  │  │  ├── src
│  │  │  │  ├── image.rs
│  │  │  │  │ lib.rs
│  │  │  ├── tests
│  │  │  │  │ core.rs
cmake
│  ├── sysbuild
│  │  ├── image_signing.cmake
│  │  │ mcuboot_manifest.cmake
samples
│  ├── dfu
│  │  ├── ab_split
│  │  │  ├── CMakeLists.txt
│  │  │  ├── Kconfig
│  │  │  ├── README.rst
│  │  │  ├── boards
│  │  │  │  │ nrf54h20dk_nrf54h20_cpuapp.overlay
│  │  │  ├── prj.conf
│  │  │  ├── sample.yaml
│  │  │  ├── src
│  │  │  │  ├── ab_utils.c
│  │  │  │  ├── ab_utils.h
│  │  │  │  │ main.c
│  │  │  ├── sysbuild.conf
│  │  │  ├── sysbuild
│  │  │  │  ├── mcuboot
│  │  │  │  │  ├── boards
│  │  │  │  │  │  │ nrf54h20dk_nrf54h20_cpuapp.overlay
│  │  │  │  │  │ prj.conf
│  │  │  │  │ nrf54h20dk_nrf54h20_memory_map.dtsi
subsys
│  ├── bootloader
│  │  │ Kconfig
│  ├── mgmt
│  │  ├── mcumgr
│  │  │  ├── grp
│  │  │  │  ├── img_mgmt
│  │  │  │  │  ├── src
│  │  │  │  │  │  ├── img_mgmt.c
│  │  │  │  │  │  │ img_mgmt_state.c
sysbuild
│  ├── CMakeLists.txt
│  │ Kconfig.mcuboot
west.yml

Outputs:

Toolchain

Version:
Build docker image:

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

  • ◻️ Toolchain
  • ◻️ Build twister
  • ◻️ Integration tests
    • ◻️ test-sdk-audio
    • ◻️ desktop52_verification
    • ◻️ test-fw-nrfconnect-apps
    • ◻️ test_ble_nrf_config
    • ◻️ test-fw-nrfconnect-ble_mesh
    • ◻️ test-fw-nrfconnect-ble_samples
    • ◻️ test-fw-nrfconnect-chip
    • ◻️ test-fw-nrfconnect-nfc
    • ◻️ test-fw-nrfconnect-nrf-iot_libmodem-nrf
    • ◻️ test-fw-nrfconnect-nrf-iot_zephyr_lwm2m
    • ◻️ test-fw-nrfconnect-nrf-iot_samples
    • ◻️ test-fw-nrfconnect-nrf-iot_lwm2m
    • ◻️ test-fw-nrfconnect-nrf-iot_thingy91
    • ◻️ test-fw-nrfconnect-nrf_crypto
    • ◻️ test-fw-nrfconnect-rpc
    • ◻️ test-fw-nrfconnect-rs
    • ◻️ test-fw-nrfconnect-fem
    • ◻️ test-fw-nrfconnect-tfm
    • ◻️ test-fw-nrfconnect-thread-main
    • ◻️ test-sdk-find-my
    • ◻️ test-fw-nrfconnect-nrf_lrcs_positioning
    • ◻️ test-sdk-wifi
    • ◻️ test-low-level
    • ◻️ test-sdk-mcuboot
    • ◻️ test-sdk-dfu
    • ◻️ test-fw-nrfconnect-ps-main
    • ◻️ test-secdom-samples-public
    • ⚠️ test-fw-nrfconnect-nrf-iot_cloud

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

@NordicBuilder
Copy link
Contributor

NordicBuilder commented Oct 14, 2025

Memory footprint analysis revealed the following potential issues

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)
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)

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

@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from b649761 to 40e458e Compare October 17, 2025 15:19
@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from 40e458e to f89b505 Compare October 22, 2025 13:53
@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from f89b505 to 85cf3c7 Compare October 22, 2025 13:55
@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch 2 times, most recently from 4d98c2a to c194719 Compare October 24, 2025 09:12
@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from c194719 to 5a78c42 Compare November 4, 2025 16:10
Copilot AI review requested due to automatic review settings November 4, 2025 16:10
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 A/B update sample variant demonstrating multi-image firmware updates through MCUboot manifests with digests, enabling transactional updates of multiple images atomically. The implementation introduces manifest-based dependency management for split-slot DirectXIP configurations.

Key Changes:

  • Adds manifest-based transactional update support in MCUboot configuration
  • Implements a new A/B split-slot sample demonstrating separated application and radio core images
  • Updates image management code to handle manifest verification and slot selection

Reviewed Changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
west.yml Updates Zephyr and MCUboot revisions to pull requests supporting manifest features
sysbuild/Kconfig.mcuboot Adds Kconfig options for manifest-based transactional updates
sysbuild/CMakeLists.txt Implements manifest image target assignment and configuration propagation
subsys/mgmt/mcumgr/grp/img_mgmt/src/img_mgmt_state.c Modifies slot state handling to use manifest image when manifest updates enabled
subsys/mgmt/mcumgr/grp/img_mgmt/src/img_mgmt.c Adds full img_mgmt implementation with manifest verification support
subsys/mgmt/mcumgr/grp/img_mgmt/Kconfig Adds QSPI XIP split image configuration option
subsys/mgmt/mcumgr/grp/img_mgmt/CMakeLists.txt Updates build to include new img_mgmt.c and marks upstream file as header-only
subsys/bootloader/Kconfig Adds application-side Kconfig options for manifest updates
scripts/ci/license_allow_list.yaml Adds img_mgmt.c to Apache-2.0 license allowlist
samples/dfu/ab_split/* New sample demonstrating A/B updates with separated slots and manifest-based dependencies
cmake/sysbuild/mcuboot_manifest.cmake Implements manifest YAML generation for primary and secondary slots
cmake/sysbuild/image_signing.cmake Adds manifest appending to imgtool signing process

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

@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from 5a78c42 to 732b90c Compare November 4, 2025 16:29
Copilot AI review requested due to automatic review settings November 5, 2025 11:04
@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from 732b90c to 0dcb062 Compare November 5, 2025 11:04
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 24 out of 24 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/mcuboot/NCSDK-NONE_Transaction_manifest branch from 0dcb062 to 4a63b81 Compare November 5, 2025 11:51
Copilot AI review requested due to automatic review settings November 5, 2025 15:42
@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from 4a63b81 to 886a5ae Compare November 5, 2025 15:42
Copilot AI review requested due to automatic review settings November 17, 2025 14:24
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.

@github-actions
Copy link

You can find the documentation preview for this PR here.

Preview links for modified nRF Connect SDK documents:

https://ncsdoc.z6.web.core.windows.net/PR-25036/nrf/samples/dfu/ab_split/README.html

@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from 585c49d to 298c0e3 Compare November 17, 2025 15:13
Copilot AI review requested due to automatic review settings November 17, 2025 15:16
@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from 298c0e3 to d54e9a1 Compare November 17, 2025 15:16
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 5 comments.


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

Copy link
Contributor

@nordicjm nordicjm left a comment

Choose a reason for hiding this comment

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

Fix described issue in a future PR

@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from d54e9a1 to 3da00e9 Compare November 18, 2025 19:31
set(manifest_secondary_path "manifest_secondary.yaml")
set(manifest_img_slot_1 "mcuboot_secondary_app")

# Since the default (merged) image is excluded from the manifest, because it contains the manifest
Copy link
Contributor

Choose a reason for hiding this comment

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

Isn't the reason simply that we do not need the manifest for merged images at all, because there is no need for dependency handling in this case?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Correct. Manifests cannot be used if there is only a single image.

Copilot AI review requested due to automatic review settings November 19, 2025 11:29
@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from 3da00e9 to aee2133 Compare November 19, 2025 11:29
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/mcuboot/NCSDK-NONE_Transaction_manifest branch from aee2133 to b6b06b0 Compare November 19, 2025 12:59
@NordicBuilder NordicBuilder requested a review from a team November 19, 2025 13:00
Copilot AI review requested due to automatic review settings November 19, 2025 16:20
@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from b6b06b0 to 0a1ce0e Compare November 19, 2025 16:20
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 no new comments.


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

@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from 0a1ce0e to 6f12057 Compare November 20, 2025 08:14
Add a possibility to automatically generate a MCUboot manifest with all
expected image's digests.

Signed-off-by: Tomasz Chyrowicz <[email protected]>
Add routines to parse and check manifest state.

Signed-off-by: Tomasz Chyrowicz <[email protected]>
Add a variant of the A/B sample that presents how to perform A/B updates
in a system, where application and radio images uses separate images and
slots.

Ref: NCSDK-35733

Signed-off-by: Tomasz Chyrowicz <[email protected]>
Extend the app with a logic that reads the current security counter
and bootloader version values from the bootloader info.

Signed-off-by: Tomasz Chyrowicz <[email protected]>
Copilot AI review requested due to automatic review settings November 20, 2025 13:51
@tomchy tomchy force-pushed the feature/mcuboot/NCSDK-NONE_Transaction_manifest branch from 6f12057 to 445ebb3 Compare November 20, 2025 13:51
@NordicBuilder NordicBuilder removed the DNM label Nov 20, 2025
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 merged commit 9943fc1 into nrfconnect:main Nov 20, 2025
20 of 21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

doc-required PR must not be merged without tech writer approval. manifest manifest-mcuboot manifest-zephyr

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants