Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
25a5354
ci: Use CI_LIB and test-nrf from v2.8-branch
jangalda-nsc Oct 2, 2024
3689086
dokcer: Bump nrfutil device to version 2.7.2
jangalda-nsc Oct 23, 2024
08c662a
doc: post-release doc update after 2.8 preview1
divipillai Oct 24, 2024
cfee57c
manifest: sdk-zephyr: Wi-Fi upmerge
krish2718 Oct 21, 2024
2ec5560
manifest: nrfxlib: Pull updated FW blobs
krish2718 Oct 21, 2024
b51db5d
samples: wifi: shell: Support enterprise mode build
rado17 Oct 9, 2024
536d573
samples: wifi: shell: Add enterprise mode build test
rado17 Oct 9, 2024
c0ca3a4
net: wifi_credentials: Add support for EAP-TLS configuration
rado17 Oct 16, 2024
1354b1d
net: wifi_mgmt_ext: Add support for EAP-TLS method
rado17 Oct 16, 2024
0fa0b84
samples: wifi: Add offloaded raw tx mode sample
kapbh Oct 8, 2024
058c21a
samples: wifi: shell: Add overlay for enterprise mode
rado17 Oct 18, 2024
e3aaaba
samples: wifi: Remove fixed buffer size configuration
krish2718 Oct 21, 2024
1b2e6f1
dts: bindings: Remove nRF70 bindings
krish2718 Oct 22, 2024
45100e3
net: lib: nrf70_fw_ext: Add Offloaded Raw TX support
krish2718 Oct 22, 2024
7790617
net: wifi_credentials: Fix commands mixup
krish2718 Oct 22, 2024
28043ed
doc: nrf: Create documentation for advanced Wi-Fi security modes.
rado17 Oct 18, 2024
5b1e75b
snippet: nrf70-wifi: Fix SoF with shell thread
krish2718 Oct 23, 2024
6011c0e
sysbuild: wif: Fix non-default modes configs
krish2718 Oct 23, 2024
2408c68
wifi_cred: Limit Enterprise credentials length
krish2718 Oct 24, 2024
40e10dc
samples: wifi: shell: Increase shell stack size
rado17 Oct 24, 2024
3f800ee
net: lib: wifi_mgmt_ext: Add entries for phase2 certs
rado17 Oct 24, 2024
d7eb5c5
samples: nrf_rpc: protocols_serialization: fix nfc snippet
alxelax Oct 24, 2024
3b38a41
samples: nrf_rpc: protocols_serialization: remove nrf54l pdk support
alxelax Oct 24, 2024
0a6f0a4
samples: openthread: fix csl period in THCI
maciejbaczmanski Oct 25, 2024
9038810
tests: benchmarks: power_consumption: Specify test methods.
nordic-babu Oct 25, 2024
524cc4c
doc: Updated 54H memory arch doc
FrancescoSer Oct 17, 2024
7b5d11d
samples: mpsl: timeslot: Fix build errors for 54L and 54H SoCs
ppryga-nordic Oct 25, 2024
6976acf
applications: nrf_desktop: Mark DVFS module as experimental
zycz Oct 25, 2024
46d0e5a
samples: wifi: sta: Fix EK(SPI) build
krish2718 Oct 24, 2024
f00620e
doc: add nfc rpc
alxelax Oct 25, 2024
f39190b
crypto: mutex: Fix boolean for dynamically allocated mutexes
frkv Oct 25, 2024
7c7ae95
samples: matter: Remove workaround after fixing nrf_security
ArekBalysNordic Oct 24, 2024
e5da8c6
cmake: add two new targets for SDP
magp-nordic Oct 18, 2024
450a303
appplications: sdp: gpio: add asm_check to flpr_egpio
magp-nordic Oct 24, 2024
a0e009b
samples: wifi: shell: Fix sheild prefix
krish2718 Oct 25, 2024
4d53172
snippets: nrf70-driver-verbose-debug: Fix configs
krish2718 Oct 25, 2024
79c32e4
openthread: add libraries based on commit ee86dc2
NordicBuilder Oct 25, 2024
81b9352
samples: cellular: nrf_cloud_rest_fota: add smp fota for nrf9160dk
jayteemo Oct 23, 2024
e3d6360
samples: Re-add support for nRF7002 and Thingy91x targets
simensrostad Oct 22, 2024
fe664a8
quarantine: Remove Thingy:91 and ATv2
simensrostad Oct 25, 2024
b9ac709
samples: net: download: Add nRF54L15 DK + nRF7002 support
jtguggedal Oct 23, 2024
152bb8d
samples: net: mqtt: Add nRF54L15 DK + nRF7002 support
jtguggedal Oct 23, 2024
64d9e5f
samples: net: https_client: Add nRF54L15 DK + nRF7002 support
jtguggedal Oct 23, 2024
02a92b3
samples: net: udp: Add nRF54L15 DK + nRF7002 support
jtguggedal Oct 23, 2024
39ae32d
samples: net: coap_client: Add nRF54L15 DK + nRF7002 support
jtguggedal Oct 23, 2024
6a64abb
samples: net: aws_iot: Add support for nRF54L15 DK + nRF7002
jtguggedal Oct 23, 2024
6033626
samples: mss: Fix Wi-Fi scan
glarsennordic Oct 26, 2024
57c20c1
samples: wifi: Increase stack sizes to accomodate latest Wi-Fi
krish2718 Oct 25, 2024
4183e73
lib: identity_key: CONFIG_IDENTITY_KEY no longer requires ASSERT
jonaias Oct 19, 2024
2240598
samples: wifi: Adjust k_heap size to accommodate hostap
krish2718 Oct 27, 2024
e1bb032
applications: nrf_desktop: Update way of setting APPLICATION_CONFIG_DIR
MarekPieta Oct 24, 2024
b2e9410
samples: fast_pair: locator_tag: Update setting APPLICATION_CONFIG_DIR
MarekPieta Oct 25, 2024
a12da0d
doc: add general ZMS info
annwoj Oct 24, 2024
8d4d8b1
doc: Update FWU with external memory docs
tomchy Oct 21, 2024
a0b731f
applications: nrf5340_audio: Use scan reponse for DFU name
alexsven Oct 24, 2024
89a160f
version: Update to 2.8.99
rlubos Oct 24, 2024
4437ca8
manifest: sdk-zephyr: Wi-Fi upmerge
krish2718 Oct 21, 2024
287a90d
manifest: nrfxlib: Pull updated FW blobs
krish2718 Oct 21, 2024
1391df2
suit: in-place updateable components
SylwesterKonczyk Oct 22, 2024
d65bf52
samples: protocols_serialization: server: use PSA for SMP
Damian-Nordic Oct 22, 2024
d02fa31
openthread: add libraries based on commit ee86dc2
NordicBuilder Oct 25, 2024
56cd803
manifest: Update sdk-zephyr revision (auto-manifest PR)
NordicBuilder Oct 27, 2024
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
1 change: 1 addition & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -514,6 +514,7 @@
/samples/wifi/softap/ @D-Triveni @krish2718
/samples/wifi/monitor/ @D-Triveni
/samples/wifi/promiscuous/ @D-Triveni
/samples/wifi/offloaded_raw_tx/ @kapbh @sachinthegreen
/samples/zigbee/ @nrfconnect/ncs-zigbee

