Skip to content

Commit 5343c02

Browse files
committed
suit: Move MPI to sysbuild Kconfig
Use sysbuild to build and configure SUIT Manifest Provisioning Information. Ref: NCSDK-30461 Signed-off-by: Tomasz Chyrowicz <[email protected]>
1 parent 2537529 commit 5343c02

35 files changed

+338
-365
lines changed

CODEOWNERS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@
7171
/cmake/ @nrfconnect/ncs-co-build-system
7272
/cmake/sysbuild/suit.cmake @nrfconnect/ncs-charon
7373
/cmake/sysbuild/suit_utilities.cmake @nrfconnect/ncs-charon
74+
/cmake/sysbuild/suit_provisioning.cmake @nrfconnect/ncs-charon
75+
/cmake/sysbuild/suit_provisioning_nrf54h20.cmake @nrfconnect/ncs-charon
7476

7577
# All doc related files
7678
/doc/_zoomin/ @nrfconnect/ncs-co-doc @nrfconnect/ncs-doc-leads
@@ -774,6 +776,8 @@
774776
# Sysbuild
775777
/sysbuild/ @nrfconnect/ncs-co-build-system
776778
/sysbuild/Kconfig.suit @nrfconnect/ncs-charon
779+
/sysbuild/Kconfig.suit_provisioning @nrfconnect/ncs-charon
780+
/sysbuild/suit_provisioning/ @nrfconnect/ncs-charon
777781
/sysbuild/suit.cmake @nrfconnect/ncs-charon
778782

779783
# Tests

applications/machine_learning/remote/boards/nrf54h20dk_nrf54h20_cpuppr.conf

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ CONFIG_EVENT_MANAGER_PROXY_BIND_TIMEOUT_MS=4000
3131

3232
CONFIG_GPIO=y
3333

34-
CONFIG_SUIT_MPI_GENERATE=n
35-
3634
################################################################################
3735
# Debug configuration
3836
CONFIG_LOG=y

cmake/sysbuild/suit.cmake

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,6 @@ function(suit_create_package)
509509
endif()
510510

