Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions doc/nrf/protocols/matter/end_product/security.rst
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@ An important setting, that depends on the hardware platform in use, is the way o
The recommended and the most secure option is to use :ref:`lib_hw_unique_key` (HUK) library.
HUK support is automatically enabled with the :kconfig:option:`CONFIG_TRUSTED_STORAGE_BACKEND_AEAD_KEY_DERIVE_FROM_HUK` Kconfig option for compatible configurations.

The HUK library is supported for the nRF52840, nRF5340, and nRF54L15 platforms, but for :ref:`matter_samples` in the |NCS|, it is only enabled for the nRF5340 and NRF54L15 platforms:
The HUK library is supported for the nRF52840, nRF5340, and nRF54L platforms, but for :ref:`matter_samples` in the |NCS|, it is only enabled for the nRF5340 and nRF54L platforms:

* For the nRF5340 and nRF54L15 platforms, the HUK is generated at first boot and stored in the Key Management Unit (KMU).
* For the nRF5340, nRF54L platforms, the HUK is generated at first boot and stored in the Key Management Unit (KMU).
No changes to the existing partition layout are needed for products in the field.
* For the nRF54L15 NS platform, the HUK generation and management is handled by the Trusted Firmware-M (TF-M) library.
* For the nRF52840 platform, AEAD keys are derived with a SHA-256 hash (:kconfig:option:`CONFIG_TRUSTED_STORAGE_BACKEND_AEAD_KEY_HASH_UID`).
Expand Down Expand Up @@ -143,6 +143,13 @@ This is a reference configuration that can be modified in the production firmwar
- CRACEN
- Yes
- Trusted Firmware-M (TF-M) + Key Management Unit (KMU)
* - nRF54L10 SoC
- Thread
- PSA Crypto API
- CRACEN [2]_
- Yes
- Trusted Storage library + Hardware Unique Key (HUK) + Key Management Unit (KMU)


.. [1] The CryptoCell backend is used in parallel with the Oberon backend.
By default, the CryptoCell backend is used only for Random Number Generation (RNG) and the AEAD key derivation driver.
Expand Down Expand Up @@ -193,6 +200,11 @@ See the following table to learn about the default secure storage backends for t
- Key Management Unit (KMU)
- | Key Management Unit (KMU),
| Trusted Firmware-M Storage (TF-M)
* - nRF54L10 SoC
- Key Management Unit (KMU)
- | Key Management Unit (KMU),
| Trusted Storage library + Hardware Unique Key (Zephyr Settings),
| Trusted Storage library + SHA-256 hash (Zephyr Settings)

If you migrate the DAC private key to storage based on Zephyr Settings storage, you cannot use the :kconfig:option:`CONFIG_CHIP_FACTORY_RESET_ERASE_SETTINGS` Kconfig option.
This is because the factory reset feature will erase the secure storage, including the DAC private key, which has been removed from the factory data.
Expand Down
57 changes: 46 additions & 11 deletions doc/nrf/protocols/matter/getting_started/hw_requirements.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Currently the following SoCs from Nordic Semiconductor are supported for use wit
* :ref:`nRF5340 + nRF7002 <programming_board_names>` (Matter over Thread and Matter over Wi-Fi)
* :ref:`nRF52840 <programming_board_names>` (Matter over Thread)
* :ref:`nRF54L15 <programming_board_names>` (Matter over Thread)
* :ref:`nRF54L10 <programming_board_names>` (Matter over Thread)

Front-End Modules
=================
Expand All @@ -32,9 +33,13 @@ For more information about the FEM support in the |NCS|, see :ref:`ug_radio_fem`
External flash
**************

For the currently supported SoCs, you must use an external memory with at least 1 MB of flash for nRF52840 and 1.5MB for nRF5340.
For the currently supported SoCs, you must use an external memory with at least 1 MB of flash for nRF52840 and nRF54L10, and 1.5 MB for nRF5340 and nRF54L15.
This is required to perform the DFU operation.

.. note::
The nRF54L15 supports DFU with image compression, which may eliminate the need for external flash.
For more details, see :ref:`mcuboot_image_compression`.

