Skip to content

Commit e1083b6

Browse files
committed
applications: nrf_desktop: nrf54h20: migrate to ironside se
Updated the nrf54h20dk/nrf54h20/cpuapp and nrf54h20dk/nrf54h20/cpurad board target configurations in the nRF Desktop application to align them with the new nRF54H20 SW architecture that is based on the IronSide SE. Added the MCUboot bootloader configuration and replaced the default nRF54H20 partition map with the custom application-optimized memory map. The updated configuration is the first step towards the complete feature migration. The following features are disabled and not yet supported: - MCUmgr DFU with the Bluetooth transport - Config Channel DFU with both the USB and Bluetooth transports - DVFS Ref: NCSDK-34151 Signed-off-by: Kamil Piszczek <Kamil.Piszczek@nordicsemi.no>
1 parent 2e9e190 commit e1083b6

File tree

20 files changed

+378
-110
lines changed

20 files changed

+378
-110
lines changed

applications/nrf_desktop/configuration/nrf54h20dk_nrf54h20_cpuapp/app_common.dtsi

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
/*
2-
* Copyright (c) 2024 Nordic Semiconductor ASA
2+
* Copyright (c) 2024-2025 Nordic Semiconductor ASA
33
*
44
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
55
*/
66

7+
#include "memory_map.dtsi"
8+
79
/ {
810
/* Redefine leds to fit CAF requirements. */
911
/delete-node/ leds;
@@ -51,25 +53,25 @@
5153
label = "Green LED 3";
5254
};
5355
};
54-
55-
aliases {
56-
nrfdesktop-dvfs-clock = &cpuapp_hsfll;
57-
};
5856
};
5957

