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 Enclave
  • Host System
  • External System

Each subsystem provides different functionality to overall SoC.

image

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:

  1. Took the recipe $WORKSPACE/meta-arm/meta-arm-bsp/recipes-bsp/external-system/external-system_0.1.0.bb and modified it to point to my repo https://github.com/MarekBykowski/external-system-cortex-m3-firmware
  2. In my repo I changed the source code for the banner from Running RTX RTOS to Hello Oren. Running RTX RTOS. Find the SHA1 commit here https://github.com/MarekBykowski/external-system-cortex-m3-firmware/commit/b8173b94974c5389ca2ac6ca18021a1eb1933c3a
  3. Built it via Yocto
  4. Brought it up on a SystemC FVP simulator Corstone-1000 and four terminal instances are lanuched, namely from up to bootom Secure Enclave running Cortex-M0+, Host System running Cortex-A53 and External System running Cortex-M3

image

  1. The cat /proc/cpuinfo from the Host System reveals we are on Cortex-A35

image

CPU implementer : 0x41 is ARM
CPU architecure : 8 is for ARMv8 and
CPU part : 0xd04 means Cortex-A35

  1. Cortex-M3 prints the changed banner of myslef. See :point_right: Hello Oren in the screenshot below

image