511511
# Read SUIT storage addresses, set during MPI generation
512-
sysbuild_get(SUIT_STORAGE_ADDRESS IMAGE ${DEFAULT_IMAGE} VAR SUIT_STORAGE_ADDRESS CACHE)
513512
if(DEFINED SUIT_STORAGE_ADDRESS)
514513
list(APPEND STORAGE_BOOT_ARGS --storage-address ${SUIT_STORAGE_ADDRESS})
515514
else()
@@ -521,7 +520,7 @@ function(suit_create_package)
521520
--storage-output-directory
522521
"${DEFAULT_BINARY_DIR}/zephyr"
523522
--zephyr-base ${ZEPHYR_BASE}
524-
--config-file "${DEFAULT_BINARY_DIR}/zephyr/.config"
523+
--config-file "${PROJECT_BINARY_DIR}/.config"
525524
${CORE_ARGS}
526525
)
527526
set_property(
@@ -568,19 +567,13 @@ function(suit_setup_merge)
568567
list(APPEND ARTIFACTS_TO_MERGE ${IMAGE_BINARY_DIR}/zephyr/${IMAGE_BINARY_FILE}.hex)
569568
list(APPEND ARTIFACTS_TO_MERGE ${IMAGE_BINARY_DIR}/zephyr/uicr.hex)
570569

571-
unset(CONFIG_SUIT_ENVELOPE_OUTPUT_MPI_MERGE)
572-
sysbuild_get(CONFIG_SUIT_ENVELOPE_OUTPUT_MPI_MERGE IMAGE ${image} VAR CONFIG_SUIT_ENVELOPE_OUTPUT_MPI_MERGE KCONFIG)
573-
if(CONFIG_SUIT_ENVELOPE_OUTPUT_MPI_MERGE)
574-
list(APPEND ARTIFACTS_TO_MERGE ${BINARY_DIR}/zephyr/suit_mpi_${IMAGE_TARGET_NAME}_merged.hex)
575-
endif()
576-
577-
if(${IMAGE_TARGET_NAME} STREQUAL "application")
578-
# Get a list of files (and their dependencies) which need merging into the uicr merged file
579-
# and add them at the end of the list, allowing for overwriting, this only applies to the
580-
# application core image
581-
get_property(merge_files GLOBAL PROPERTY SUIT_MERGE_FILE)
582-
get_property(merge_dependencies GLOBAL PROPERTY SUIT_MERGE_DEPENDENCIES)
583-
else()
570+
# Get a list of files (and their dependencies) which need merging into the uicr merged file
571+
# and add them at the end of the list, allowing for overwriting
572+
unset(merge_files)
573+
unset(merge_dependencies)
574+
get_property(merge_files GLOBAL PROPERTY SUIT_MERGE_${IMAGE_TARGET_NAME}_FILE)
575+
get_property(merge_dependencies GLOBAL PROPERTY SUIT_MERGE_${IMAGE_TARGET_NAME}_DEPENDENCIES)
576+
if(NOT DEFINED merge_files)
584577
set(merge_files)
585578
set(merge_dependencies)
586579
endif()
@@ -595,7 +588,7 @@ function(suit_setup_merge)
595588
# fixme: uicr_merged is overwritten by new content, runners_yaml_props_target could be used to define
596589
# what shall be flashed, but not sure where to set this! Remove --overlap if ready!
597590
# example usage: set_property(TARGET runners_yaml_props_target PROPERTY hex_file ${merged_hex_file})
598-
COMMAND ${CMAKE_COMMAND} -E copy ${OUTPUT_HEX_FILE} ${IMAGE_BINARY_DIR}/zephyr/uicr_merged.hex
591+
COMMAND ${CMAKE_COMMAND} -E copy ${OUTPUT_HEX_FILE} ${IMAGE_BINARY_DIR}/zephyr/uicr_merged.hex
599592
)
600593
endforeach()
601594
endfunction()
Lines changed: 226 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
#
2+
# Copyright (c) 2024 Nordic Semiconductor ASA
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
6+
7+
set(SUIT_GENERATOR_CLI_SCRIPT "${ZEPHYR_SUIT_GENERATOR_MODULE_DIR}/suit_generator/cli.py")
8+
sysbuild_get(DEFAULT_BINARY_DIR IMAGE ${DEFAULT_IMAGE} VAR APPLICATION_BINARY_DIR CACHE)
9+
set(MPI_BINARY_DIR ${DEFAULT_BINARY_DIR}/zephyr)
10+
11+
# Usage:
12+
# configure_storage_address_cache()
13+
#
14+
# Store the absolute address of the SUIT storage inside CMake cache.
15+
#
16+
function(configure_storage_address_cache)
17+
sysbuild_dt_nodelabel(
18+
suit_storage_dev
19+
IMAGE
20+
${DEFAULT_IMAGE}
21+
NODELABEL
22+
"suit_storage_partition"
23+
)
24+
25+
if(NOT DEFINED suit_storage_dev)
26+
message(WARNING "Unable to read SUIT storage address from DTS - nodes undefined")
27+
return()
28+
endif()
29+
30+
# Calculate SUIT storage address, based on the DTS
31+
sysbuild_dt_reg_addr(
32+
suit_storage_address
33+
IMAGE
34+
${DEFAULT_IMAGE}
35+
PATH
36+
"${suit_storage_dev}"
37+
)
38+
39+
set(SUIT_STORAGE_ADDRESS ${suit_storage_address} CACHE STRING "SUIT storage address")
40+
endfunction()
41+
42+
# Usage:
43+
# generate_mpi_hex(<manifest_role>)
44+
#
45+
# Will generate HEX file for a single manifest role, based on Kconfigs defined by the template.
46+
#
47+
# <manifest_role>: The role that was used to generate a set of Kconfigs, defined by the
48+
# Kconfig.template.manifest_config.
49+
#
50+
# Required Kconfigs:
51+
# - SUIT_MPI_<manifest_role>_VENDOR_NAME
52+
# - SUIT_MPI_<manifest_role>_CLASS_NAME
53+
# - SUIT_MPI_<manifest_role>_OFFSET
54+
# - SUIT_MPI_<manifest_role>_PATH
55+
# - SUIT_MPI_SLOT_SIZE
56+
#
57+
function(generate_mpi_hex manifest_role)
58+
set(generate_args "")
59+
set(descr_args "")
60+
61+
if(NOT DEFINED SB_CONFIG_SUIT_MPI_${manifest_role})
62+
return()
63+
endif()
64+
65+
if((NOT DEFINED SB_CONFIG_SUIT_MPI_${manifest_role}_VENDOR_NAME) OR
66+
(NOT DEFINED SB_CONFIG_SUIT_MPI_${manifest_role}_CLASS_NAME) OR
67+
(NOT DEFINED SB_CONFIG_SUIT_MPI_${manifest_role}_OFFSET) OR
68+
(NOT DEFINED SB_CONFIG_SUIT_MPI_${manifest_role}_PATH) OR
69+
(NOT DEFINED SB_CONFIG_SUIT_MPI_SLOT_SIZE)
70+
)
71+
message(FATAL_ERROR "Malformed configuration for: ${manifest_role}")
72+
return()
73+
endif()
74+
75+
MATH(
76+
EXPR
77+
SUIT_MPI_${manifest_role}_ADDRESS
78+
"${SUIT_STORAGE_ADDRESS}
79+
+ ${SB_CONFIG_SUIT_MPI_${manifest_role}_OFFSET}"
80+
OUTPUT_FORMAT HEXADECIMAL
81+
)
82+
83+
list(APPEND generate_args
84+
--vendor-name ${SB_CONFIG_SUIT_MPI_${manifest_role}_VENDOR_NAME}
85+
--class-name ${SB_CONFIG_SUIT_MPI_${manifest_role}_CLASS_NAME}
86+
--address ${SUIT_MPI_${manifest_role}_ADDRESS}
87+
--size ${SB_CONFIG_SUIT_MPI_SLOT_SIZE}
88+
--output-file ${SB_CONFIG_SUIT_MPI_${manifest_role}_PATH}
89+
)
90+
91+
list(APPEND descr_args
92+
${SB_CONFIG_SUIT_MPI_${manifest_role}_PATH}
93+
${SB_CONFIG_SUIT_MPI_${manifest_role}_VENDOR_NAME}
94+
${SB_CONFIG_SUIT_MPI_${manifest_role}_CLASS_NAME}
95+
"address=${SUIT_MPI_${manifest_role}_ADDRESS}"
96+
)
97+
98+
if(DEFINED SB_CONFIG_SUIT_MPI_${manifest_role}_DOWNGRADE_PREVENTION)
99+
list(APPEND generate_args
100+
--downgrade-prevention-enabled
101+
)
102+
list(APPEND descr_args
103+
downgrade-prevention-enabled
104+
)
105+
endif()
106+
107+
if(DEFINED SB_CONFIG_SUIT_MPI_${manifest_role}_INDEPENDENT_UPDATE)
108+
list(APPEND generate_args
109+
--independent-updates
110+
)
111+
list(APPEND descr_args
112+
"independent updates"
113+
)
114+
endif()
115+
116+
if(DEFINED SB_CONFIG_SUIT_MPI_${manifest_role}_SIGNATURE_CHECK_ENABLED_ON_UPDATE)
117+
list(APPEND generate_args
118+
--signature-verification update
119+
)
120+
list(APPEND descr_args
121+
"signed updates"
122+
)
123+
elseif(DEFINED SB_CONFIG_SUIT_MPI_${manifest_role}_SIGNATURE_CHECK_ENABLED_ON_UPDATE_AND_BOOT)
124+
list(APPEND generate_args
125+
--signature-verification update-and-boot
126+
)
127+
list(APPEND descr_args
128+
"signed updates"
129+
"signed boot"
130+
)
131+
endif()
132+
133+
add_custom_target(
134+
create_suit_mpi_${manifest_role}
135+
COMMAND ${PYTHON_EXECUTABLE} ${SUIT_GENERATOR_CLI_SCRIPT}
136+
mpi
137+
generate
138+
${generate_args}
139+
BYPRODUCTS ${SB_CONFIG_SUIT_MPI_${manifest_role}_PATH}
140+
COMMENT "Create SUIT artifacts"
141+
)
142+
message(INFO " Generate MPI for ${manifest_role} manifest (${descr_args})")
143+
endfunction()
144+
145+
# Usage:
146+
# generate_mpi_area(<area_name> [<manifest_role>...])
147+
#
148+
# Will generate HEX file for an MPI area attached to a single domain.
149+
# At the end of the merging process, a digest of the resulting binary will be
150+
# calculated and appended at the end of it.
151+
#
152+
# <area_name>: Name of the area. A valid area must define output file path, address and size.
153+
# <manifest_role>: The role that was used to generate a set of Kconfigs, defined by the
154+
# Kconfig.template.manifest_config.
155+
# Used to extract the HEX file path containing the MPI configuration.
156+
#
157+
# Required Kconfigs:
158+
# - SUIT_MPI_<area_name>_PATH
159+
# - SUIT_MPI_<area_name>_OFFSET
160+
# - SUIT_MPI_<area_name>_SIZE
161+
# - SUIT_MPI_<manifest_role>_PATH
162+
#
163+
function (generate_mpi_area area)
164+
set(merge_args "")
165+
set(dependencies "")
166+
167+
if((NOT DEFINED SB_CONFIG_SUIT_MPI_${area}_PATH) OR
168+
(NOT DEFINED SB_CONFIG_SUIT_MPI_${area}_OFFSET) OR
169+
(NOT DEFINED SB_CONFIG_SUIT_MPI_${area}_SIZE)
170+
)
171+
message(FATAL_ERROR "Malformed configuration for: ${area}")
172+
return()
173+
endif()
174+
175+
# Calculate the absolute address of the MPI area.
176+
MATH(
177+
EXPR
178+
SUIT_MPI_${area}_ADDRESS
179+
"${SUIT_STORAGE_ADDRESS}
180+
+ ${SB_CONFIG_SUIT_MPI_${area}_OFFSET}"
181+
OUTPUT_FORMAT HEXADECIMAL
182+
)
183+
184+
set(output ${MPI_BINARY_DIR}/${SB_CONFIG_SUIT_MPI_${area}_PATH})
185+
set(address ${SUIT_MPI_${area}_ADDRESS})
186+
set(size ${SB_CONFIG_SUIT_MPI_${area}_SIZE})
187+
188+
list(APPEND merge_args
189+
--output-file ${output}
190+
--address ${address}
191+
--size ${size}
192+
)
193+
194+
foreach(role ${ARGN})
195+
if(NOT DEFINED SB_CONFIG_SUIT_MPI_${role}_PATH)
196+
continue()
197+
endif()
198+
199+
list(APPEND merge_args "--file" "${SB_CONFIG_SUIT_MPI_${role}_PATH}")
200+
list(APPEND dependencies "${SB_CONFIG_SUIT_MPI_${role}_PATH}")
201+
endforeach()
202+
203+
add_custom_target(
204+
create_suit_mpi_area_${area}
205+
ALL
206+
COMMAND ${PYTHON_EXECUTABLE} ${SUIT_GENERATOR_CLI_SCRIPT}
207+
mpi
208+
merge
209+
${merge_args}
210+
DEPENDS ${dependencies}
211+
BYPRODUCTS ${output}
212+
COMMENT "Create SUIT artifacts"
213+
)
214+
215+
message(INFO " Generate merged MPI for ${area} (${output})")
216+
endfunction()
217+
218+
if(DEFINED SB_CONFIG_SOC_SERIES_NRF54HX)
219+
configure_storage_address_cache()
220+
endif() # SB_CONFIG_SOC_SERIES_NRF54HX
221+
222+
if(DEFINED SB_CONFIG_SUIT_MPI_GENERATE)
223+
if(DEFINED SB_CONFIG_SUIT_MPI_SOC_NRF54H20)
224+
include(${CMAKE_CURRENT_LIST_DIR}/suit_provisioning_nrf54h20.cmake)
225+
endif() # SB_CONFIG_SUIT_MPI_SOC_NRF54H20
226+
endif() # SB_CONFIG_SUIT_MPI_GENERATE

