Skip to content

Commit fd645f0

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

File tree

19 files changed

+386
-13
lines changed

19 files changed

+386
-13
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+
};
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
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+
15+
/delete-node/ &cpusec_cpuapp_ipc_shm;
16+
/delete-node/ &cpusec_cpurad_ipc_shm;
17+
18+
/delete-node/ &cpusys_cpuapp_ipc_shm;
19+
/delete-node/ &cpusys_cpurad_ipc_shm;
20+
21+
/delete-node/ &cpuapp_rw_partitions;
22+
/delete-node/ &cpuapp_rx_partitions;
23+
/delete-node/ &cpurad_rx_partitions;
24+
25+
/ {
26+
reserved-memory {
27+
cpuapp_cpusys_ipc_shm: memory@2f88f600 {
28+
reg = <0x2f88f600 0x80>;
29+
};
30+
31+
cpusys_cpuapp_ipc_shm: memory@2f88f680 {
32+
reg = <0x2f88f680 0x80>;
33+
};
34+
35+
cpusec_cpuapp_ipc_shm: memory@2f88fb80 {
36+
reg = <0x2f88fb80 0x80>;
37+
};
38+
39+
cpuapp_ironside_se_event_report: memory@2f88fc00 {
40+
reg = <0x2f88fc00 0x100>;
41+
};
42+
43+
cpuapp_ironside_se_boot_report: memory@2f88fd00 {
44+
reg = <0x2f88fd00 0x200>;
45+
};
46+
47+
/* This cpurad section is to be removed soon as there is no need for it anymore.
48+
* Removing it now causes to much issues to resolve, keeping it is simpler
49+
* and faster ..
50+
*/
51+
52+
cpurad_cpusys_ipc_shm: memory@2f88ff00 {
53+
reg = <0x2f88ff00 0x80>;
54+
};
55+
56+
cpusys_cpurad_ipc_shm: memory@2f88ff80 {
57+
reg = <0x2f88ff80 0x80>;
58+
};
59+
60+
cpusec_cpurad_ipc_shm: memory@2f890000 {
61+
reg = <0x2f890000 0x80>;
62+
};
63+
64+
cpurad_ironside_se_event_report: memory@2f890080 {
65+
reg = <0x2f890080 0x100>;
66+
};
67+
68+
cpurad_ironside_se_boot_report: memory@2f890180 {
69+
reg = <0x2f890180 0x200>;
70+
};
71+
};
72+
};
73+
74+
&mram1x {
75+
partitions {
76+
compatible = "fixed-partitions";
77+
#address-cells = <1>;
78+
#size-cells = <1>;
79+
80+
cpuapp_boot_partition: partition@2c000 {
81+
reg = <0x2c000 DT_SIZE_K(64)>;
82+
};
83+
84+
cpuapp_slot0_partition: partition@3c000 {
85+
reg = <0x3c000 DT_SIZE_K(336)>;
86+
};
87+
88+
cpurad_slot0_partition: partition@90000 {
89+
reg = <0x90000 DT_SIZE_K(336)>;
90+
};
91+
92+
cpuppr_code_partition: partition@e4000 {
93+
reg = <0xe4000 DT_SIZE_K(64)>;
94+
};
95+
96+
cpuflpr_code_partition: partition@f4000 {
97+
reg = <0xf4000 DT_SIZE_K(48)>;
98+
};
99+
100+
cpuapp_slot1_partition: partition@100000 {
101+
reg = <0x100000 DT_SIZE_K(336)>;
102+
};
103+
104+
cpurad_slot1_partition: partition@154000 {
105+
reg = <0x154000 DT_SIZE_K(336)>;
106+
};
107+
108+
storage_partition: partition@1a8000 {
109+
reg = <0x1a8000 DT_SIZE_K(40)>;
110+
};
111+
};
112+
};
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/iron
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.

include/zephyr/drivers/firmware/nrf_ironside/cpuconf.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#include <stdbool.h>
1010
#include <stddef.h>
1111
#include <zephyr/drivers/firmware/nrf_ironside/call.h>
12+
13+
#include <nrfx.h>
1214
#include <zephyr/toolchain/common.h>
1315
#include <nrf.h>
1416

@@ -21,6 +23,8 @@
2123
#define IRONSIDE_CPUCONF_ERROR_WRONG_CPU (1)
2224
/** The boot message is too large to fit in the buffer. */
2325
#define IRONSIDE_CPUCONF_ERROR_MESSAGE_TOO_LARGE (2)
26+
/** The vector table content is 0xFFFFFFFF */
27+
#define IRONSIDE_CPUCONF_ERROR_NO_FIRMWARE (3)
2428

2529
/**
2630
* @}

0 commit comments

Comments
 (0)