The development kits for the supported SoCs from Nordic Semiconductor are supplied with the MX25R64 type of external flash that meets these memory requirements.
However, it is possible to configure the SoCs with different QSPI or SPI memory if it is supported by Zephyr.
For this purpose, check the reference design for Nordic DKs for information about how to connect the external memory with SoC, specifically whether the pins are designed for the QSPI or the high-speed SPIM operations.
Expand Down Expand Up @@ -214,6 +219,7 @@ Values are provided in kilobytes (KB).
.. tab:: nRF54L15 DK

The following table lists memory requirements for samples running on the :ref:`nRF54L15 DK <programming_board_names>` (:ref:`nrf54l15dk/nrf54l15/cpuapp <zephyr:nrf54l15dk_nrf54l15>`).
You can use the table as a reference for the :ref:`nRF54L15 DK (emulating nRF54L10) <programming_board_names>` (:ref:`nrf54l15dk/nrf54l10/cpuapp <zephyr:nrf54l15dk_nrf54l15>`).

+----------------------------------------------------------------------+---------------+-------------------+----------------+------------+-------------+---------------------------------+
| Sample | MCUboot ROM | Application ROM | Factory data | Settings | Total ROM | Total RAM (incl. static HEAP) |
Expand Down Expand Up @@ -645,15 +651,15 @@ For more information about configuration of memory layouts in Matter, see :ref:`
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| Partition | Offset | Size | Partition elements | Element offset | Element size |
+=========================================+=====================+===================+=====================+=================+===================+
| Bootloader (mcuboot) | 0kB (0x0) | 48kB (0xC000) |- |- |- |
| Bootloader (mcuboot) | 0kB (0x0) | 52kB (0xD000) |- |- |- |
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| Application (mcuboot_primary/app) | 28kB (0x7000) | 960kB (0xf0000) | mcuboot_pad | 48kB (0xC000) | 2048B (0x800) |
| Application (mcuboot_primary/app) | 52kB (0xD000) | 1428kB (0x165000) | mcuboot_pad | 52kB (0xD000) | 2048B (0x800) |
| | | +---------------------+-----------------+-------------------+
| | | | mcuboot_primary_app | 50kB (0xc800) | 1438kB (0xefe00) |
| | | | mcuboot_primary_app | 54kB (0xD800) | 1426kB (0x164800) |
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| Factory data (factory_data) | 1488kB (0x174000) | 4kB (0x1000) |- |- |- |
| Factory data (factory_data) | 1480kB (0x172000) | 4kB (0x1000) |- |- |- |
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| Non-volatile storage (settings_storage) | 1492kB (0x175000) | 32kB (0x8000) |- |- |- |
| Non-volatile storage (settings_storage) | 1484kB (0x173000) | 40kB (0xA000) |- |- |- |
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+

Application core SRAM primary (size: 0x40000 = 256kB)
Expand All @@ -674,17 +680,17 @@ For more information about configuration of memory layouts in Matter, see :ref:`
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| Partition | Offset | Size | Partition elements | Element offset | Element size |
+=========================================+=====================+===================+=====================+=================+===================+
| Bootloader (mcuboot) | 0kB (0x0) | 48kB (0xC000) |- |- |- |
| Bootloader (mcuboot) | 0kB (0x0) | 52kB (0xD000) |- |- |- |
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| Secure part (tfm_secure) | 48kB (0xc000) | 128kB (0x20000) | mcuboot_pad | 48kB (0xc000) | 2k (0x800) |
| Secure part (tfm_secure) | 52kB (0xD000) | 128kB (0x20000) | mcuboot_pad | 52kB (0xD000) | 2k (0x800) |
| | | +---------------------+-----------------+-------------------+
| | | | tfm | 50kB (0xc800) | 126kB (0x1f800) |
| | | | tfm | 54kB (0xD800) | 126kB (0x1F800) |
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| Non-Secure part (tfm_nonsecure) | 176kB (0x2C000) | 1272kB (0x13E000) | app | 176kB (0x2C000) | 1272kB (0x13E000) |
| Non-Secure part (tfm_nonsecure) | 180kB (0x2D000) | 1268kB (0x13D000) | app |180kB (0x2D000) | 1268kB (0x13D000) |
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| Factory data (factory_data) | 1448kB (0x16A000) | 4kB (0x1000) |- |- |- |
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| Non-volatile storage (settings_storage) | 1452kB (0x16B000) | 40kB (0xa000) |- |- |- |
| Non-volatile storage (settings_storage) | 1452kB (0x16B000) | 40kB (0xA000) |- |- |- |
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| TFM storage (tfm_storage) | 1492kB (0x175000) | 32kB (0x8000) | tfm_its | 8kB (0x175000) | 8kB (0x2000) |
| | | +---------------------+-----------------+-------------------+
Expand All @@ -704,6 +710,35 @@ For more information about configuration of memory layouts in Matter, see :ref:`
| Non-Secure Static RAM (sram_nonsecure) | 256kB (0xF000) | 196kB (0x31000) |- |- |- |
+-----------------------------------------------+---------------------+-------------------+---------------------+-----------------+-----------------+

.. tab:: nRF54L10 emulation on nRF54L15 DK

The following memory map is valid for Matter applications running on the :ref:`nRF54L15 DK (emulating nRF54L10) <programming_board_names>` (:ref:`nrf54l15dk/nrf54l10/cpuapp <zephyr:nrf54l15dk_nrf54l15>`).

Application core flash (size: 0xFF800 = 1022kB)

+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| Partition | Offset | Size | Partition elements | Element offset | Element size |
+=========================================+=====================+===================+=====================+=================+===================+
| Bootloader (mcuboot) | 0kB (0x0) | 52kB (0xD000) |- |- |- |
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| Application (mcuboot_primary/app) | 52kB (0xD000) | 926kB (0xE7800) | mcuboot_pad | 52kB (0xD000) | 2048B (0x800) |
| | | +---------------------+-----------------+-------------------+
| | | | mcuboot_primary_app | 54kB (0xD800) | 924kB (0xE7000) |
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| Factory data (factory_data) | 978kB (0xF4800) | 4kB (0x1000) |- |- |- |
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+
| Non-volatile storage (settings_storage) | 982kB (0xF5800) | 40kB (0xA000) |- |- |- |
+-----------------------------------------+---------------------+-------------------+---------------------+-----------------+-------------------+

Application core SRAM primary (size: 0x30000 = 192kB)
SRAM is located at the address ``0x20000000`` in the memory address space of the application.

+-----------------------------------------------+---------------------+-------------------+---------------------+-----------------+-----------------+
| Partition | Offset | Size | Partition elements | Element offset | Element size |
+===============================================+=====================+===================+=====================+=================+=================+
| Static RAM (sram_primary) | 0kB (0x0) | 192kB (0x30000) |- |- |- |
+-----------------------------------------------+---------------------+-------------------+---------------------+-----------------+-----------------+

..

You can generate :ref:`Partition Manager's ASCII representation <pm_partition_reports>` of these tables by running the following command for your respective *board_target*:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ The maximum value of 20 dBm is only recommended for devices that are using :ref:
| nrf21540dk | -40 to +20 (:ref:`more information <ug_matter_gs_transmission_power_fem>`) |
+--------------------------+-----------------------------------------------------------------------------+
| nrf54l15dk_nrf54l15 | -8 to +8 |
| nrf54l15dk_nrf54l10 | |
+--------------------------+-----------------------------------------------------------------------------+

