Corstone 1000 SW stack - MarekBykowski/readme GitHub Wiki
Design overview
The base system architecture of the platform is created from three different types of systems:
Secure EnclaveHost SystemExternal System
Each subsystem provides different functionality to overall SoC.
For time being I have only delved into Hello World in ARM Keil for External System. Read on
External System
External System in the refernce platform Corstone-1000 is Cortex-M3.
External System Cortex-M3 Firmware
Recipe $WORKSPACE/meta-arm/meta-arm-bsp/recipes-bsp/external-system/external-system_0.1.0.bb
From the recipe we can see that External System Cortex-M3 Firmware is taken from https://git.gitlab.arm.com/arm-reference-solutions/corstone1000/external_system/rtx
The repository uses the components from Cortex Microcontroller System Interface Standard (CMSIS) version 5 https://github.com/ARM-software/CMSIS_5 as a git submodule, namely:
- CMSIS Real-Time Operating System (RTOS) components
- CMSIS Core
The full stack of CMSIS ver. 5 is:
- CMSIS-RTOS2: RTX 5 is now available for IAR, GCC, ARM Compiler 5, ARM Compiler 6
- CMSIS-RTOS2: FreeRTOS adoption (release) is available https://github.com/ARM-software/CMSIS-FreeRTOS
- CMSIS-Core: compiler agnostic features extended to simplify transition on LLVM based front-end
- CMSIS-Core-A: preview of the CMSIS-Core for Cortex-A
- Coming soon: CMSIS-RTOS2 for Cortex-A
So that the External System Cortex-M3 Firmware takes two out of five components of CMSIS ver. 5
RTX 5 is described here https://www.keil.com/arm/rl-arm/kernel.asp
Write Hello World in Cortex-M3
Steps I took:
- Took the recipe
$WORKSPACE/meta-arm/meta-arm-bsp/recipes-bsp/external-system/external-system_0.1.0.bband modified it to point to my repo https://github.com/MarekBykowski/external-system-cortex-m3-firmware - In my repo I changed the source code for the banner from
Running RTX RTOStoHello Oren. Running RTX RTOS. Find the SHA1 commit here https://github.com/MarekBykowski/external-system-cortex-m3-firmware/commit/b8173b94974c5389ca2ac6ca18021a1eb1933c3a - Built it via
Yocto - Brought it up on a SystemC FVP simulator
Corstone-1000and four terminal instances are lanuched, namely from up to bootomSecure EnclaverunningCortex-M0+,Host SystemrunningCortex-A53andExternal SystemrunningCortex-M3
- The
cat /proc/cpuinfofrom theHost Systemreveals we are onCortex-A35
CPU implementer : 0x41 is ARM
CPU architecure : 8 is for ARMv8 and
CPU part : 0xd04 means Cortex-A35
Cortex-M3prints the changed banner of myslef. See :point_right: Hello Oren in the screenshot below