Browse Source
What is changed? - Add initial support for the MPS4 Corstone-315 FVP platform, including board and SoC definitions.The qualifier to build/run application with board mps4/corstone315 is `mps4/corstone315/fvp` for secure and `mps3/corstone315/fvp/ns` for non-secure. - FVP testing with corstone315 uses the ARM FVP `FVP_Corstone_SSE-315`. Why do we need this change? - This enables FVP support for corstone315. - A separate FVP variant was added for corstone315 as the TFM board used for non-secure variant differs for FPGA and FVP. TFM board `arm/mps4/corstone315` support is present but no FVP support yet. We can test this by building TF-M with -DTFM_PLATFORM=arm/mps4/corstone315 and then lauching FVP: FVP_Corstone_SSE-315 --data "bl1_1.bin"@0x11000000 --data "cm_provisioning_bundle.bin"@0x12024000 --data "dm_provisioning_bundle.bin"@0x1202aa00 --data "bl2_signed.bin"@0x12031400 --data "tfm_s_ns_signed.bin"@0x38000000 Signed-off-by: Shaunak saha <ssaha@tsavoritesi.com>pull/88221/merge
14 changed files with 320 additions and 5 deletions
@ -0,0 +1,97 @@
@@ -0,0 +1,97 @@
|
||||
/* |
||||
* Copyright 2025 Arm Limited and/or its affiliates <open-source-office@arm.com> |
||||
* |
||||
* SPDX-License-Identifier: Apache-2.0 |
||||
*/ |
||||
|
||||
/dts-v1/; |
||||
|
||||
#include <arm/armv8.1-m.dtsi> |
||||
#include <zephyr/dt-bindings/i2c/i2c.h> |
||||
#include <zephyr/dt-bindings/input/input-event-codes.h> |
||||
#include <mem.h> |
||||
|
||||
/ { |
||||
compatible = "arm,mps4-fvp"; |
||||
#address-cells = <1>; |
||||
#size-cells = <1>; |
||||
|
||||
chosen { |
||||
zephyr,console = &uart0; |
||||
zephyr,shell-uart = &uart0; |
||||
zephyr,sram = &sram; |
||||
zephyr,flash = &isram; |
||||
}; |
||||
|
||||
cpus { |
||||
#address-cells = <1>; |
||||
#size-cells = <0>; |
||||
|
||||
cpu@0 { |
||||
device_type = "cpu"; |
||||
compatible = "arm,cortex-m85"; |
||||
reg = <0>; |
||||
#address-cells = <1>; |
||||
#size-cells = <1>; |
||||
|
||||
mpu: mpu@e000ed90 { |
||||
compatible = "arm,armv8.1m-mpu"; |
||||
reg = <0xe000ed90 0x40>; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
ethosu { |
||||
#address-cells = <1>; |
||||
#size-cells = <0>; |
||||
interrupt-parent = <&nvic>; |
||||
|
||||
ethosu0: ethosu@50004000 { |
||||
compatible = "arm,ethos-u"; |
||||
reg = <0x50004000>; |
||||
interrupts = <16 3>; |
||||
secure-enable; |
||||
privilege-enable; |
||||
status = "okay"; |
||||
}; |
||||
}; |
||||
|
||||
/* We utilize the secure addresses, if you subtract 0x10000000 |
||||
* you'll get the non-secure alias |
||||
*/ |
||||
itcm: itcm@10000000 { /* alias @ 0x0 */ |
||||
compatible = "zephyr,memory-region"; |
||||
reg = <0x10000000 DT_SIZE_K(32)>; |
||||
zephyr,memory-region = "ITCM"; |
||||
}; |
||||
|
||||
sram: sram@12000000 { /* alias @ 0x01000000 */ |
||||
compatible = "zephyr,memory-region", "mmio-sram"; |
||||
reg = <0x12000000 DT_SIZE_M(2)>; |
||||
zephyr,memory-region = "SRAM"; |
||||
}; |
||||
|
||||
dtcm: dtcm@30000000 { /* alias @ 0x20000000 */ |
||||
compatible = "zephyr,memory-region"; |
||||
reg = <0x30000000 DT_SIZE_K(32)>; |
||||
zephyr,memory-region = "DTCM"; |
||||
}; |
||||
|
||||
isram: sram@31000000 { /* alias @ 0x21000000 */ |
||||
compatible = "zephyr,memory-region", "mmio-sram"; |
||||
reg = <0x31000000 DT_SIZE_M(4)>; |
||||
zephyr,memory-region = "ISRAM"; |
||||
}; |
||||
|
||||
soc { |
||||
peripheral@50000000 { |
||||
#address-cells = <1>; |
||||
#size-cells = <1>; |
||||
ranges = <0x0 0x50000000 0x10000000>; |
||||
|
||||
#include "mps4_common_soc_peripheral.dtsi" |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
#include "mps4_common.dtsi" |
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
# Copyright 2025 Arm Limited and/or its affiliates <open-source-office@arm.com> |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
identifier: mps4/corstone315/fvp |
||||
name: Arm MPS4-Corstone315-FVP |
||||
type: mcu |
||||
arch: arm |
||||
ram: 2048 |
||||
flash: 4096 |
||||
simulation: |
||||
- name: armfvp |
||||
exec: FVP_Corstone_SSE-315 |
||||
toolchain: |
||||
- gnuarmemb |
||||
- zephyr |
||||
supported: |
||||
- gpio |
||||
testing: |
||||
default: true |
||||
timeout_multiplier: 4 |
||||
ignore_tags: |
||||
- drivers |
||||
- bluetooth |
||||
- net |
||||
- timer |
||||
vendor: arm |
@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
|
||||
# Copyright 2025 Arm Limited and/or its affiliates <open-source-office@arm.com> |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
CONFIG_RUNTIME_NMI=y |
||||
CONFIG_ARM_TRUSTZONE_M=y |
||||
CONFIG_ARM_MPU=y |
||||
|
||||
# GPIOs |
||||
CONFIG_GPIO=y |
||||
|
||||
# Serial |
||||
CONFIG_CONSOLE=y |
||||
CONFIG_UART_CONSOLE=y |
||||
CONFIG_SERIAL=y |
||||
|
||||
# Build a Secure firmware image |
||||
CONFIG_TRUSTED_EXECUTION_SECURE=y |
||||
# ROMSTART_REGION address and size are defined in Kconfig.defconfig |
||||
CONFIG_ROMSTART_RELOCATION_ROM=y |
@ -0,0 +1,102 @@
@@ -0,0 +1,102 @@
|
||||
/* |
||||
* Copyright 2025 Arm Limited and/or its affiliates <open-source-office@arm.com> |
||||
* |
||||
* SPDX-License-Identifier: Apache-2.0 |
||||
*/ |
||||
|
||||
/dts-v1/; |
||||
|
||||
#include <arm/armv8.1-m.dtsi> |
||||
#include <zephyr/dt-bindings/i2c/i2c.h> |
||||
#include <zephyr/dt-bindings/input/input-event-codes.h> |
||||
#include <mem.h> |
||||
|
||||
/ { |
||||
compatible = "arm,mps4-fvp"; |
||||
#address-cells = <1>; |
||||
#size-cells = <1>; |
||||
|
||||
chosen { |
||||
zephyr,console = &uart0; |
||||
zephyr,shell-uart = &uart0; |
||||
zephyr,sram = &ram; |
||||
zephyr,flash = &code; |
||||
}; |
||||
|
||||
cpus { |
||||
#address-cells = <1>; |
||||
#size-cells = <0>; |
||||
|
||||
cpu@0 { |
||||
device_type = "cpu"; |
||||
compatible = "arm,cortex-m85"; |
||||
reg = <0>; |
||||
#address-cells = <1>; |
||||
#size-cells = <1>; |
||||
|
||||
mpu: mpu@e000ed90 { |
||||
compatible = "arm,armv8.1m-mpu"; |
||||
reg = <0xe000ed90 0x40>; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
/* We utilize the non-secure addresses, if you add 0x10000000 |
||||
* you'll get the secure alias |
||||
*/ |
||||
itcm: itcm@0 { |
||||
compatible = "zephyr,memory-region"; |
||||
reg = <0x0 DT_SIZE_K(32)>; |
||||
zephyr,memory-region = "ITCM"; |
||||
}; |
||||
|
||||
sram: sram@1000000 { |
||||
compatible = "zephyr,memory-region", "mmio-sram"; |
||||
reg = <0x1000000 DT_SIZE_M(2)>; |
||||
zephyr,memory-region = "SRAM"; |
||||
}; |
||||
|
||||
dtcm: dtcm@20000000 { |
||||
compatible = "zephyr,memory-region"; |
||||
reg = <0x20000000 DT_SIZE_K(512)>; |
||||
zephyr,memory-region = "DTCM"; |
||||
}; |
||||
|
||||
isram: sram@21000000 { |
||||
compatible = "zephyr,memory-region", "mmio-sram"; |
||||
reg = <0x21000000 DT_SIZE_M(4)>; |
||||
zephyr,memory-region = "ISRAM"; |
||||
}; |
||||
|
||||
reserved-memory { |
||||
#address-cells = <1>; |
||||
#size-cells = <1>; |
||||
ranges; |
||||
|
||||
/* The memory regions defined below must match what the TF-M |
||||
* project has defined for that board - a single image boot is |
||||
* assumed. Please see the memory layout in: |
||||
* https://git.trustedfirmware.org/plugins/gitiles/TF-M/trusted-firmware-m.git/+/HEAD/platform/ext/target/arm/mps4/common/partition/flash_layout.h |
||||
*/ |
||||
|
||||
code: memory@28080000 { |
||||
reg = <0x28080000 DT_SIZE_K(512)>; |
||||
}; |
||||
|
||||
ram: memory@21020000 { |
||||
reg = <0x21020000 DT_SIZE_M(1)>; |
||||
}; |
||||
}; |
||||
|
||||
soc { |
||||
peripheral@40000000 { |
||||
#address-cells = <1>; |
||||
#size-cells = <1>; |
||||
ranges = <0x0 0x40000000 0x10000000>; |
||||
|
||||
#include "mps4_common_soc_peripheral.dtsi" |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
#include "mps4_common.dtsi" |
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
# Copyright 2025 Arm Limited and/or its affiliates <open-source-office@arm.com> |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
identifier: mps4/corstone315/fvp/ns |
||||
name: Arm MPS4-Corstone315-FVP_ns |
||||
type: mcu |
||||
arch: arm |
||||
ram: 1024 |
||||
flash: 512 |
||||
toolchain: |
||||
- gnuarmemb |
||||
- zephyr |
||||
testing: |
||||
only_tags: |
||||
- trusted-firmware-m |
@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
|
||||
# Copyright 2025 Arm Limited and/or its affiliates <open-source-office@arm.com> |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
CONFIG_ARM_TRUSTZONE_M=y |
||||
CONFIG_RUNTIME_NMI=y |
||||
CONFIG_ARM_MPU=y |
||||
|
||||
# GPIOs |
||||
CONFIG_GPIO=y |
||||
|
||||
# Serial |
||||
CONFIG_CONSOLE=y |
||||
CONFIG_UART_CONSOLE=y |
||||
CONFIG_SERIAL=y |
||||
|
||||
# Build a Non-secure firmware image |
||||
CONFIG_TRUSTED_EXECUTION_SECURE=n |
||||
CONFIG_TRUSTED_EXECUTION_NONSECURE=y |
||||
CONFIG_BUILD_WITH_TFM=y |
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
# Copyright 2025 Arm Limited and/or its affiliates <open-source-office@arm.com> |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
if SOC_MPS4_CORSTONE315 |
||||
|
||||
config NUM_IRQS |
||||
default 232 |
||||
|
||||
endif |
Loading…
Reference in new issue