You can provide the desired value also as a CMake argument when building the sample.
Expand Down
6 changes: 3 additions & 3 deletions doc/nrf/protocols/thread/overview/architectures.rst
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ This platform design is suitable for the following development kits:

.. table-from-rows:: /includes/sample_board_rows.txt
:header: heading
:rows: nrf52840dk_nrf52840, nrf5340dk_nrf5340_cpuapp, nrf54l15dk_nrf54l15_cpuapp_and_cpuapp_ns, nrf21540dk_nrf52840
:rows: nrf52840dk_nrf52840, nrf5340dk_nrf5340_cpuapp, nrf54l15dk_nrf54l15_cpuapp_and_cpuapp_ns, nrf54l15dk_nrf54l10_cpuapp, nrf21540dk_nrf52840

.. _thread_architectures_designs_soc_designs_multiprotocol:

Expand Down Expand Up @@ -110,7 +110,7 @@ This platform design is suitable for the following development kits:

.. table-from-rows:: /includes/sample_board_rows.txt
:header: heading
:rows: nrf52840dk_nrf52840, nrf5340dk_nrf5340_cpuapp, nrf54l15dk_nrf54l15_cpuapp_and_cpuapp_ns
:rows: nrf52840dk_nrf52840, nrf5340dk_nrf5340_cpuapp, nrf54l15dk_nrf54l15_cpuapp_and_cpuapp_ns, nrf54l15dk_nrf54l10_cpuapp

