|
| 1 | +.. _subsys_suit_mfst_var: |
| 2 | + |
| 3 | +SUIT Manifest-accessible variables |
| 4 | +################################## |
| 5 | + |
| 6 | +.. contents:: |
| 7 | + :local: |
| 8 | + :depth: 2 |
| 9 | + |
| 10 | +The SUIT Manifest-accessible variables are new type of components that allow to store integer values. |
| 11 | +They are readable by any SUIT manifest, the SDFW, and the IPC clients. |
| 12 | +The modifiability of these variables depends on the variable ID. |
| 13 | + |
| 14 | +Overview |
| 15 | +******** |
| 16 | + |
| 17 | +The manifest-controlled variable can be defined as one of the components inside the SUIT manifest. |
| 18 | +The component ID of the variables is constructed as follows: |
| 19 | + |
| 20 | +.. code-block:: console |
| 21 | +
|
| 22 | + [ MFST_VAR, <id> ] |
| 23 | +
|
| 24 | +There is a fixed number of such components for a given platform. |
| 25 | +Their functionality and access privileges are defined by using ``<id>`` values from the following predefined ranges: |
| 26 | + |
| 27 | + * IDs from ``0`` to ``7`` are meant to hold persistently stored configuration data, which can be modified by OEM-controlled elements. |
| 28 | + They can be utilized to tune the installation and boot process. |
| 29 | + They are stored in two copies, protected by the digest, ensuring that only a valid value will be returned. |
| 30 | + If the system detects that it is impossible to synchronize those two copies, further updates of all NVM variables are blocked. |
| 31 | + |
| 32 | + .. warning:: |
| 33 | + Non-volatile variables are stored at the fixed location inside the memory. |
| 34 | + There are no mechanisms managing the NVM wearing, so the frequency of the variable updates should be managed by manifest designer. |
| 35 | + |
| 36 | + The non-volatile variables can be modified by Application, Radio Manifests, and by IPC clients running on Application and Radio Domains. |
| 37 | + |
| 38 | + * IDs from ``128`` to ``129`` are meant to hold runtime, volatile information, provided by the SDFW. |
| 39 | + Currently there are no functionalities assigned to those variables. |
| 40 | + |
| 41 | + The platform-controlled variables cannot be modified by Manifests, and IPC clients. |
| 42 | + |
| 43 | + * IDs from ``256`` to ``259`` are meant to hold runtime, volatile information, provided by OEM-controlled manifests. |
| 44 | + These variables can be used to pass the information about executed boot scenario (selected set of images boot in the "A/B" method) as well as allow for a minimal manifest execution tracing. |
| 45 | + |
| 46 | + The volatile variables can be modified by Application and Radio Manifests. |
| 47 | + IPC clients are not allowed to modify them. |
| 48 | + |
| 49 | +Configuration |
| 50 | +************* |
| 51 | + |
| 52 | +All configuration option values are defined by the SDFW. |
| 53 | +They are also available in read-only mode for all types of applications. |
| 54 | +All the APIs are serialized using the SSF framework. |
| 55 | + |
| 56 | +The following configuration options are defined: |
| 57 | + |
| 58 | +* :kconfig:option:`CONFIG_SUIT_MANIFEST_VARIABLES_NVM_BASE_ID` - Defines the first ID of manifest variables, that are stored in the non-volatile memory. |
| 59 | +* :kconfig:option:`CONFIG_SUIT_MANIFEST_VARIABLES_NVM_COUNT` - Defines the number of available manifest variables, that are stored in the non-volatile memory. |
| 60 | +* :kconfig:option:`CONFIG_SUIT_MANIFEST_VARIABLES_NVM_ACCESS_MASK` - Defines the access mask of manifest variables, that are stored in the non-volatile memory. |
| 61 | +* :kconfig:option:`CONFIG_SUIT_MANIFEST_VARIABLES_PLAT_VOLATILE_BASE_ID` - Defines the first ID of platform-controlled manifest variables, that are stored in the volatile memory. |
| 62 | +* :kconfig:option:`CONFIG_SUIT_MANIFEST_VARIABLES_PLAT_VOLATILE_COUNT` - Defines the number of available platform-controlled manifest variables, that are stored in the volatile memory. |
| 63 | +* :kconfig:option:`CONFIG_SUIT_MANIFEST_VARIABLES_PLAT_VOLATILE_ACCESS_MASK` - Defines the access mask of platform-controlled manifest variables, that are stored in the volatile memory. |
| 64 | +* :kconfig:option:`CONFIG_SUIT_MANIFEST_VARIABLES_MFST_VOLATILE_BASE_ID` - Defines the first ID of manifest variables, that are stored in the volatile memory. |
| 65 | +* :kconfig:option:`CONFIG_SUIT_MANIFEST_VARIABLES_MFST_VOLATILE_COUNT` - Defines the number of available manifest variables, that are stored in the volatile memory. |
| 66 | +* :kconfig:option:`CONFIG_SUIT_MANIFEST_VARIABLES_MFST_VOLATILE_ACCESS_MASK` - Defines the access mask of manifest variables, that are stored in the volatile memory. |
| 67 | + |
| 68 | +API documentation |
| 69 | +***************** |
| 70 | + |
| 71 | +| Header file: :file:`subsys/suit/manifest_variables/include/suit_manifest_variables.h` |
| 72 | +| Source files: :file:`subsys/suit/manifest_variables/src/suit_manifest_variables.c` |
0 commit comments