-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add SUIT support for nRF9280 EngB product. Signed-off-by: Tuomas Parttimaa <[email protected]>
- Loading branch information
Showing
30 changed files
with
3,906 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# | ||
# Copyright (c) 2024 Nordic Semiconductor ASA | ||
# | ||
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause | ||
# | ||
include(${CMAKE_CURRENT_LIST_DIR}/suit_utilities.cmake) | ||
|
||
# List all manifest roles. | ||
# The function internally checks if the enabling symbol is defined. | ||
# If role is enabled, the function verifies if all required options are defined. | ||
|
||
generate_mpi_hex(ROOT) | ||
generate_mpi_hex(APP_RECOVERY) | ||
generate_mpi_hex(APP_LOCAL_1) | ||
generate_mpi_hex(APP_LOCAL_2) | ||
generate_mpi_hex(APP_LOCAL_3) | ||
generate_mpi_area( | ||
APP_AREA | ||
ROOT | ||
APP_RECOVERY | ||
APP_LOCAL_1 | ||
APP_LOCAL_2 | ||
APP_LOCAL_3 | ||
) | ||
|
||
generate_mpi_hex(RAD_RECOVERY) | ||
generate_mpi_hex(RAD_LOCAL_1) | ||
generate_mpi_hex(RAD_LOCAL_2) | ||
generate_mpi_area( | ||
RAD_AREA | ||
RAD_RECOVERY | ||
RAD_LOCAL_1 | ||
RAD_LOCAL_2 | ||
) | ||
|
||
if(SB_CONFIG_SUIT_ENVELOPE_OUTPUT_MPI_MERGE) | ||
suit_add_merge_hex_file( | ||
FILES ${MPI_BINARY_DIR}/${SB_CONFIG_SUIT_MPI_APP_AREA_PATH} | ||
DEPENDENCIES ${MPI_BINARY_DIR}/${SB_CONFIG_SUIT_MPI_APP_AREA_PATH} | ||
TARGET "application" | ||
) | ||
suit_add_merge_hex_file( | ||
FILES ${MPI_BINARY_DIR}/${SB_CONFIG_SUIT_MPI_RAD_AREA_PATH} | ||
DEPENDENCIES ${MPI_BINARY_DIR}/${SB_CONFIG_SUIT_MPI_RAD_AREA_PATH} | ||
TARGET "radio" | ||
) | ||
endif() |
172 changes: 172 additions & 0 deletions
172
config/suit/templates/nrf9280/default/v1/app_envelope.yaml.jinja2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
{%- set mpi_application_vendor_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_APP_LOCAL_1_VENDOR_NAME']|default('nordicsemi.com') %} | ||
{%- set mpi_application_class_name = sysbuild['config']['SB_CONFIG_SUIT_MPI_APP_LOCAL_1_CLASS_NAME']|default('nRF9280_sample_app') %} | ||
SUIT_Envelope_Tagged: | ||
suit-authentication-wrapper: | ||
SuitDigest: | ||
suit-digest-algorithm-id: cose-alg-sha-256 | ||
suit-manifest: | ||
suit-manifest-version: 1 | ||
{%- if APP_LOCAL_1_SEQ_NUM is defined %} | ||
suit-manifest-sequence-number: {{ APP_LOCAL_1_SEQ_NUM }} | ||
{%- elif DEFAULT_SEQ_NUM is defined %} | ||
suit-manifest-sequence-number: {{ DEFAULT_SEQ_NUM }} | ||
{%- else %} | ||
suit-manifest-sequence-number: 1 | ||
{%- endif %} | ||
suit-common: | ||
suit-components: | ||
- - MEM | ||
- {{ application['dt'].label2node['cpu'].unit_addr }} | ||
- {{ get_absolute_address(application['dt'].chosen_nodes['zephyr,code-partition']) }} | ||
- {{ application['dt'].chosen_nodes['zephyr,code-partition'].regs[0].size }} | ||
- - CAND_IMG | ||
- 0 | ||
suit-shared-sequence: | ||
- suit-directive-set-component-index: 0 | ||
- suit-directive-override-parameters: | ||
suit-parameter-vendor-identifier: | ||
RFC4122_UUID: {{ mpi_application_vendor_name }} | ||
suit-parameter-class-identifier: | ||
RFC4122_UUID: | ||
namespace: {{ mpi_application_vendor_name }} | ||
name: {{ mpi_application_class_name }} | ||
suit-parameter-image-digest: | ||
suit-digest-algorithm-id: cose-alg-sha-256 | ||
suit-digest-bytes: | ||
file: {{ application['binary'] }} | ||
suit-parameter-image-size: | ||
file: {{ application['binary'] }} | ||
- suit-condition-vendor-identifier: | ||
- suit-send-record-success | ||
- suit-send-record-failure | ||
- suit-send-sysinfo-success | ||
- suit-send-sysinfo-failure | ||
- suit-condition-class-identifier: | ||
- suit-send-record-success | ||
- suit-send-record-failure | ||
- suit-send-sysinfo-success | ||
- suit-send-sysinfo-failure | ||
suit-validate: | ||
- suit-directive-set-component-index: 0 | ||
# In the case of streaming operations it is worth to retry them at least once. | ||
# This increases the robustness against bit flips on the transport, | ||
# for example when storing the data on an external memory device. | ||
# The suit-directive-try-each will complete on the first successful subsequence. | ||
- suit-directive-try-each: | ||
- - suit-condition-image-match: | ||
- suit-send-record-success | ||
- suit-send-record-failure | ||
- suit-send-sysinfo-success | ||
- suit-send-sysinfo-failure | ||
- - suit-condition-image-match: | ||
- suit-send-record-success | ||
- suit-send-record-failure | ||
- suit-send-sysinfo-success | ||
- suit-send-sysinfo-failure | ||
suit-invoke: | ||
- suit-directive-set-component-index: 0 | ||
- suit-directive-invoke: | ||
- suit-send-record-failure | ||
|
||
{%- if APP_LOCAL_1_VERSION is defined %} | ||
suit-current-version: {{ APP_LOCAL_1_VERSION }} | ||
{%- elif DEFAULT_VERSION is defined %} | ||
suit-current-version: {{ DEFAULT_VERSION }} | ||
{%- endif %} | ||
|
||
suit-install: | ||
- suit-directive-set-component-index: 1 | ||
- suit-directive-override-parameters: | ||
{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI' in application['config'] and application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] != '' %} | ||
suit-parameter-uri: '{{ application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] }}' | ||
{%- else %} | ||
suit-parameter-uri: '#{{ application['name'] }}' | ||
{%- endif %} | ||
suit-parameter-image-digest: | ||
suit-digest-algorithm-id: cose-alg-sha-256 | ||
suit-digest-bytes: | ||
file: {{ application['binary'] }} | ||
- suit-directive-fetch: | ||
- suit-send-record-failure | ||
- suit-directive-try-each: | ||
- - suit-condition-image-match: | ||
- suit-send-record-success | ||
- suit-send-record-failure | ||
- suit-send-sysinfo-success | ||
- suit-send-sysinfo-failure | ||
- - suit-condition-image-match: | ||
- suit-send-record-success | ||
- suit-send-record-failure | ||
- suit-send-sysinfo-success | ||
- suit-send-sysinfo-failure | ||
- suit-directive-set-component-index: 0 | ||
- suit-directive-override-parameters: | ||
suit-parameter-source-component: 1 | ||
# When copying the data it is worth to retry the sequence of | ||
# suit-directive-copy and suit-condition-image-match at least once. | ||
# If a bit flip occurs, it might be due to a transport issue, not | ||
# a corrupted candidate image. In this case the bit flip is recoverable | ||
# and it is worth retrying the operation. | ||
# The suit-directive-try-each will complete on the first successful subsequence. | ||
- suit-directive-try-each: | ||
- - suit-directive-copy: | ||
- suit-send-record-failure | ||
- suit-condition-image-match: | ||
- suit-send-record-success | ||
- suit-send-record-failure | ||
- suit-send-sysinfo-success | ||
- suit-send-sysinfo-failure | ||
- - suit-directive-copy: | ||
- suit-send-record-failure | ||
- suit-condition-image-match: | ||
- suit-send-record-success | ||
- suit-send-record-failure | ||
- suit-send-sysinfo-success | ||
- suit-send-sysinfo-failure | ||
suit-text: | ||
suit-digest-algorithm-id: cose-alg-sha-256 | ||
|
||
suit-candidate-verification: | ||
- suit-directive-set-component-index: 1 | ||
- suit-directive-override-parameters: | ||
{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI' in application['config'] and application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] != '' %} | ||
suit-parameter-uri: '{{ application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] }}' | ||
{%- else %} | ||
suit-parameter-uri: '#{{ application['name'] }}' | ||
{%- endif %} | ||
suit-parameter-image-digest: | ||
suit-digest-algorithm-id: cose-alg-sha-256 | ||
suit-digest-bytes: | ||
file: {{ application['binary'] }} | ||
- suit-directive-fetch: | ||
- suit-send-record-failure | ||
- suit-directive-try-each: | ||
- - suit-condition-image-match: | ||
- suit-send-record-success | ||
- suit-send-record-failure | ||
- suit-send-sysinfo-success | ||
- suit-send-sysinfo-failure | ||
- - suit-condition-image-match: | ||
- suit-send-record-success | ||
- suit-send-record-failure | ||
- suit-send-sysinfo-success | ||
- suit-send-sysinfo-failure | ||
|
||
suit-manifest-component-id: | ||
- INSTLD_MFST | ||
- RFC4122_UUID: | ||
namespace: {{ mpi_application_vendor_name }} | ||
name: {{ mpi_application_class_name }} | ||
suit-text: | ||
en: | ||
'["MEM", {{ application['dt'].label2node['cpu'].unit_addr }}, {{ get_absolute_address(application['dt'].chosen_nodes['zephyr,code-partition']) }}, {{ application['dt'].chosen_nodes['zephyr,code-partition'].regs[0].size }}]': | ||
suit-text-vendor-name: Nordic Semiconductor ASA | ||
suit-text-model-name: nRF9280_cpuapp | ||
suit-text-vendor-domain: nordicsemi.com | ||
suit-text-model-info: The nRF9280 application core | ||
suit-text-component-description: Sample application core FW | ||
suit-text-component-version: v1.0.0 | ||
{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE' not in application['config'] or application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE'] == '' %} | ||
suit-integrated-payloads: | ||
'#{{ application['name'] }}': {{ application['binary'] }} | ||
{%- endif %} |
Oops, something went wrong.