.. _thread_architectures_designs_cp:

Expand Down Expand Up @@ -190,7 +190,7 @@ This platform design is suitable for the following development kits:

.. table-from-rows:: /includes/sample_board_rows.txt
:header: heading
:rows: nrf52833dk_nrf52833, nrf52840dk_nrf52840, nrf54l15dk_nrf54l15_cpuapp_and_cpuapp_ns, nrf21540dk_nrf52840
:rows: nrf52833dk_nrf52833, nrf52840dk_nrf52840, nrf54l15dk_nrf54l15_cpuapp_and_cpuapp_ns, nrf54l15dk_nrf54l05_cpuapp, nrf21540dk_nrf52840

.. _thread_architectures_designs_cp_uart:

Expand Down
8 changes: 8 additions & 0 deletions samples/matter/smoke_co_alarm/Kconfig.sysbuild
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,14 @@ config DFU_MULTI_IMAGE_PACKAGE_NET
default y

endif # SOC_SERIES_NRF53X

if BOARD_NRF54L15DK

# Disable checking the external drivers for nRF54L15 DKs.
config PM_OVERRIDE_EXTERNAL_DRIVER_CHECK
default y

endif # BOARD_NRF54L15DK
endif # BOOTLOADER_MCUBOOT

#### Enable generating factory data
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#
# Copyright (c) 2024 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#

# Multirole is the only currently supported role by SoftDevice.
CONFIG_BT_LL_SOFTDEVICE_MULTIROLE=y

# nRF54L15 requires bigger stack sizes than nRF52/nRF53 families
CONFIG_CHIP_MALLOC_SYS_HEAP_SIZE=10240
CONFIG_MPSL_WORK_STACK_SIZE=2048

# Set the ZMS sector count to match the settings partition size that is 40 kB for this application.
CONFIG_SETTINGS_ZMS_SECTOR_COUNT=10
# Workaround required as Zephyr L2 implies usage of NVS backend for settings.
# It should be removed once the proper fix will be applied in Zephyr.
CONFIG_NVS=n

# Low Power mode
CONFIG_POWEROFF=y

# Disabling of unused RAM blocks to reduce power consumption is not yet available for nRF54L10 SoC
CONFIG_RAM_POWER_DOWN_LIBRARY=n
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
* Copyright (c) 2024 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/


/ {
chosen {
nordic,pm-ext-flash = &mx25r64;
};

aliases {
// Use watchdog wdt31 as the application watchdog
watchdog0 = &wdt31;
};
};

// restore full RRAM and SRAM space - by default some parts are dedicated to FLRP
&cpuapp_rram {
reg = <0x0 DT_SIZE_K(1022)>;
};

&cpuapp_sram {
reg = <0x20000000 DT_SIZE_K(192)>;
ranges = <0x0 0x20000000 DT_SIZE_K(192)>;
};

// TODO: re-enable HWFC once it's fixed
&uart20 {
/delete-property/ hw-flow-control;
};

&mx25r64 {
status = "okay";
};

&wdt31 {
status = "okay";
};
Loading
Loading