/samples/app_event_manager/*.rst @nrfconnect/ncs-si-muffin-doc @nrfconnect/ncs-si-bluebagel-doc
Expand Down
2 changes: 1 addition & 1 deletion Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@Library("CI_LIB") _
@Library("CI_LIB@v2.8-branch") _

def pipeline = new ncs.sdk_nrf.Main()

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.8.0-preview1
2.8.99
4 changes: 4 additions & 0 deletions applications/asset_tracker_v2/Kconfig.sysbuild
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ config SECURE_BOOT_APPCORE
config WIFI_NRF70
default y if BOARD_THINGY91X_NRF9151_NS

choice WIFI_NRF70_OPER_MODES
default WIFI_NRF70_SCAN_ONLY if BOARD_THINGY91X_NRF9151_NS
endchoice

config PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY
default y if BOARD_NRF9151DK_NRF9151_NS || BOARD_NRF9161DK_NRF9161_NS
default y if BOARD_NRF9160DK_NRF9160_NS \
Expand Down
2 changes: 2 additions & 0 deletions applications/nrf5340_audio/sample.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,5 @@ tests:
extra_args: FILE_SUFFIX=release CONFIG_AUDIO_DEV=2 CONFIG_TRANSPORT_BIS=y
applications.nrf5340_audio.headset_unicast_sd_card:
extra_args: FILE_SUFFIX=release CONFIG_AUDIO_DEV=1 CONFIG_SD_CARD_PLAYBACK=y
applications.nrf5340_audio.headset_dfu:
extra_args: FILE_SUFFIX=release CONFIG_AUDIO_DEV=1 FILE_SUFFIX=fota
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,21 @@ LOG_MODULE_REGISTER(bt_mgmt_dfu, CONFIG_BT_MGMT_DFU_LOG_LEVEL);
#define DEVICE_NAME_DFU CONFIG_BT_DFU_DEVICE_NAME
#define DEVICE_NAME_DFU_LEN (sizeof(DEVICE_NAME_DFU) - 1)

/* Advertising data for SMP_SVR UUID */
static struct bt_le_adv_param adv_param;
static const struct bt_data ad_peer[] = {
BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
BT_DATA_BYTES(BT_DATA_UUID128_ALL, 0x84, 0xaa, 0x60, 0x74, 0x52, 0x8a, 0x8b, 0x86, 0xd3,
0x4c, 0xb7, 0x1d, 0x1d, 0xdc, 0x53, 0x8d),
};

