Skip to content

Commit e325e5c

Browse files
committed
applications: nrf_desktop: nrf54lm20dk: support USB 8k report rate
Added two nRF54LM20 DK configurations to the nRF Desktop application that improve the HID report rate performance over USB by executing application code from RAM. Due to this change, the application can now consistently maintain the 8000Hz report rate in the "release_ram_load" configuration variant. The second configuration variant called "ram_load" is used for debugging purposes. To execute code from RAM, the MCUboot has been configured for the RAM load mode. In this mode, the bootloader copies the newer application image from one of two RRAM slots into the RAM region and then it starts the application from RAM. To support RAM load mode of the MCUboot bootloader, devicetree (DTS) is used as a partitioning method. Currently, the default partitioning method for the nRF54LM20DK via the Partition Manager (PM) is not properly supported in the RAM load mode. Ref: NCSDK-35506 Signed-off-by: Aleksander Strzebonski <[email protected]> Signed-off-by: Kamil Piszczek <[email protected]>
1 parent 9ba0099 commit e325e5c

19 files changed

+721
-5
lines changed

applications/nrf_desktop/configuration/nrf54lm20dk_nrf54lm20a_cpuapp/app.overlay

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66

77
#include "app_common.dtsi"
88

9+
/* Application does not use cpuflpr core. Assign whole RRAM to cpuapp. */
10+
&cpuapp_rram {
11+
reg = < 0x0 DT_SIZE_K(2036) >;
12+
};
13+
914
/ {
1015
hid_dev_0: hid_dev_0 {
1116
compatible = "zephyr,hid-device";

applications/nrf_desktop/configuration/nrf54lm20dk_nrf54lm20a_cpuapp/app_common.dtsi

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,6 @@
44
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
55
*/
66

7-
/* Application does not use cpuflpr core. Assign whole RRAM to cpuapp. */
8-
&cpuapp_rram {
9-
reg = < 0x0 DT_SIZE_K(2036) >;
10-
};
11-
127
/ {
138
/* Disable pwmleds and redefine them to align configuration with CAF LEDs requirements. */
149
/delete-node/ pwmleds;

applications/nrf_desktop/configuration/nrf54lm20dk_nrf54lm20a_cpuapp/app_llvm.overlay

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66

77
#include "app_common.dtsi"
88

9+
/* Application does not use cpuflpr core. Assign whole RRAM to cpuapp. */
10+
&cpuapp_rram {
11+
reg = < 0x0 DT_SIZE_K(2036) >;
12+
};
13+
914
/ {
1015
hid_dev_0: hid_dev_0 {
1116
compatible = "zephyr,hid-device";
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* Copyright (c) 2025 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
*/
6+
7+
#include "app_common.dtsi"
8+
#include "memory_map_ram_load.dtsi"
9+
10+
/ {
11+
chosen {
12+
/* We need to point where we want to place the retained memory region that
13+
* is shared with the MCUboot bootloader image and contains the image metadata.
14+
*/
15+
zephyr,bootloader-info = &boot_info0;
16+
};
17+
18+
hid_dev_0: hid_dev_0 {
19+
compatible = "zephyr,hid-device";
20+
label = "HID0";
21+
protocol-code = "mouse";
22+
in-polling-period-us = <125>;
23+
in-report-size = <64>;
24+
};
25+
};

applications/nrf_desktop/configuration/nrf54lm20dk_nrf54lm20a_cpuapp/app_release.overlay

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66

77
#include "app_common.dtsi"
88

9+
/* Application does not use cpuflpr core. Assign whole RRAM to cpuapp. */
10+
&cpuapp_rram {
11+
reg = < 0x0 DT_SIZE_K(2036) >;
12+
};
13+
914
/ {
1015
hid_dev_0: hid_dev_0 {
1116
compatible = "zephyr,hid-device";
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* Copyright (c) 2025 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
*/
6+
7+
#include "app_common.dtsi"
8+
#include "memory_map_ram_load.dtsi"
9+
10+
/ {
11+
chosen {
12+
/* We need to point where we want to place the retained memory region that
13+
* is shared with the MCUboot bootloader image and contains the image metadata.
14+
*/
15+
zephyr,bootloader-info = &boot_info0;
16+
};
17+
18+
hid_dev_0: hid_dev_0 {
19+
compatible = "zephyr,hid-device";
20+
label = "HID0";
21+
protocol-code = "mouse";
22+
in-polling-period-us = <125>;
23+
in-report-size = <64>;
24+
};
25+
};
26+
27+
/* For nRF54L, watchdog status is disabled by default. Needs to be enabled in DTS overlay. */
28+
&wdt31 {
29+
status = "okay";
30+
};
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*
2+
* Copyright (c) 2025 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
*/
6+
7+
/* Application does not use cpuflpr core. Assign whole RRAM to cpuapp. */
8+
&cpuapp_rram {
9+
reg = < 0x0 DT_SIZE_K(2036) >;
10+
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright (c) 2025 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
*/
6+
7+
#include "../../memory_map_ram_load.dtsi"
8+
9+
/ {
10+
chosen {
11+
/* We need to point where we want to place MCUboot code. */
12+
zephyr,code-partition = &boot_partition;
13+
/* We need to point where we want to place MCUboot RAM region. */
14+
zephyr,sram = &cpuapp_sram_mcuboot_ram_region;
15+
/* We need to point where we want to place the retained memory region that
16+
* is shared with the application image and contains the image metadata.
17+
*/
18+
zephyr,bootloader-info = &boot_info0;
19+
};
20+
};
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*
2+
* Copyright (c) 2025 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
*/
6+
7+
/* Application does not use cpuflpr core. Assign whole RRAM to cpuapp. */
8+
&cpuapp_rram {
9+
reg = < 0x0 DT_SIZE_K(2036) >;
10+
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright (c) 2025 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
*/
6+
7+
#include "../../memory_map_ram_load.dtsi"
8+
9+
/ {
10+
chosen {
11+
/* We need to point where we want to place MCUboot code. */
12+
zephyr,code-partition = &boot_partition;
13+
/* We need to point where we want to place MCUboot RAM region. */
14+
zephyr,sram = &cpuapp_sram_mcuboot_ram_region;
15+
/* We need to point where we want to place the retained memory region that
16+
* is shared with the application image and contains the image metadata.
17+
*/
18+
zephyr,bootloader-info = &boot_info0;
19+
};
20+
};

0 commit comments

Comments
 (0)