Arm Corstone-1000-A320 Fixed Virtual Platform
Arm Corstone-1000-A320 Fixed Virtual Platform
Overview
This board configuration uses the Arm Corstone-1000-A320 Fixed Virtual Platform (FVP) to emulate an Arm Corstone-1000 reference design with Cortex-A320 host processor.
The Corstone-1000 is an Arm reference design for secure IoT systems, featuring:
Host processor subsystem with Cortex-A320 (ARMv9.2-A)
Secure Enclave (Cortex-M0+) running TF-M
Ethos-U85 NPU (Neural Processing Unit)
CryptoCell-312 hardware accelerator
System-level security with MCUboot verified boot
This configuration provides support for:
Cortex-A320 CPU (ARMv9.2-A architecture)
GICv3 interrupt controller (GIC-600)
ARM architected (Generic) timer
PL011 UART controller
SVE2 (Scalable Vector Extension 2)
Note
The Ethos-U85 NPU is present in the FVP model but is not currently supported by this board configuration.
Hardware
Supported Features
The fvp_corstone1000 board supports the hardware features listed below.
- on-chip / on-board
- Feature integrated in the SoC / present on the board.
- 2 / 2
-
Number of instances that are enabled / disabled.
Click on the label to see the first instance of this feature in the board/SoC DTS files. -
vnd,foo -
Compatible string for the Devicetree binding matching the feature.
Click on the link to view the binding documentation.
Board Variants
The following board targets are available:
fvp_corstone1000/a320- single-core ARMv9.2-A with Cortex-A320 CPUfvp_corstone1000/a320/smp- quad-core SMP with all 4 Cortex-A320 CPUs
Memory Map
The Corstone-1000-A320 FVP has the following memory layout for the host subsystem:
Region |
Address |
Size |
|---|---|---|
DRAM |
0x80000000 |
2 GB |
GIC Distributor |
0x1C000000 |
64 KB |
GIC Redistributor |
0x1C040000 |
2 MB |
Host UART0 |
0x1A510000 |
4 KB |
Boot Architecture
The Corstone-1000 uses a multi-stage boot process involving two processors:
Secure Enclave (M0+): BL1_1 -> BL1_2 -> BL2/MCUboot -> TF-M SPE -.
|
Host CPU (A320): TF-A BL2 -> BL31 -> Zephyr (BL33)
Secure Enclave (Cortex-M0+):
BL1_1 (ROM) — hardware init, key provisioning
BL1_2 (OTP) — verified by BL1_1
BL2 (MCUboot) — parses GPT, loads and ECDSA-verifies TF-M and TF-A images
TF-M Runtime — initializes ITS/PS/Crypto partitions, powers on host CPU via DSU-120T PPU
Host CPU (Cortex-A320):
TF-A BL2 — loaded by MCUboot, parses FIP, loads BL31 and BL33
TF-A BL31 — EL3 runtime (PSCI, GIC init), ERETs to NS-EL1
BL33 (Zephyr) — non-secure application at EL1
Note
The FVP provisioning cycle requires two full SE boot iterations before the real boot. This is normal — the first boot provisions dummy keys and reboots.
Programming and Debugging
Prerequisites
Zephyr SDK (recommended) — provides both
arm-zephyr-eabifor TF-M andaarch64-zephyr-elffor Zephyr/TF-A builds, plusdtcfor TF-A device tree compilation.Corstone-1000-A320 FVP — download from Arm Ecosystem FVPs.
Set the
ARMFVP_BIN_PATHenvironment variable to the directory containing the FVP binary (the default installation path is shown below):export ARMFVP_BIN_PATH=~/FVP_Corstone_1000-A320/models/Linux64_GCC-9.3
sgdisk — for GPT partition table creation. Install from the
gdiskpackage:# Fedora / RHEL sudo dnf install gdisk # Ubuntu / Debian sudo apt install gdisk
Building
This board requires TF-M and TF-A modules with Corstone-1000-A320 support. After checking out this branch, update the modules:
west update
This board requires Sysbuild (System build) to automatically build TF-M (Secure Enclave) and TF-A (Host firmware) alongside Zephyr:
west build -b fvp_corstone1000/a320 samples/hello_world --sysbuild
Tip
To avoid passing --sysbuild every time, set it as the default:
west config build.sysbuild true
This produces in build/firmware/:
bl1.bin— Secure Enclave ROM (BL1_1 + provisioning bundle)cs1000.bin— 32 MB GPT flash image containing signed TF-M, signed TF-A BL2, BL31, and Zephyr in a FIP
Running
west build -t run
To set a simulated time limit or other FVP options, set ARMFVP_EXTRA_FLAGS
at configure time:
ARMFVP_EXTRA_FLAGS="--simlimit 120" west build -b fvp_corstone1000/a320 \
samples/hello_world --sysbuild
west build -t run
Expected output (after provisioning cycle):
*** Booting Zephyr OS build v4.3.0-... ***
Hello World! fvp_corstone1000/a320
Debugging
Refer to the detailed overview about Application Debugging.
The FVP supports connection via Arm Development Studio or other debuggers using the Iris debug interface.
Tip
For early boot debugging before the UART is available, semihosting can be used by enabling
CONFIG_SEMIHOST and CONFIG_SEMIHOST_CONSOLE, and disabling
CONFIG_UART_CONSOLE. The FVP has
semihosting enabled by default.
Known Limitations
Linux/Unix host only — the sysbuild integration uses POSIX shell utilities (
sh,dd,sgdisk) to assemble the Secure Enclave flash image and is not currently supported on Windows hosts.Ethos-U85 NPU — the NPU is present in the FVP model but is not currently supported by Zephyr.
mmap overlap warning —
mmap_add_region_check() failed. error -22appears in TF-A BL2/BL31. This is a non-fatal Ethos-U85 memory map overlap in release mode, also present in the Yocto reference build.