ARM: Corstone-1000

Introduction

The ARM’s Corstone-1000 platform is a reference implementation of PSA FF-M architecture where NSPE and SPE environments are partitioned into Cortex-A35 and Cortex-M0+ respectively.

Cortex-M0+ acting as Secure Enclave is the Root-of-trust of SoC. Its software comprises of two boot loading stages, i.e. Bl1 and Bl2, based on mcuboot, and TF-M as run time software. Cortex-A35, also referred as host, is completely treated as non-secure from the Secure Enclave perspective. The Cortex-A35 is brought out of rest by Secure Enclave in aarch64 bit mode, and boots the software ecosystem based on linux, u-boot, UEFI run time services, TF-A and Optee.

The communication between NSPE and SPE is based on PSA IPC protocol running on top of OpenAMP.

The secure enclave subsystem has ARM’s CC-312 (Crypto Cell) hardware to accelerate cryptographic operations.

System boot

  • The SoC reset brings Secure Enclave (SE), that is Cortex-M0+, out of rest.

  • SE executes the BL1 ROM code based on mcuboot.

  • BL1 load, verifies and transfer execution to BL2 which is again based on mcuboot.

  • BL2 loads and verifies TF-M and host’s initial boot loader image.

  • BL2 transfer the execution to the TF-M.

  • During TF-M initialization, the host is reset.

Build

cmake -B build/ -S <tf-m-root>/ -DCMAKE_BUILD_TYPE=Debug -DTFM_TOOLCHAIN_FILE=<tf-m-root>/toolchain_GNUARM.cmake -DTFM_PLATFORM=arm/corstone1000
cmake --build build -- install

The binaries will be installed inside:

./build/install/outputs/ARM/CORSTONE1000

Copyright (c) 2021, Arm Limited. All rights reserved.