SUIT components
Components are the fundamental elements that the SUIT manifest operates on and are declared in suit-common (which is represented as the bstr CBOR value suit-common
within the manifest).
Using and modifying the component types allows for operational, fine-tuned customization of the DFU procedure.
See the Component ID parameters section for more information.
Component types
The current available component types are as follows:
MEM
- MCU memory-mapped slot (such as the MRAM or RAM). This is used to define a specific area in the memory where an image can be placed, and by default, it is defined automatically from the build system. The memory components are the abstractions that map to memory locations on the device’s memory.CAND_MFST
- The candidate manifest component refers to the dependency candidate in the envelope or in the download cache. Different values allow you to declare more than one component of that type per manifest. It points to the candidate manifest instead of copying the content to a memory location. For example, if an envelope contains all the candidate manifests, then you can refer to the manifest in the envelope using the candidate manifest component.CAND_IMG
- The candidate image component refers to the integrated payload in the candidate envelope or payload in the download cache. For example, theCAND_IMG
component allows you to validate the candidate before the installation step is performed. It points to the candidate memory address instead of copying the content to a memory location.The following example shows the installation procedure, including the checking of the coherency of the image by using the
CAND_IMG
component. During the installation process,directive-fetch
puts information about the location of the image into component candidate image0
.condition-image-match
performs the digest check on the candidate image0
and verifies the digest of the image. After the verification, the installation of the image at the final location is done by thedirective-copy
.
components: [ [MEM/2/0xeff8000/0x10000], [CAND_IMG/0] ] install: [ directive-set-component-index 1, directive-override-parameters { uri: '#file.bin' image-digest: [ algorithm-id: "sha256", digest-bytes: '00112233445566778899aabbccddeeff0123456789abcdeffedcba9876543210' ] }, directive-fetch, condition-image-match, directive-set-component-index 0, directive-override-parameters { source-component: 1 }, directive-copy ]
INSTLD_MFST
- The installed manifest component is the slot for the envelope containing the installed manifest, which holds the severed manifest and its authentication block. It points to the manifest, which is already installed.SOC_SPEC
- SOC-specific components are reserved for Nordic internal usage. The installation of this component type goes beyond memory CPU-like operations.CACHE_POOL
- TheCACHE_POOL
is a space where images downloaded during thepayload-fetch
sequence execution can be stored and are ready for installation. In the context of the Application Domain, thepayload-fetch
sequence can contain instructions to fetch images from external sources (such as an HTTP server). Typically, these images must not be installed directly into the destination components by thepayload-fetch
sequence. They must be verified and installed by theinstall
sequence, executed in the context of the SDFW or bootloader.CACHE_POOL
allows you to push the envelope to the device, but without any payloads. When the manifest is processed, it may evaluate what is currently installed on the device. For example, the manifest calculates the digests of specific images, and based on those calculations, it fetches missing images from outside.When the value of
CACHE_POOL
is:0
- describes a location in the DFU partition, located right after the candidate envelope. When theCACHE_POOL
value is0
, it is directly accessible by the SDFW, therefore, it may be used to store a companion image that, when executed on the Application MCU, allows the SDFW to access otherwise unsupported memory areas (such as external flash).1..n
- describes a deployment-specificCACHE_POOL
such as, for example, external flash partitions or other MRAM partitions. It defines multiple different cache pools.
Benefits of the ``CACHE_POOL`` component
The following are the benefits of the
CACHE_POOL
component:Memory optimization -
CACHE_POOL
component allows you to conditionally pull missing images from the Application Domain or application framework before installation starts. It helps in the gradual update process by installing one of the two images in the first installation step and then repeating the process to install another image.Save on data transfer costs - The manifest and the candidate manifest only pull the missing images instead of pushing all the images in the update.
Component ID parameters
The component types that can be modified at this time are listed in the following table. Fields indicate different parameters for component types.
Field 0 - Type |
Field 1 |
Field 2 |
Field 3 |
Field 4 |
Component ID - example |
---|---|---|---|---|---|
|
CPU ID: ( |
Slot address: |
Slot size: |
Application MCU bootable:
|
|
|
ID: |
|
|||
|
ID: |
|
|||
|
Manifest Class ID: |
|
|||
|
ID: Identifier valid within the namespace of a specific SOC. |
nRF54H20:
|
|||
|
ID: |
|