-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Add split-slot A/B sample #25036
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add split-slot A/B sample #25036
Conversation
|
The following west manifest projects have changed revision in this Pull Request:
✅ All manifest checks OK Note: This message is automatically posted and updated by the Manifest GitHub Action. |
CI InformationTo view the history of this post, click the 'edited' button above Inputs:Sources:sdk-nrf: PR head: 445ebb3fc58df6ae2f5f4beac511c2f5c34a4d63 more detailssdk-nrf:
mcuboot:
Github labels
List of changed files detected by CI (62)Outputs:ToolchainVersion: Test Spec & Results: ✅ Success; ❌ Failure; 🟠 Queued; 🟡 Progress; ◻️ Skipped;
|
Memory footprint analysis revealed the following potential issuesapplications.hpf.gpio.icbmsg[nrf54l15dk/nrf54l15/cpuflpr]: High RAM usage: 12744[B] - link (cc: @nrfconnect/ncs-ll-ursus) Note: This message is automatically posted and updated by the CI (latest/sdk-nrf/PR-25036/41) |
b649761 to
40e458e
Compare
40e458e to
f89b505
Compare
f89b505 to
85cf3c7
Compare
4d98c2a to
c194719
Compare
c194719 to
5a78c42
Compare
There was a problem hiding this 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.
5a78c42 to
732b90c
Compare
732b90c to
0dcb062
Compare
There was a problem hiding this 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.
0dcb062 to
4a63b81
Compare
4a63b81 to
886a5ae
Compare
There was a problem hiding this 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.
|
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 |
585c49d to
298c0e3
Compare
298c0e3 to
d54e9a1
Compare
There was a problem hiding this 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.
nordicjm
left a comment
There was a problem hiding this 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
d54e9a1 to
3da00e9
Compare
| 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 |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
3da00e9 to
aee2133
Compare
There was a problem hiding this 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.
aee2133 to
b6b06b0
Compare
b6b06b0 to
0a1ce0e
Compare
There was a problem hiding this 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.
0a1ce0e to
6f12057
Compare
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]>
6f12057 to
445ebb3
Compare
There was a problem hiding this 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.
Add A/B sample variant, that describe multi-image FW through a MCUboot manifest with digests.