subsys/suit/provisioning/soc/nrf54h20.cmake renamed to cmake/sysbuild/suit_provisioning_nrf54h20.cmake

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#
44
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
55
#
6+
include(${CMAKE_CURRENT_LIST_DIR}/suit_utilities.cmake)
67

78
# List all manifest roles.
89
# The function internally checks if the enabling symbol is defined.
@@ -31,3 +32,16 @@ generate_mpi_area(
3132
RAD_LOCAL_1
3233
RAD_LOCAL_2
3334
)
35+
36+
if(SB_CONFIG_SUIT_ENVELOPE_OUTPUT_MPI_MERGE)
37+
suit_add_merge_hex_file(
38+
FILES ${MPI_BINARY_DIR}/${SB_CONFIG_SUIT_MPI_APP_AREA_PATH}
39+
DEPENDENCIES ${MPI_BINARY_DIR}/${SB_CONFIG_SUIT_MPI_APP_AREA_PATH}
40+
TARGET "application"
41+
)
42+
suit_add_merge_hex_file(
43+
FILES ${MPI_BINARY_DIR}/${SB_CONFIG_SUIT_MPI_RAD_AREA_PATH}
44+
DEPENDENCIES ${MPI_BINARY_DIR}/${SB_CONFIG_SUIT_MPI_RAD_AREA_PATH}
45+
TARGET "radio"
46+
)
47+
endif()

