-
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
base: main
Are you sure you want to change the base?
Add split-slot A/B sample #25036
Conversation
|
The following west manifest projects have changed revision in this Pull Request:
⛔ DNM label due to: 1 project with PR revision 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: 902f6f21868031cc2d1924950a94c14c855dd479 more detailssdk-nrf:
mcuboot:
Github labels
List of changed files detected by CI (61)Outputs:ToolchainVersion: df3cc9d822 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/22) |
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 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.
cf4a0ad to
e2d118b
Compare
e2d118b to
e8ec290
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 25 out of 25 changed files in this pull request and generated 6 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
e8ec290 to
3329f5a
Compare
3329f5a to
a6ca004
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 25 out of 25 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
a6ca004 to
cf9e1a6
Compare
cf9e1a6 to
e6c9db7
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.
e6c9db7 to
f13c5c6
Compare
f13c5c6 to
0832608
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 2 comments.
Comments suppressed due to low confidence (1)
sysbuild/Kconfig.mcuboot:259
- [nitpick] There are two consecutive blank lines before 'endmenu'. Remove one blank line to maintain consistent spacing.
endmenu
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
0832608 to
ba01711
Compare
Add a possibility to automatically generate a MCUboot manifest with all expected image's digests. Signed-off-by: Tomasz Chyrowicz <tomasz.chyrowicz@nordicsemi.no>
Add routines to parse and check manifest state. Signed-off-by: Tomasz Chyrowicz <tomasz.chyrowicz@nordicsemi.no>
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 <tomasz.chyrowicz@nordicsemi.no>
ba01711 to
902f6f2
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.
| CONFIG_NRF_SECURITY=y | ||
| CONFIG_MULTITHREADING=y | ||
|
|
||
|
|
Copilot
AI
Nov 13, 2025
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.
[nitpick] Empty line at line 8 appears unnecessary and should be removed for consistency.
| This file should be uploaded to the primary slot when the device is running from slot B. | ||
| * :file:`build/ipc_radio/zephyr/zephyr.signed.bin` - Contains the slot A of the radio image. | ||
| This file should be uploaded to the primary slot when the device is running from slot B. | ||
|
|
Copilot
AI
Nov 13, 2025
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.
The documentation states that individual image files should be uploaded separately, but the manifest-based update approach requires both application and radio images to be updated together as a set. This could mislead users. Consider clarifying that both files for a given slot must be uploaded together to satisfy the manifest requirements.
| .. note:: | |
| When using manifest-based updates (with :kconfig:option:`SB_CONFIG_MCUBOOT_MANIFEST_UPDATES=y`), both the application and radio image files for a given slot must be uploaded together as a set. | |
| Uploading only one file will not satisfy the manifest requirements and may result in an incomplete or failed update. | |
| Always ensure that both files for the target slot are uploaded together during the update process. |
|
|
||
| endif # NCS_MCUBOOT_MANIFEST_UPDATES | ||
|
|
||
|
|
Copilot
AI
Nov 13, 2025
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.
[nitpick] Extra blank line at the end of file (line 213) should be removed.
Add A/B sample variant, that describe multi-image FW through a MCUboot manifest with digests.