Skip to content

Commit 8992728

Browse files
NRFX-7253: Various adaptations needed for nrf92 IRONSide
Signed-off-by: Aymen Laouini <[email protected]>
1 parent 893c333 commit 8992728

18 files changed

+369
-9
lines changed

boards/nordic/nrf9280pdk/Kconfig.defconfig

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,13 @@ config ASSERT
1919
default n if ZTEST
2020

2121
endif # BOARD_NRF9280PDK_NRF9280_CPUPPR
22+
23+
if BOARD_NRF9280PDK_NRF9280_CPUAPP_IRON
24+
25+
config ROM_START_OFFSET
26+
default 0x800 if BOOTLOADER_MCUBOOT
27+
28+
config FLASH_LOAD_OFFSET
29+
default 0x2c000 if !USE_DT_CODE_PARTITION
30+
31+
endif # BOARD_NRF9280PDK_NRF9280_CPUAPP_IRON

boards/nordic/nrf9280pdk/Kconfig.nrf9280pdk

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44
config BOARD_NRF9280PDK
5-
select SOC_NRF9280_CPUAPP if BOARD_NRF9280PDK_NRF9280_CPUAPP
5+
select SOC_NRF9280_CPUAPP if (BOARD_NRF9280PDK_NRF9280_CPUAPP || \
6+
BOARD_NRF9280PDK_NRF9280_CPUAPP_IRON)
67
select SOC_NRF9280_CPURAD if BOARD_NRF9280PDK_NRF9280_CPURAD
7-
select SOC_NRF9280_CPUPPR if BOARD_NRF9280PDK_NRF9280_CPUPPR || \
8-
BOARD_NRF9280PDK_NRF9280_CPUPPR_XIP
8+
select SOC_NRF9280_CPUPPR if (BOARD_NRF9280PDK_NRF9280_CPUPPR || \
9+
BOARD_NRF9280PDK_NRF9280_CPUPPR_XIP)
10+
select SOC_NRF9280_IRON if BOARD_NRF9280PDK_NRF9280_CPUAPP_IRON

boards/nordic/nrf9280pdk/board.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ board:
77
variants:
88
- name: xip
99
cpucluster: cpuppr
10+
- name: iron
11+
cpucluster: cpuapp
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: Apache-2.0
5+
*/
6+
7+
/* This file is to be merged with the original ipc_conf.dtsi in the future. */
8+
9+
/ {
10+
ipc {
11+
/delete-node/ ipc-1-2;
12+
/delete-node/ ipc-1-3;
13+
14+
cpusec_cpuapp_ipc: ipc-1-2 {
15+
compatible = "nordic,ironside-call";
16+
memory-region = <&cpusec_cpuapp_ipc_shm>;
17+
mboxes = <&cpusec_bellboard 12>,
18+
<&cpuapp_bellboard 0>;
19+
status = "disabled";
20+
};
21+
22+
cpusec_cpurad_ipc: ipc-1-3 {
23+
compatible = "nordic,ironside-call";
24+
memory-region = <&cpusec_cpurad_ipc_shm>;
25+
mboxes = <&cpusec_bellboard 18>,
26+
<&cpurad_bellboard 0>;
27+
status = "disabled";
28+
};
29+
};
30+
};

boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280-memory_map.dtsi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,8 @@
197197
#address-cells = <1>;
198198
#size-cells = <1>;
199199