cmake/sysbuild/suit_utilities.cmake

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,15 +126,20 @@ function(suit_create_nordic_cache_partition args output_file)
126126
endfunction()
127127

128128
# Usage:
129-
# suit_add_merge_hex_file(FILES <files> [DEPENDENCIES <dependencies>]
129+
# suit_add_merge_hex_file(FILES <files> [DEPENDENCIES <dependencies>] [TARGET <sysbuild_target>]
130130
#
131131
# Add files which should be merged into the uicr_merged.hex output file, respecting any
132132
# dependencies that need to be generated before hand. This will overwrite existing data if it is
133133
# present in other files
134134
function(suit_add_merge_hex_file)
135-
cmake_parse_arguments(arg "" "" "FILES;DEPENDENCIES" ${ARGN})
135+
cmake_parse_arguments(arg "" "TARGET" "FILES;DEPENDENCIES" ${ARGN})
136136
zephyr_check_arguments_required(${CMAKE_CURRENT_FUNCTION} arg FILES)
137137

138-
set_property(GLOBAL APPEND PROPERTY SUIT_MERGE_FILE ${arg_FILES})
139-
set_property(GLOBAL APPEND PROPERTY SUIT_MERGE_DEPENDENCIES ${arg_DEPENDENCIES})
138+
if(DEFINED arg_TARGET)
139+
set_property(GLOBAL APPEND PROPERTY SUIT_MERGE_${arg_TARGET}_FILE ${arg_FILES})
140+
set_property(GLOBAL APPEND PROPERTY SUIT_MERGE_${arg_TARGET}_DEPENDENCIES ${arg_DEPENDENCIES})
141+
else()
142+
set_property(GLOBAL APPEND PROPERTY SUIT_MERGE_application_FILE ${arg_FILES})
143+
set_property(GLOBAL APPEND PROPERTY SUIT_MERGE_application_DEPENDENCIES ${arg_DEPENDENCIES})
144+
endif()
140145
endfunction()