/* Set aside space for name to be in scan response */
static struct bt_data sd_peer[1];

static void smp_adv(void)
{
int ret;

ret = bt_le_adv_start(&adv_param, ad_peer, ARRAY_SIZE(ad_peer), NULL, 0);
ret = bt_le_adv_start(BT_LE_ADV_CONN, ad_peer, ARRAY_SIZE(ad_peer), sd_peer,
ARRAY_SIZE(sd_peer));
if (ret) {
LOG_ERR("SMP_SVR Advertising failed to start (ret %d)", ret);
return;
Expand Down Expand Up @@ -63,34 +65,53 @@ static struct bt_conn_cb dfu_conn_callbacks = {

static void dfu_set_bt_name(void)
{
char name[CONFIG_BT_DEVICE_NAME_MAX] = {0};
int ret;
static char name[CONFIG_BT_DEVICE_NAME_MAX];

strlcpy(name, CONFIG_BT_DEVICE_NAME, CONFIG_BT_DEVICE_NAME_MAX);
strlcat(name, "_", CONFIG_BT_DEVICE_NAME_MAX);
ret = strlcat(name, "_", CONFIG_BT_DEVICE_NAME_MAX);
if (ret >= CONFIG_BT_DEVICE_NAME_MAX) {
LOG_ERR("Failed to set full BT name, will truncate");
}

#if (CONFIG_AUDIO_DEV == GATEWAY)
strlcat(name, GW_TAG, CONFIG_BT_DEVICE_NAME_MAX);
ret = strlcat(name, GW_TAG, CONFIG_BT_DEVICE_NAME_MAX);
if (ret >= CONFIG_BT_DEVICE_NAME_MAX) {
LOG_ERR("Failed to set full BT name, will truncate");
}
#else
enum audio_channel channel;

channel_assignment_get(&channel);

if (channel == AUDIO_CH_L) {
strlcat(name, CH_L_TAG, CONFIG_BT_DEVICE_NAME_MAX);
ret = strlcat(name, CH_L_TAG, CONFIG_BT_DEVICE_NAME_MAX);
if (ret >= CONFIG_BT_DEVICE_NAME_MAX) {
LOG_ERR("Failed to set full BT name, will truncate");
}
} else {
strlcat(name, CH_R_TAG, CONFIG_BT_DEVICE_NAME_MAX);
ret = strlcat(name, CH_R_TAG, CONFIG_BT_DEVICE_NAME_MAX);
if (ret >= CONFIG_BT_DEVICE_NAME_MAX) {
LOG_ERR("Failed to set full BT name, will truncate");
}
}

#endif
strlcat(name, "_DFU", CONFIG_BT_DEVICE_NAME_MAX);
bt_set_name(name);
ret = strlcat(name, "_DFU", CONFIG_BT_DEVICE_NAME_MAX);
if (ret >= CONFIG_BT_DEVICE_NAME_MAX) {
LOG_ERR("Failed to set full BT name, will truncate");
}

sd_peer[0].type = BT_DATA_NAME_COMPLETE;
sd_peer[0].data_len = strlen(name);
sd_peer[0].data = name;
}

void bt_mgmt_dfu_start(void)
{
LOG_INF("Entering SMP server mode");

bt_conn_cb_register(&dfu_conn_callbacks);
adv_param = *BT_LE_ADV_CONN_NAME;
dfu_set_bt_name();
smp_adv();

Expand Down
3 changes: 3 additions & 0 deletions applications/nrf_desktop/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ cmake_minimum_required(VERSION 3.20.0)

################################################################################

# The application uses the configuration/<board> scheme for configuration files.
set(APPLICATION_CONFIG_DIR "${CMAKE_CURRENT_LIST_DIR}/configuration/\${NORMALIZED_BOARD_TARGET}")

find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project("nRF52 Desktop"
VERSION 0.1)
Expand Down
3 changes: 2 additions & 1 deletion applications/nrf_desktop/src/modules/Kconfig.dvfs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@
#

menuconfig DESKTOP_DVFS
bool "DVFS module"
bool "DVFS module [EXPERIMENTAL]"
depends on SOC_NRF54H20_CPUAPP
select EXPERIMENTAL
select NRFS_DVFS_SERVICE_ENABLED
select CLOCK_CONTROL
select CLOCK_CONTROL_NRF2
Expand Down
8 changes: 3 additions & 5 deletions applications/nrf_desktop/sysbuild/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,9 @@
# The application uses the configuration/<board> scheme for configuration files.
set(SB_APPLICATION_CONFIG_DIR "${CMAKE_CURRENT_LIST_DIR}/../configuration/\${NORMALIZED_BOARD_TARGET}")

# Redirect images' configuration directories to use those in the board configuration directory
set(nrf_desktop_APPLICATION_CONFIG_DIR
"${CMAKE_CURRENT_LIST_DIR}/../configuration/\${NORMALIZED_BOARD_TARGET}"
CACHE INTERNAL "Application configuration dir controlled by sysbuild"
)
# The main application configuration directory is defined by the main application's
# `CMakeLists.txt` file (this allows to avoid dependency on main application name).
# Redirect other images' configuration directories to redefine configuration.
set(mcuboot_APPLICATION_CONFIG_DIR
"${CMAKE_CURRENT_LIST_DIR}/../configuration/\${NORMALIZED_BOARD_TARGET}/images/mcuboot"
CACHE INTERNAL "Application configuration dir controlled by sysbuild"
Expand Down
4 changes: 4 additions & 0 deletions applications/sdp/gpio/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,13 @@ find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(emulated_gpio)

sdp_assembly_generate("${CMAKE_SOURCE_DIR}/src/hrt/hrt.c")
sdp_assembly_check("${CMAKE_SOURCE_DIR}/src/hrt/hrt.c")
sdp_assembly_prepare_install("${CMAKE_SOURCE_DIR}/src/hrt/hrt.c")

target_sources(app PRIVATE src/main.c)
target_sources(app PRIVATE src/hrt/hrt.s)
target_sources_ifdef(CONFIG_GPIO_NRFE_EGPIO_BACKEND_ICMSG app PRIVATE src/backend/backend_icmsg.c)
target_sources_ifdef(CONFIG_GPIO_NRFE_EGPIO_BACKEND_ICBMSG app PRIVATE src/backend/backend_icmsg.c)
target_sources_ifdef(CONFIG_GPIO_NRFE_EGPIO_BACKEND_MBOX app PRIVATE src/backend/backend_mbox.c)

add_dependencies(app asm_check)
38 changes: 38 additions & 0 deletions cmake/sdp.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,41 @@ function(sdp_assembly_generate hrt_srcs)
add_dependencies(asm_gen syscall_list_h_target)

endfunction()

function(sdp_assembly_check hrt_srcs)
set(asm_check_msg "Checking if ASM files for Hard Real Time have changed.")

if(TARGET asm_check)
message(FATAL_ERROR "sdp_assembly_check() already called, please note that
sdp_assembly_check() must be called only once with a list of all source files."
)
endif()

string(REPLACE ";" "$<SEMICOLON>" hrt_srcs_semi "${hrt_srcs}")

add_custom_target(asm_check
COMMAND ${CMAKE_COMMAND} -D hrt_srcs="${hrt_srcs_semi}" -P ${ZEPHYR_NRF_MODULE_DIR}/cmake/sdp_asm_check.cmake
COMMENT ${asm_check_msg}
)

add_dependencies(asm_check asm_gen)

endfunction()

function(sdp_assembly_prepare_install hrt_srcs)
set(asm_install_msg "Updating ASM files for Hard Real Time.")

if(TARGET asm_install)
message(FATAL_ERROR "sdp_assembly_prepare_install() already called, please note that
sdp_assembly_prepare_install() must be called only once with a list of all source files."
)
endif()

string(REPLACE ";" "$<SEMICOLON>" hrt_srcs_semi "${hrt_srcs}")

add_custom_target(asm_install
COMMAND ${CMAKE_COMMAND} -D hrt_srcs="${hrt_srcs_semi}" -P ${ZEPHYR_NRF_MODULE_DIR}/cmake/sdp_asm_install.cmake
COMMENT ${asm_install_msg}
)

endfunction()
30 changes: 30 additions & 0 deletions cmake/sdp_asm_check.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#
# Copyright (c) 2024 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#

function(asm_check)

foreach(hrt_src ${hrt_srcs})
get_filename_component(asm_filename ${hrt_src} NAME_WE) # filename without extension
get_filename_component(src_dir ${hrt_src} DIRECTORY)

execute_process(COMMAND ${CMAKE_COMMAND} -E compare_files --ignore-eol
${src_dir}/${asm_filename}.s ${asm_filename}-temp.s
RESULT_VARIABLE compare_result)

if( compare_result EQUAL 0)
message("File ${asm_filename}.s has not changed.")
elseif( compare_result EQUAL 1)
message(WARNING "${asm_filename}.s ASM file content has changed.\
If you want to include the new ASM in build, \
please run `ninja asm_install` in FLPR build directory and build again")
else()
message("Something went wrong when comparing ${asm_filename}.s and ${asm_filename}-temp.s")
endif()
endforeach()

endfunction(asm_check)

asm_check()
25 changes: 25 additions & 0 deletions cmake/sdp_asm_install.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#
# Copyright (c) 2024 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#

function(asm_install)

foreach(hrt_src ${hrt_srcs})
get_filename_component(asm_filename ${hrt_src} NAME_WE) # filename without extension
get_filename_component(src_dir ${hrt_src} DIRECTORY)

file(RENAME ${asm_filename}-temp.s ${src_dir}/${asm_filename}.s RESULT rename_result)

if (rename_result EQUAL 0)
message("Updated ${asm_filename}.s ASM file.")
else()
message(WARNING "${asm_filename}.s cannot be updated, new ASM does not exist. Please run ninja asm_gen to create one.")
endif()

endforeach()

endfunction(asm_install)

asm_install()
2 changes: 2 additions & 0 deletions cmake/sysbuild/nrf700x.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ function(setup_nrf700x_xip_data)
set(NRF70_PATCH ${NRF70_FW_BINS}/radio_test/nrf70.bin)
elseif(SB_CONFIG_WIFI_NRF70_SCAN_ONLY)
set(NRF70_PATCH ${NRF70_FW_BINS}/scan_only/nrf70.bin)
elseif(SB_CONFIG_WIFI_NRF70_OFFLOADED_RAW_TX)
set(NRF70_PATCH ${NRF70_FW_BINS}/offloaded_raw_tx/nrf70.bin)
elseif(SB_CONFIG_WIFI_NRF70_SYSTEM_WITH_RAW_MODES)
set(NRF70_PATCH ${NRF70_FW_BINS}/system_with_raw/nrf70.bin)
else()
Expand Down
1 change: 1 addition & 0 deletions doc/nrf/app_dev/device_guides/nrf54l/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ Ensure to check the revision of your nRF54L15 device to see if it is supported:
:caption: Subpages:

features
zms
cryptography
testing_dfu
snippets
78 changes: 78 additions & 0 deletions doc/nrf/app_dev/device_guides/nrf54l/zms.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
.. _memory_storage:

Enabling Zephyr Memory Storage
##############################

.. contents::
:local:
:depth: 2

For nRF54L Series, you should use the :ref:`Zephyr Memory Storage (ZMS) <zephyr:zms_api>`.
ZMS utilizes a flexible data management system that reduces write and erase cycles, extending the lifespan of non-volatile memory.

.. note::

If you are using the :ref:`Non-Volatile Storage (NVS) <zephyr:nvs_api>`, ensure to switch to the ZMS solution.

Enabling the ZMS module
***********************

You can enable the ZMS module for your application in two ways - directly through ZMS or through the :ref:`Settings subsystem <zephyr:settings_api>`.
Additionally, you can optimize the application performance using caching mechanism:

.. tabs::

.. group-tab:: Using storage directly through ZMS

1. Enable the :kconfig:option:`CONFIG_ZMS` Kconfig option in your project's configuration file.
#. Optionally, enable the lookup cache to increase the application performance:

a. Enable the :kconfig:option:`CONFIG_ZMS_LOOKUP_CACHE` Kconfig option.
#. Set the lookup cache size in :kconfig:option:`CONFIG_ZMS_LOOKUP_CACHE_SIZE` depending on your application needs.

.. group-tab:: Using storage through Settings subsystem

1. Enable the :kconfig:option:`CONFIG_ZMS` Kconfig option in your project's configuration file.
#. Enable ZMS within the Settings subsystem with the :kconfig:option:`CONFIG_SETTINGS_ZMS` Kconfig option.
#. Optionally, enable the lookup cache to increase the application performance:

a. Enable the :kconfig:option:`CONFIG_ZMS_LOOKUP_CACHE` Kconfig option.
#. Set the lookup cache size in :kconfig:option:`CONFIG_ZMS_LOOKUP_CACHE_SIZE` depending on your application needs.
#. Ensure the lookup cache is configured to support the Setting subsystem by enabling the :kconfig:option:`CONFIG_ZMS_LOOKUP_CACHE_FOR_SETTINGS` Kconfig option.

#. To further enhance the performance, enable the :kconfig:option:`CONFIG_SETTINGS_ZMS_NAME_CACHE` Kconfig option, and configure its size with :kconfig:option:`CONFIG_SETTINGS_ZMS_NAME_CACHE_SIZE` according to your application needs.

Optimizing ZMS in your application
**********************************

When integrating ZMS through the Settings subsystem in your application, you might need to optimize its performance.
The following sections include the best practices to enhance ZMS performance.

Sector size and count
=====================

To ensure optimal performance from ZMS, consider the following:

* Storage partition sizing - The total storage partition size and the sector size should be carefully dimensioned to optimize ZMS performance.
For detailed instructions on managing free space effectively within ZMS, refer to the :ref:`ZMS <zephyr:zms_api>` documentation.
You should choose a storage partition capable of holding double the size of the key-value pairs expected to be written.

* Entry management - In subsystems like Settings, all path-value pairs are split into two ZMS entries (ATEs).
You should include the extra header needed by these entries in your total storage space calculations.

* Optimizing data storage - Storing small data directly in the ZMS entry headers can significantly enhance performance.
For instance, in the Settings subsystem, using a path name of 8 bytes or less can speed up read and write operations.

Dimensioning cache
==================

Proper cache sizing is critical for maintaining high performance and efficient memory usage in ZMS:

* Cache size determination - Ideally, the cache size should match the number of different entries that could be written to the storage.
This ensures efficient data retrieval and storage operations.

* Memory considerations - Each cache entry consumes an additional 8 bytes of RAM.
Therefore, you should choose the cache size to balance performance with memory usage effectively.

* Settings subsystem specifics - When using ZMS through the Settings subsystem, remember that each entry translates into two ZMS entries.
Consequently, the optimal cache size should be twice the number of Settings entries to accommodate this division effectively.
2 changes: 2 additions & 0 deletions doc/nrf/app_dev/device_guides/nrf70/features.rst
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ The nRF70 Series devices also support the following functionalities:

* :ref:`ug_nrf70_developing_raw_ieee_80211_packet_transmission`: Allows the injection of raw IEEE 802.11 frames in Station and Monitor modes.
* :ref:`Promiscuous reception <ug_nrf70_developing_promiscuous_packet_reception>`: Allows the reception of IEEE 802.11 packets from a connected BSSID when operating in Station mode.
* :ref:`Offloaded raw transmission <ug_nrf70_developing_offloaded_raw_tx>`: Allows the offloading of raw IEEE 802.11 frame transmission to the nRF Wi-Fi driver.
* :ref:`Wi-Fi advanced security modes <ug_nrf70_wifi_advanced_security_modes>`: Allows the use of advanced security modes, certificate-based Wi-Fi security, and the Platform Security Architecture (PSA) security framework.

Peer-to-peer support in the form of Wi-Fi Direct® will be available in the future.

Expand Down
1 change: 1 addition & 0 deletions doc/nrf/app_dev/device_guides/nrf70/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -130,3 +130,4 @@ The following subpages cover topics related to developing applications with the
power_profiling
nrf7002ek_dev_guide
nrf7002eb_dev_guide
wifi_advanced_security_modes
Loading