200-
cpuapp_slot0_partition: partition@442000 {
201-
reg = <0x442000 DT_SIZE_K(1024)>;
200+
cpuapp_slot0_partition: partition@33000 {
201+
reg = <0x33000 DT_SIZE_K(1024)>;
202202
};
203203

204204
cpuppr_code_partition: partition@542000 {
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
/*
2+
* Copyright (c) 2025 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
/* This file is to be merged with the original memory_map.dtsi in the future.
8+
* The following nodes will be replaced:
9+
*/
10+
/delete-node/ &cpuapp_cpusec_ipc_shm;
11+
/delete-node/ &cpuapp_cpusys_ipc_shm;
12+
/delete-node/ &cpurad_cpusec_ipc_shm;
13+
/delete-node/ &cpurad_cpusys_ipc_shm;
14+
/delete-node/ &cpusec_cpuapp_ipc_shm;
15+
/delete-node/ &cpusec_cpurad_ipc_shm;
16+
/delete-node/ &cpusys_cpuapp_ipc_shm;
17+
/delete-node/ &cpusys_cpurad_ipc_shm;
18+
/delete-node/ &cpuapp_rw_partitions;
19+
/delete-node/ &cpuapp_rx_partitions;
20+
/delete-node/ &cpurad_rx_partitions;
21+
22+
/ {
23+
reserved-memory {
24+
cpuapp_cpusys_ipc_shm: memory@2f88fce0 {
25+
reg = <0x2f88fce0 0x80>;
26+
};
27+
28+
cpusys_cpuapp_ipc_shm: memory@2f88fd60 {
29+
reg = <0x2f88fd60 0x80>;
30+
};
31+
32+
cpurad_cpusys_ipc_shm: memory@2f88fe00 {
33+
reg = <0x2f88fe00 0x80>;
34+
};
35+
36+
cpusys_cpurad_ipc_shm: memory@2f88fe80 {
37+
reg = <0x2f88fe80 0x80>;
38+
};
39+
40+
cpusec_cpurad_ipc_shm: memory@2f88f800 {
41+
reg = <0x2f88f800 0x80>;
42+
};
43+
44+
cpurad_ironside_se_event_report: memory@2f88f880 {
45+
reg = <0x2f88f880 0x100>;
46+
};
47+
48+
cpurad_ironside_se_boot_report: memory@2f88f980 {
49+
reg = <0x2f88f980 0x200>;
50+
};
51+
52+
cpusec_cpuapp_ipc_shm: memory@2f88fb80 {
53+
reg = <0x2f88fb80 0x80>;
54+
};
55+
56+
cpuapp_ironside_se_event_report: memory@2f88fc00 {
57+
reg = <0x2f88fc00 0x100>;
58+
};
59+
60+
cpuapp_ironside_se_boot_report: memory@2f88fd00 {
61+
reg = <0x2f88fd00 0x200>;
62+
};
63+
};
64+
};
65+
66+
&mram1x {
67+
partitions {
68+
compatible = "fixed-partitions";
69+
#address-cells = <1>;
70+
#size-cells = <1>;
71+
72+
cpuapp_boot_partition: partition@2c000 {
73+
reg = <0x2c000 DT_SIZE_K(64)>;
74+
};
75+
76+
cpuapp_slot0_partition: partition@3c000 {
77+
reg = <0x3c000 DT_SIZE_K(336)>;
78+
};
79+
80+
cpurad_slot0_partition: partition@90000 {
81+
reg = <0x90000 DT_SIZE_K(336)>;
82+
};
83+
84+
cpuppr_code_partition: partition@e4000 {
85+
reg = <0xe4000 DT_SIZE_K(64)>;
86+
};
87+
88+
cpuflpr_code_partition: partition@f4000 {
89+
reg = <0xf4000 DT_SIZE_K(48)>;
90+
};
91+
92+
cpuapp_slot1_partition: partition@100000 {
93+
reg = <0x100000 DT_SIZE_K(336)>;
94+
};
95+
96+
cpurad_slot1_partition: partition@154000 {
97+
reg = <0x154000 DT_SIZE_K(336)>;
98+
};
99+
100+
storage_partition: partition@1a8000 {
101+
reg = <0x1a8000 DT_SIZE_K(40)>;
102+
};
103+
};
104+
};
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Copyright (c) 2025 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include "nrf9280pdk_nrf9280_cpuapp.dts"
8+
#include "nrf9280pdk_nrf9280-ipc_conf_iron.dtsi"
9+
#include "nrf9280pdk_nrf9280-memory_map_iron.dtsi"
10+
11+
/delete-node/ &cpusec_cpurad_ipc;
12+
13+
/ {
14+
chosen {
15+
zephyr,code-partition = &slot0_partition;
16+
zephyr,uart-mcumgr = &uart136;
17+
};
18+
};
19+
20+
&cpusec_bellboard {
21+
status = "okay";
22+
};
23+
24+
&cpusec_cpuapp_ipc {
25+
mbox-names = "tx", "rx";
26+
status = "okay";
27+
};
28+
29+
boot_partition: &cpuapp_boot_partition {
30+
label = "mcuboot";
31+
};
32+
33+
slot0_partition: &cpuapp_slot0_partition {
34+
label = "image-0";
35+
};
36+
37+
slot1_partition: &cpuapp_slot1_partition {
38+
label = "image-1";
39+
};
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Copyright (c) 2024 Nordic Semiconductor ASA
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
identifier: nrf9280pdk/nrf9280/cpuapp
5+
name: nRF9280-DK-nRF9280-Application
6+
type: mcu
7+
arch: arm
8+
toolchain:
9+
- gnuarmemb
10+
- xtools
11+
- zephyr
12+
sysbuild: true
13+
ram: 512
14+
flash: 1024
15+
supported:
16+
- adc
17+
- counter
18+
- gpio
19+
- i2c
20+
- pwm
21+
- spi
22+
- watchdog
23+
- usbd
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Copyright (c) 2024 Nordic Semiconductor ASA
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
# Enable UART driver
5+
CONFIG_SERIAL=y
6+
7+
# Enable console
8+
CONFIG_CONSOLE=y
9+
CONFIG_UART_CONSOLE=y
10+
11+
# Enable MPU
12+
CONFIG_ARM_MPU=y
13+
14+
# Enable hardware stack protection
15+
CONFIG_HW_STACK_PROTECTION=y
16+
17+
# MPU-based null-pointer dereferencing detection cannot be applied
18+
# as the (0x0 - 0x400) region is unmapped for this target.
19+
CONFIG_NULL_POINTER_EXCEPTION_DETECTION_NONE=y
20+
21+
# Enable cache
22+
CONFIG_CACHE_MANAGEMENT=y
23+
CONFIG_EXTERNAL_CACHE=y
24+
25+
# Enable GPIO
26+
CONFIG_GPIO=y
27+
28+
# UICR generation is not supported, and when reintroduced will not use nrf-regtool.
29+
CONFIG_NRF_REGTOOL_GENERATE_UICR=n

drivers/firmware/nrf_ironside/Kconfig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
config NRF_IRONSIDE
55
bool
6-
depends on SOC_NRF54H20_IRON
6+
depends on SOC_NRF54H20_IRON || SOC_NRF9280_IRON
77
help
88
This is selected by drivers interacting with Nordic IRONside firmware.
99

@@ -28,11 +28,11 @@ config NRF_IRONSIDE_CALL_INIT_PRIORITY
2828
endif # NRF_IRONSIDE_CALL
2929

3030
menu "Nordic IRONside services"
31-
depends on SOC_NRF54H20_IRON
31+
depends on SOC_NRF54H20_IRON || SOC_NRF9280_IRON
3232

3333
config NRF_IRONSIDE_CPUCONF_SERVICE
3434
bool "IRONside CPUCONF service"
35-
depends on SOC_NRF54H20_CPUAPP
35+
depends on SOC_NRF54H20_CPUAPP || SOC_NRF9280_CPUAPP
3636
select NRF_IRONSIDE_CALL
3737
help
3838
Service used to boot local domain cores.

samples/drivers/firmware/nrf_ironside/update/sample.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ common:
66
tags: nrf_ironside
77
integration_platforms:
88
- nrf54h20dk/nrf54h20/cpuapp/iron
9+
- nrf9280pdk/nrf9280/cpuapp/iron
910

1011
tests:
1112
sample.drivers.firmware.nrf_ironside.update:
12-
platform_allow: nrf54h20dk/nrf54h20/cpuapp/iron
13+
platform_allow:
14+
- nrf54h20dk/nrf54h20/cpuapp/iron
15+
- nrf9280pdk/nrf9280/cpuapp/iron

soc/nordic/nrf92/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@ zephyr_include_directories(.)
1010
# Ensure that image size aligns with 16 bytes so that MRAMC finalizes all writes
1111
# for the image correctly
1212
zephyr_linker_sources(SECTIONS SORT_KEY zzz_place_align_at_end align.ld)
13+
14+
add_subdirectory(ironside/se)

soc/nordic/nrf92/Kconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,6 @@ config SOC_NRF9230_ENGB_CPURAD
4848

4949
config SOC_NRF9230_ENGB_CPUPPR
5050
select RISCV_CORE_NORDIC_VPR
51+
52+
config SOC_NRF9280_IRON
53+
select EXPERIMENTAL if MCUBOOT

soc/nordic/nrf92/Kconfig.soc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,5 +62,10 @@ config SOC_NRF9280_CPUPPR
6262
help
6363
nRF9280 CPUPPR
6464

65+
config SOC_NRF9280_IRON
66+
bool
67+
help
68+
Indicates that local domain firmware is compatible with Nordic IRONside SE.
69+
6570
config SOC
6671
default "nrf9280" if SOC_NRF9280
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2025 Nordic Semiconductor
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
zephyr_library_sources_ifdef(CONFIG_SOC_NRF54H20_IRONSIDE_SE_BOOT_REPORT ironside_se_boot_report.c)
5+
zephyr_include_directories(include)

soc/nordic/nrf92/ironside/se/Kconfig

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Copyright (c) 2025 Nordic Semiconductor
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config SOC_NRF9280_IRONSIDE_SE_BOOT_REPORT
5+
bool "Nordic IRONside SE boot report"
6+
default y if SOC_NRF9280_CPUAPP || SOC_NRF9251_CPUAPP
7+
depends on SOC_NRF9280_IRON
8+
help
9+
This option enables parsing of the Boot Report populated by Nordic IRONside SE.
10+
11+
config SOC_NRF9280_IRONSIDE_SE_BOOT_REPORT_MAGIC
12+
hex
13+
default 0x4d69546f
14+
help
15+
Constant used to check if an Nordic IRONside SE boot report has been written.

0 commit comments

Comments
 (0)