config/suit/templates/nrf54h20/default/v1/app_envelope.yaml.jinja2

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
{%- set mpi_application_vendor_name = application['config']['CONFIG_SUIT_MPI_APP_LOCAL_1_VENDOR_NAME']|default('nordicsemi.com') %}
2-
{%- set mpi_application_class_name = application['config']['CONFIG_SUIT_MPI_APP_LOCAL_1_CLASS_NAME']|default('nRF54H20_sample_app') %}
1+
{%- set mpi_application_vendor_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_APP_LOCAL_1_VENDOR_NAME']|default('nordicsemi.com') %}
2+
{%- set mpi_application_class_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_APP_LOCAL_1_CLASS_NAME']|default('nRF54H20_sample_app') %}
33
SUIT_Envelope_Tagged:
44
suit-authentication-wrapper:
55
SuitDigest:

config/suit/templates/nrf54h20/default/v1/app_recovery_envelope_app_local.yaml.jinja2

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{%- set component_index = 0 %}
22
{%- set component_list = [] %}
33
{%- set dependencies_list = [] %}
4-
{%- set mpi_app_recovery_vendor_name = application['config']['CONFIG_SUIT_MPI_APP_RECOVERY_VENDOR_NAME']|default('nordicsemi.com') %}
5-
{%- set mpi_app_recovery_class_name = application['config']['CONFIG_SUIT_MPI_APP_RECOVERY_CLASS_NAME']|default('nRF54H20_app_recovery') %}
6-
{%- set mpi_rad_recovery_vendor_name = application['config']['CONFIG_SUIT_MPI_RAD_RECOVERY_VENDOR_NAME']|default('nordicsemi.com') %}
7-
{%- set mpi_rad_recovery_class_name = application['config']['CONFIG_SUIT_MPI_RAD_RECOVERY_CLASS_NAME']|default('nRF54H20_rad_recovery') %}
8-
{%- set mpi_app_recovery_local_vendor_name = application['config']['CONFIG_SUIT_MPI_APP_LOCAL_3_VENDOR_NAME']|default('nordicsemi.com') %}
9-
{%- set mpi_app_recovery_local_class_name = application['config']['CONFIG_SUIT_MPI_APP_LOCAL_3_CLASS_NAME']|default('nRF54H20_sample_app_2') %}
4+
{%- set mpi_app_recovery_vendor_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_APP_RECOVERY_VENDOR_NAME']|default('nordicsemi.com') %}
5+
{%- set mpi_app_recovery_class_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_APP_RECOVERY_CLASS_NAME']|default('nRF54H20_app_recovery') %}
6+
{%- set mpi_rad_recovery_vendor_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_RAD_RECOVERY_VENDOR_NAME']|default('nordicsemi.com') %}
7+
{%- set mpi_rad_recovery_class_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_RAD_RECOVERY_CLASS_NAME']|default('nRF54H20_rad_recovery') %}
8+
{%- set mpi_app_recovery_local_vendor_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_APP_LOCAL_3_VENDOR_NAME']|default('nordicsemi.com') %}
9+
{%- set mpi_app_recovery_local_class_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_APP_LOCAL_3_CLASS_NAME']|default('nRF54H20_sample_app_2') %}
1010
SUIT_Envelope_Tagged:
1111
suit-authentication-wrapper:
1212
SuitDigest:

config/suit/templates/nrf54h20/default/v1/app_recovery_envelope_direct.yaml.jinja2

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{%- set component_index = 0 %}
22
{%- set component_list = [] %}
33
{%- set dependencies_list = [] %}
4-
{%- set mpi_app_recovery_vendor_name = application['config']['CONFIG_SUIT_MPI_APP_RECOVERY_VENDOR_NAME']|default('nordicsemi.com') %}
5-
{%- set mpi_app_recovery_class_name = application['config']['CONFIG_SUIT_MPI_APP_RECOVERY_CLASS_NAME']|default('nRF54H20_app_recovery') %}
6-
{%- set mpi_rad_recovery_vendor_name = application['config']['CONFIG_SUIT_MPI_RAD_RECOVERY_VENDOR_NAME']|default('nordicsemi.com') %}
7-
{%- set mpi_rad_recovery_class_name = application['config']['CONFIG_SUIT_MPI_RAD_RECOVERY_CLASS_NAME']|default('nRF54H20_rad_recovery') %}
4+
{%- set mpi_app_recovery_vendor_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_APP_RECOVERY_VENDOR_NAME']|default('nordicsemi.com') %}
5+
{%- set mpi_app_recovery_class_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_APP_RECOVERY_CLASS_NAME']|default('nRF54H20_app_recovery') %}
6+
{%- set mpi_rad_recovery_vendor_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_RAD_RECOVERY_VENDOR_NAME']|default('nordicsemi.com') %}
7+
{%- set mpi_rad_recovery_class_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_RAD_RECOVERY_CLASS_NAME']|default('nRF54H20_rad_recovery') %}
88
SUIT_Envelope_Tagged:
99
suit-authentication-wrapper:
1010
SuitDigest:

0 commit comments

Comments
 (0)