You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_customize_dfu.rst
+11-9Lines changed: 11 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ How to customize the SUIT DFU process
7
7
:local:
8
8
:depth: 2
9
9
10
-
Nordic Semiconductor provides a Software Update Internet of Things (SUIT) sample (:ref:`ug_nrf54h20_suit_intro`) which uses predefined configurations in the build system.
10
+
Nordic Semiconductor provides a :ref:`Software Update for Internet of Things (SUIT) sample <nrf54h_suit_sample>` which uses predefined configurations in the build system.
11
11
The specified Kconfig options in the sample can be used to customize the DFU process and integrate the DFU solution with external build systems.
12
12
This guide provides a comprehensive set of instructions for modifying values in the :ref:`SUIT manifest <ug_nrf54h20_suit_manifest_overview>`.
13
13
@@ -61,7 +61,7 @@ Build system configuration
61
61
**************************
62
62
63
63
By default the build system generates SUIT envelopes using predefined manifest templates provided by Nordic Semiconductor.
64
-
These templates can be found in :file:`modules/lib/suit-generator/ncs`, and are suitable for standard development needs.
64
+
These templates can be found in :file:`nrf/config/suit/templates` and are suitable for typical development needs.
65
65
66
66
Three manifests are used in the most common case:
67
67
@@ -98,7 +98,7 @@ The build system searches for the manifest templates in the following order:
98
98
99
99
#. It checks if :kconfig:option:`SB_CONFIG_SUIT_ENVELOPE_ROOT_TEMPLATE_FILENAME` or :kconfig:option:`CONFIG_SUIT_ENVELOPE_TEMPLATE_FILENAME` exists in the :file:`<sample-dir>/suit/${SB_CONFIG_SOC}/` file.
100
100
101
-
#. It checks if :kconfig:option:`SB_CONFIG_SUIT_ENVELOPE_ROOT_TEMPLATE_FILENAME` or :kconfig:option:`CONFIG_SUIT_ENVELOPE_TEMPLATE_FILENAME` exists in the :file:`<sdk-nrf-dir>/config/suit/templates/${SB_CONFIG_SOC}/${SB_CONFIG_SUIT_BASE_MANIFEST_VARIANT}/` file.
101
+
#. It checks if :kconfig:option:`SB_CONFIG_SUIT_ENVELOPE_ROOT_TEMPLATE_FILENAME` or :kconfig:option:`CONFIG_SUIT_ENVELOPE_TEMPLATE_FILENAME` exists in the :file:`<sdk-nrf-dir>/nrf/config/suit/templates/${SB_CONFIG_SOC}/${SB_CONFIG_SUIT_BASE_MANIFEST_VARIANT}/` file.
102
102
103
103
The build system selects the set of files from the first successful step.
104
104
@@ -230,16 +230,17 @@ The manifest templates have access to the following:
230
230
231
231
Some of these values are stored in the Python dictionaries that are named after the target name.
232
232
(Therefore, Python is used within the ``.jinja2`` files to fill in the necessary values in the manifest(s).)
233
-
For example, for the :ref:`nrf54h_suit_sample` there will be two variables available: ``application`` and ``radio``.
233
+
For example, for the ``sample.suit.smp_transfer.bt`` configuration (simple bluetooth configuration) in :ref:`nrf54h_suit_sample` there will be two variables available: ``application`` and ``radio``.
234
234
The target names (the names of these variables) can be changed using the :kconfig:option:`CONFIG_SUIT_ENVELOPE_TARGET` Kconfig option for a given image.
235
235
Each variable is a Python dictionary type (``dict``) containing the following keys:
* ``binary`` - Path to the binary, which holds the firmware for the target
240
241
241
242
Additionally, the Python dictionary holds all the variables defined inside the :file:`VERSION` file, used for :ref:`zephyr:app-version-details` in Zephyr and the |NCS|.
242
-
The default templates searches for the following options inside the :file:`VERSION` file:
243
+
The default templates search for the following options inside the :file:`VERSION` file:
243
244
244
245
* ``APP_ROOT_SEQ_NUM`` - Sets the application root manifest sequence number.
245
246
* ``APP_ROOT_VERSION`` - Sets the application root manifest current (semantic) version.
@@ -264,6 +265,7 @@ With the Python dictionary you are able to, for example:
264
265
* Obtain the size of partition with ``application['dt'].chosen_nodes['zephyr,code-partition'].regs[0].size``
265
266
* Get the pair of URI name and the binary path by using ``'#{{ application['name'] }}': {{ application['binary'] }}``
266
267
* Get the root manifest sequence number with ``suit-manifest-sequence-number: {{ APP_ROOT_SEQ_NUM }}``
268
+
* Get the vendor name by using ``application['config']['CONFIG_SUIT_MPI_APP_LOCAL_1_VENDOR_NAME']``
267
269
268
270
Additionally, the **get_absolute_address** method is available to recalculate the absolute address of the partition.
269
271
With these variables and methods, you can define templates which will next be filled out by the build system and use them to prepare the output binary SUIT envelope.
@@ -274,7 +276,7 @@ The examples below demonstrate the use of these variables and methods.
274
276
Set component definition and memory ranges
275
277
------------------------------------------
276
278
277
-
In :file:`modules/lib/suit-generator/ncs/app_envelope.yaml.jinja2`
279
+
In :file:`nrf/config/suit/templates/nrf54h20/default/v1/app_envelope.yaml.jinja2`
278
280
, the component definition and memory ranges are filled out by using the ``edtlib`` (devicetree values) object like so:
279
281
280
282
.. code-block::
@@ -286,12 +288,12 @@ In :file:`modules/lib/suit-generator/ncs/app_envelope.yaml.jinja2`
See the :ref:`ug_suit_dfu_component_def` page for a full list and table of the available customizable components.
291
+
See the :ref:`ug_nrf54h20_suit_components` page for a full list and table of the available customizable components.
290
292
291
293
Set integrated payload
292
294
----------------------
293
295
294
-
In :file:`modules/lib/suit-generator/ncs/app_envelope.yaml.jinja2`
296
+
In :file:`nrf/config/suit/templates/nrf54h20/default/v1/app_envelope.yaml.jinja2`
295
297
, the integrated payload definition is done using the target name and binary location:
296
298
297
299
.. code-block::
@@ -304,7 +306,7 @@ In :file:`modules/lib/suit-generator/ncs/app_envelope.yaml.jinja2`
304
306
Root manifest template
305
307
----------------------
306
308
307
-
The file :file:`modules/lib/suit-generator/ncs/root_with_binary_nordic_top.yaml.jinja2` contains content that is dynamically created, depending on how many targets are built.
309
+
The file :file:`nrf/config/suit/templates/nrf54h20/default/v1/root_with_binary_nordic_top.yaml.jinja2` contains content that is dynamically created, depending on how many targets are built.
308
310
The following example only shows a selected portion of the root manifest file.
309
311
For more information, see the file available in the sample and `Jinja documentation`_:
Copy file name to clipboardExpand all lines: doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_customize_qsg.rst
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,6 @@ The following are basic SUIT concepts you need to understand to be able to custo
19
19
* SUIT envelopes are generated from manifest templates.
20
20
* The SUIT manifest is like a blueprint that tells the system how to create a SUIT envelope, and contains instructions and metadata for the DFU procedure.
21
21
* Default SUIT manifest templates are provided, but customization, especially for UUIDs, is recommended.
22
-
* The manifest templates are automatically created and copied to the sample directory on the first build of SUIT samples.
23
22
24
23
.. figure:: images/nrf54h20_suit_dfu_overview.png
25
24
:alt:Overview of the SUIT DFU procedure
@@ -32,8 +31,10 @@ SUIT DFU process
32
31
================
33
32
34
33
The SUIT DFU process involves creating a SUIT envelope, which includes a manifest outlining the steps for the update.
35
-
When you first build the SUIT sample in the |NCS|, you receive default manifest templates which you can customize according to your project's requirements.
36
-
This guide will walk you through how to customize the SUIT manifest to target your specific device.
34
+
By default, manifests templates provided in :file:`nrf/config/suit/templates` are used to create the envelopes.
35
+
These templates can be copied and customized according to your project's requirements.
36
+
37
+
This guide will walk you through how to customize the SUIT DFU process to target your specific device.
37
38
38
39
For a complete guide on all customizable aspects of the SUIT DFU procedure, see the :ref:`ug_nrf54h20_suit_customize_dfu` user guide.
39
40
@@ -115,7 +116,6 @@ The SUIT DFU procedure can further be customized by:
115
116
116
117
* Creating and modifying your own manifests
117
118
* Generating raw UUID values
118
-
* Changing the default location of the manifests
119
119
120
120
Instructions for these actions and further customization are described in the :ref:`ug_nrf54h20_suit_customize_dfu` page.
121
121
Additionally, you can modify SUIT components within the manifest (see the :ref:`ug_nrf54h20_suit_components` page for more information).
0 commit comments