@@ -110,9 +110,14 @@ function(suit_generate_recovery_dfu_zip)
110110 GLOBAL PROPERTY
111111 SUIT_RECOVERY_DFU_ARTIFACTS
112112 )
113+ get_property (
114+ additional_script_params
115+ GLOBAL PROPERTY
116+ SUIT_RECOVERY_DFU_ZIP_ADDITIONAL_SCRIPT_PARAMS
117+ )
113118
114119 set (root_name "${SB_CONFIG_SUIT_ENVELOPE_APP_RECOVERY_ARTIFACT_NAME} .suit" )
115- set (script_params "${root_name} type=suit-envelope" )
120+ set (script_params "${root_name} type=suit-envelope; ${additional_script_params} " )
116121
117122 include (${ZEPHYR_NRF_MODULE_DIR} /cmake/fw_zip.cmake)
118123
@@ -321,17 +326,30 @@ function(suit_create_package)
321326 )
322327 endforeach ()
323328
324- # First parse which images should be extracted to which cache partition
329+ # First parse which images should be extracted to which cache partitions
325330 set (DFU_CACHE_PARTITIONS_USED "" )
331+ set (RECOVERY_DFU_CACHE_PARTITIONS_USED "" )
332+
326333 foreach (image ${IMAGES} )
327334 sysbuild_get(EXTRACT_TO_CACHE IMAGE ${image} VAR CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE KCONFIG)
328335 if (EXTRACT_TO_CACHE)
329336 sysbuild_get(CACHE_PARTITION_NUM IMAGE ${image} VAR CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_PARTITION KCONFIG)
330- list (APPEND DFU_CACHE_PARTITIONS_USED ${CACHE_PARTITION_NUM} )
331- list (APPEND SUIT_CACHE_PARTITION_${CACHE_PARTITION_NUM} ${image} )
337+
338+ unset (CONFIG_SUIT_RECOVERY)
339+ sysbuild_get(CONFIG_SUIT_RECOVERY IMAGE ${image} VAR CONFIG_SUIT_RECOVERY KCONFIG)
340+
341+ if (CONFIG_SUIT_RECOVERY)
342+ list (APPEND RECOVERY_DFU_CACHE_PARTITIONS_USED ${CACHE_PARTITION_NUM} )
343+ list (APPEND SUIT_RECOVERY_CACHE_PARTITION_${CACHE_PARTITION_NUM} ${image} )
344+ else ()
345+ list (APPEND DFU_CACHE_PARTITIONS_USED ${CACHE_PARTITION_NUM} )
346+ list (APPEND SUIT_CACHE_PARTITION_${CACHE_PARTITION_NUM} ${image} )
347+ endif ()
332348 endif ()
333349 endforeach ()
350+
334351 list (REMOVE_DUPLICATES DFU_CACHE_PARTITIONS_USED)
352+ list (REMOVE_DUPLICATES RECOVERY_DFU_CACHE_PARTITIONS_USED)
335353
336354 # Then create the cache partitions
337355 foreach (CACHE_PARTITION_NUM ${DFU_CACHE_PARTITIONS_USED} )
@@ -353,10 +371,36 @@ function(suit_create_package)
353371 "${CACHE_CREATE_ARGS} "
354372 "${SUIT_ROOT_DIRECTORY} dfu_cache_partition_${CACHE_PARTITION_NUM} .bin"
355373 ${CACHE_PARTITION_NUM}
374+ FALSE
356375 )
357376 endforeach ()
358377
359378 if (SB_CONFIG_SUIT_BUILD_RECOVERY)
379+
380+ # Create cache partitions for the recovery images
381+ foreach (CACHE_PARTITION_NUM ${RECOVERY_DFU_CACHE_PARTITIONS_USED} )
382+ set (CACHE_CREATE_ARGS "" )
383+ foreach (image ${SUIT_RECOVERY_CACHE_PARTITION_${CACHE_PARTITION_NUM} })
384+ sysbuild_get(BINARY_DIR IMAGE ${image} VAR APPLICATION_BINARY_DIR CACHE )
385+ sysbuild_get(BINARY_FILE IMAGE ${image} VAR CONFIG_KERNEL_BIN_NAME KCONFIG)
386+ sysbuild_get(IMAGE_CACHE_URI IMAGE ${image} VAR CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI KCONFIG)
387+ list (APPEND CACHE_CREATE_ARGS
388+ "--input" "\" ${IMAGE_CACHE_URI} ,${BINARY_DIR} /zephyr/${BINARY_FILE} .bin\" "
389+ )
390+ endforeach ()
391+
392+ if (SUIT_DFU_CACHE_PARTITION_${CACHE_PARTITION_NUM} _EB_SIZE)
393+ list (APPEND CACHE_CREATE_ARGS "--eb-size" "${SUIT_DFU_CACHE_PARTITION_${CACHE_PARTITION_NUM} _EB_SIZE}" )
394+ endif ()
395+
396+ suit_create_cache_partition(
397+ "${CACHE_CREATE_ARGS} "
398+ "${SUIT_ROOT_DIRECTORY} dfu_cache_partition_recovery_${CACHE_PARTITION_NUM} .bin"
399+ ${CACHE_PARTITION_NUM}
400+ TRUE
401+ )
402+ endforeach ()
403+
360404 suit_get_manifest(${SB_CONFIG_SUIT_ENVELOPE_APP_RECOVERY_TEMPLATE_FILENAME} INPUT_APP_RECOVERY_ENVELOPE_JINJA_FILE)
361405
362406 # create app recovery envelope if defined
0 commit comments