60-
&cpusec_cpuapp_ipc {
61-
status = "okay";
58+
/* Define the necessary aliases for the MCUboot slots that will be used by the DFU transports.
59+
* Due to the build system limitation, the allowed size of the application image (configured by
60+
* the code partition DTS node) is incorrectly increased by the size allocated for the radio image.
61+
*/
62+
slot0_partition: &cpuapp_slot0_partition {
63+
label = "image-0";
6264
};
6365

64-
&cpusec_bellboard {
65-
status = "okay";
66+
slot1_partition: &cpuapp_slot1_partition {
67+
label = "image-1";
6668
};
6769

68-
/* Shrink ppr partition as ppr core is not used and extend app core code partition. */
69-
&cpuppr_code_partition {
70-
reg = < 0xf8000 DT_SIZE_K(32) >;
70+
/* Remove the undefined property value from the disabled VPR cores to prevent build errors. */
71+
&cpuflpr_vpr {
72+
/delete-property/ source-memory;
7173
};
7274

73-
&cpuapp_slot0_partition {
74-
reg = < 0xa6000 DT_SIZE_K(328) >;
75+
&cpuppr_vpr {
76+
/delete-property/ source-memory;
7577
};
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Copyright (c) 2025 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
*/
6+
7+
#include "../../memory_map.dtsi"
8+
9+
/* The nRF54H20 DK defines memory map using DTS.
10+
* Assign the bootloader partition to the MCUboot image.
11+
*/
12+
/ {
13+
chosen {
14+
zephyr,code-partition = &cpuapp_boot_partition;
15+
};
16+
};
17+
18+
/* Define the necessary aliases for the DTS partition nodes that contain the application and
19+
* radio images.
20+
*/
21+
slot0_partition: &cpuapp_slot0_partition {
22+
label = "image-0";
23+
};
24+
25+
slot1_partition: &cpuapp_slot1_partition {
26+
label = "image-1";
27+
};
28+
29+
/* Remove the undefined property value from the disabled VPR cores to prevent build errors. */
30+
&cpuflpr_vpr {
31+
/delete-property/ source-memory;
32+
};
33+
34+
&cpuppr_vpr {
35+
/delete-property/ source-memory;
36+
};
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MC4CAQAwBQYDK2VwBCIEIFe3odXpEgmHpGsRmLZkC9FS+DMxKO5yi6BmKTctX05/
3+
-----END PRIVATE KEY-----
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#
2+
# Copyright (c) 2025 Nordic Semiconductor ASA
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
6+
CONFIG_SIZE_OPTIMIZATIONS=y
7+
8+
CONFIG_HW_STACK_PROTECTION=y
9+
CONFIG_MAIN_STACK_SIZE=10240
10+
CONFIG_BOOT_BOOTSTRAP=n
11+
12+
CONFIG_BOOT_VERSION_CMP_USE_BUILD_NUMBER=y
13+
14+
CONFIG_FLASH=y
15+
# CONFIG_FPROTECT is not supported yet on the nRF54H20 SoC
16+
17+
# Configure Zephyr system power management
18+
# The Zephyr system power management is used by the MCUboot bootloader to detect wake-up from
19+
# S2RAM and redirect execution to the resume routine of the application image
20+
CONFIG_PM=y
21+
CONFIG_PM_S2RAM=y
22+
CONFIG_PM_S2RAM_CUSTOM_MARKING=y
23+
24+
# Enable HW cryptography in the MCUboot bootloader and its dependencies
25+
# The PSA operations are handled by the SDFW Service Framework (SDFW)
26+
# that is enabled with the CONFIG_PSA_SSF_CRYPTO_CLIENT Kconfig option.
27+
CONFIG_NRF_SECURITY=y
28+
CONFIG_MULTITHREADING=y
29+
CONFIG_PSA_SSF_CRYPTO_CLIENT=y
30+
31+
# Reduce memory consumption
32+
CONFIG_BOOT_BANNER=n
33+
CONFIG_NCS_BOOT_BANNER=n
34+
CONFIG_CLOCK_CONTROL=n
35+
CONFIG_SPI_NOR=n
36+
CONFIG_GPIO=n
37+
CONFIG_SERIAL=n
38+
CONFIG_CONSOLE=n
39+
CONFIG_UART_CONSOLE=n
40+
CONFIG_PRINTK=n
41+
CONFIG_USE_SEGGER_RTT=n
42+
43+
# Use minimal C library instead of the Picolib
44+
CONFIG_MINIMAL_LIBC=y
45+
46+
# Activate Link Time Optimization (LTO)
47+
CONFIG_LTO=y
48+
CONFIG_ISR_TABLES_LOCAL_DECLARATION=y
49+
50+
# Improve debugging experience by disabling reset on fatal error
51+
CONFIG_RESET_ON_FATAL_ERROR=n
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#
2+
# Copyright (c) 2025 Nordic Semiconductor ASA
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
6+
CONFIG_SIZE_OPTIMIZATIONS=y
7+
8+
CONFIG_HW_STACK_PROTECTION=y
9+
CONFIG_MAIN_STACK_SIZE=10240
10+
CONFIG_BOOT_BOOTSTRAP=n
11+
12+
CONFIG_BOOT_VERSION_CMP_USE_BUILD_NUMBER=y
13+
14+
CONFIG_FLASH=y
15+
# CONFIG_FPROTECT is not supported yet on the nRF54H20 SoC
16+
17+
# Configure Zephyr system power management
18+
# The Zephyr system power management is used by the MCUboot bootloader to detect wake-up from
19+
# S2RAM and redirect execution to the resume routine of the application image
20+
CONFIG_PM=y
21+
CONFIG_PM_S2RAM=y
22+
CONFIG_PM_S2RAM_CUSTOM_MARKING=y
23+
24+
# Enable HW cryptography in the MCUboot bootloader and its dependencies
25+
# The PSA operations are handled by the SDFW Service Framework (SDFW)
26+
# that is enabled with the CONFIG_PSA_SSF_CRYPTO_CLIENT Kconfig option.
27+
CONFIG_NRF_SECURITY=y
28+
CONFIG_MULTITHREADING=y
29+
CONFIG_PSA_SSF_CRYPTO_CLIENT=y
30+
31+
# Reduce memory consumption
32+
CONFIG_BOOT_BANNER=n
33+
CONFIG_NCS_BOOT_BANNER=n
34+
CONFIG_CLOCK_CONTROL=n
35+
CONFIG_SPI_NOR=n
36+
CONFIG_GPIO=n
37+
CONFIG_SERIAL=n
38+
CONFIG_CONSOLE=n
39+
CONFIG_UART_CONSOLE=n
40+
CONFIG_PRINTK=n
41+
CONFIG_USE_SEGGER_RTT=n
42+
43+
# Use minimal C library instead of the Picolib
44+
CONFIG_MINIMAL_LIBC=y
45+
46+
# Activate Link Time Optimization (LTO)
47+
CONFIG_LTO=y
48+
CONFIG_ISR_TABLES_LOCAL_DECLARATION=y
49+
50+
# Improve debugging experience by disabling reset on fatal error
51+
CONFIG_RESET_ON_FATAL_ERROR=n
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#
2+
# Copyright (c) 2025 Nordic Semiconductor ASA
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
6+
CONFIG_SIZE_OPTIMIZATIONS=y
7+
8+
CONFIG_HW_STACK_PROTECTION=y
9+
CONFIG_MAIN_STACK_SIZE=10240
10+
CONFIG_BOOT_BOOTSTRAP=n
11+
12+
CONFIG_BOOT_VERSION_CMP_USE_BUILD_NUMBER=y
13+
14+
CONFIG_FLASH=y
15+
# CONFIG_FPROTECT is not supported yet on the nRF54H20 SoC
16+
17+
CONFIG_RESET_ON_FATAL_ERROR=y
18+
19+
# Configure Zephyr system power management
20+
# The Zephyr system power management is used by the MCUboot bootloader to detect wake-up from
21+
# S2RAM and redirect execution to the resume routine of the application image
22+
CONFIG_PM=y
23+
CONFIG_PM_S2RAM=y
24+
CONFIG_PM_S2RAM_CUSTOM_MARKING=y
25+
26+
# Enable HW cryptography in the MCUboot bootloader and its dependencies
27+
# The PSA operations are handled by the SDFW Service Framework (SDFW)
28+
# that is enabled with the CONFIG_PSA_SSF_CRYPTO_CLIENT Kconfig option.
29+
CONFIG_NRF_SECURITY=y
30+
CONFIG_MULTITHREADING=y
31+
CONFIG_PSA_SSF_CRYPTO_CLIENT=y
32+
33+
# Reduce memory consumption
34+
CONFIG_BOOT_BANNER=n
35+
CONFIG_NCS_BOOT_BANNER=n
36+
CONFIG_CLOCK_CONTROL=n
37+
CONFIG_SPI_NOR=n
38+
CONFIG_GPIO=n
39+
CONFIG_SERIAL=n
40+
CONFIG_CONSOLE=n
41+
CONFIG_UART_CONSOLE=n
42+
CONFIG_PRINTK=n
43+
CONFIG_USE_SEGGER_RTT=n
44+
45+
# Use minimal C library instead of the Picolib
46+
CONFIG_MINIMAL_LIBC=y
47+
48+
# Activate Link Time Optimization (LTO)
49+
CONFIG_LTO=y
50+
CONFIG_ISR_TABLES_LOCAL_DECLARATION=y
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#
2+
# Copyright (c) 2025 Nordic Semiconductor ASA
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
6+
CONFIG_SIZE_OPTIMIZATIONS=y
7+
8+
CONFIG_HW_STACK_PROTECTION=y
9+
CONFIG_MAIN_STACK_SIZE=10240
10+
CONFIG_BOOT_BOOTSTRAP=n
11+
12+
CONFIG_BOOT_VERSION_CMP_USE_BUILD_NUMBER=y
13+
14+
CONFIG_FLASH=y
15+
# CONFIG_FPROTECT is not supported yet on the nRF54H20 SoC
16+
17+
CONFIG_RESET_ON_FATAL_ERROR=y
18+
19+
# Configure Zephyr system power management
20+
# The Zephyr system power management is used by the MCUboot bootloader to detect wake-up from
21+
# S2RAM and redirect execution to the resume routine of the application image
22+
CONFIG_PM=y
23+
CONFIG_PM_S2RAM=y
24+
CONFIG_PM_S2RAM_CUSTOM_MARKING=y
25+
26+
# Enable HW cryptography in the MCUboot bootloader and its dependencies
27+
# The PSA operations are handled by the SDFW Service Framework (SDFW)
28+
# that is enabled with the CONFIG_PSA_SSF_CRYPTO_CLIENT Kconfig option.
29+
CONFIG_NRF_SECURITY=y
30+
CONFIG_MULTITHREADING=y
31+
CONFIG_PSA_SSF_CRYPTO_CLIENT=y
32+
33+
# Reduce memory consumption
34+
CONFIG_BOOT_BANNER=n
35+
CONFIG_NCS_BOOT_BANNER=n
36+
CONFIG_CLOCK_CONTROL=n
37+
CONFIG_SPI_NOR=n
38+
CONFIG_GPIO=n
39+
CONFIG_SERIAL=n
40+
CONFIG_CONSOLE=n
41+
CONFIG_UART_CONSOLE=n
42+
CONFIG_PRINTK=n
43+
CONFIG_USE_SEGGER_RTT=n
44+
45+
# Use minimal C library instead of the Picolib
46+
CONFIG_MINIMAL_LIBC=y
47+
48+
# Activate Link Time Optimization (LTO)
49+
CONFIG_LTO=y
50+
CONFIG_ISR_TABLES_LOCAL_DECLARATION=y
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*
2+
* Copyright (c) 2025 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
*/
6+
7+
&mram1x {
8+
/delete-node/ partitions;
9+
10+
/* Redefine the "partitions" DTS node. */
11+
partitions {
12+
compatible = "fixed-partitions";
13+
#address-cells = <1>;
14+
#size-cells = <1>;
15+
16+
/* Partitions belonging to the MRAM_10 memory block.
17+
* The start of the MRAM_10 memory is reserved for internal IronSide SE firmware.
18+
*/
19+
20+
cpuapp_boot_partition: partition@30000 {
21+
reg = <0x30000 DT_SIZE_K(24)>;
22+
};
23+
24+
/* Due to the build system limitation, the allowed size of the application image (configured by
25+
* the code partition DTS node) is incorrectly increased by the size allocated for the radio image.
26+
*/
27+
cpuapp_slot0_partition: partition@36000 {
28+
reg = <0x36000 DT_SIZE_K(808)>;
29+
};
30+
31+
cpurad_slot0_partition: partition@c9000 {
32+
reg = <0xc9000 DT_SIZE_K(220)>;
33+
};
34+
35+
/* Partitions belonging to the MRAM_11 memory block. */
36+
37+
/* Due to the build system limitation, the allowed size of the application image (configured by
38+
* the code partition DTS node) is incorrectly increased by the size allocated for the radio image.
39+
*/
40+
cpuapp_slot1_partition: partition@100000 {
41+
reg = <0x100000 DT_SIZE_K(808)>;
42+
};
43+
44+
cpurad_slot1_partition: partition@193000 {
45+
reg = <0x193000 DT_SIZE_K(220)>;
46+
};
47+
48+
storage_partition: partition@1ca000 {
49+
reg = <0x1ca000 DT_SIZE_K(40)>;
50+
};
51+
52+
periphconf_partition: partition@1d4000 {
53+
reg = <0x1d4000 DT_SIZE_K(8)>;
54+
};
55+
56+
/* The end of the MRAM_11 memory is left unallocated. */
57+
};
58+
};

0 commit comments

Comments
 (0)