Yocto - MarekBykowski/readme GitHub Wiki

HOME -> Yocto

The idea behind these undertakings is very simple: facilitate BSP ARMv8 development without the ARM HW underneath from reset/ROM bootloader all the way up to Linux OS.

To serve the purpose you need a simulator and SW stack/ARM BSP to put on the simulator:

Free-of-charge FVPs are:

  • AEM (Architecture Envelope Models)
    • AEMs are generic FVPs suitable for early Arm Architecture exploration
  • Corstone Ecosystem FVP, the IoT systems https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms/IoT%20FVPs
    • Corstone-1000:
      • provides a flexible compute architecture that combines Cortex-A and Cortex-M processors with the optional CryptoCell-312 cryptographic accelerator
      • supported from Yocto
      • details
    • Corstone-500; discontinued support from Yocto
    • Corstone-300
      • Aligned with the Arm MPS3 development platform
      • The model is based on the Cortex-M55 processor and offers a choice of the Ethos-U55 and Ethos-U65 processors
      • Supported from TF-M and Arm Keil CMSIS packs ARM.V2M_MPS3_SSE_300_BSP
    • Corstone-310
      • reference subsystem for a secure SSE-310 SoC aligned with the Arm MPS3 development platform
      • model is based on a Cortex-M85 processor, an Ethos-U55 neural network processor, and the DMA-350 Direct Memory Access controller
      • Supported from TF-M and Arm Keil CMSIS packs
    • Corstone-315
      • reference subsystem for a secure SSE-315 SoC aligned with the Arm MPS4 development platform
      • model is based on a Cortex-M85 processor, Arm DMA-350, Arm Mali-C55 ISP, and the second-generation NPU, Arm Ethos-U65
      • TF-M and CMSIS pack "SSE_315_BSP"
    • Corstone-320
      • reference subsystem for a secure SSE-320 SoC aligned with the Arm MPS4 development platform
      • model is based on a Cortex-M85 processor, Arm DMA-350, Arm Mali-C55 ISP and the third-generation NPU, Arm Ethos-U85.
      • TF-M and CMSIS pack "SSE_320_BSP"

ARM Corstone-1000

HW overview image

  • Pre-verified Corstone SSE-710 subsystem that provides a flexible compute architecture that combines Cortex®‑A and Cortex®‑M processors.
  • Support for Cortex®‑A32, Cortex®‑A35 and Cortex®‑A53 processors.
  • Two expansion systems for M-Class (or other) processors for adding sensors, connectivity, video, audio and machine learning at the edge
  • System and security IPs to build a secure SoC for a range of rich IoT applications, for example gateways, smart cameras and embedded systems.
  • Integrated Secure Enclave providing hardware Root of Trust and supporting seamless integration of the optional CryptoCell™-312 cryptographic accelerator
  • Designed to target PSA Certified Level 2 and System Ready IR certifications.

Docs old https://corstone1000.docs.arm.com/en/corstone1000-2023.06/index.html
Docs latest https://corstone1000.docs.arm.com/en/corstone1000-2024.11/index.html
https://corstone1000.docs.arm.com/en/latest/
HW overview https://developer.arm.com/documentation/102360/0000/Overview-of-Corstone-1000/Corstone-1000
Corstone-1000 SW stack

ARM Corstone-300

CMSIS-Toolbox

CMSIS-Toolbox (Common Microcontroller Software Interface Standard) that provides command-line tools for project creation and build of embedded applications that utilize software packs.

https://open-cmsis-pack.github.io/cmsis-toolbox/#

https://github.com/Open-CMSIS-Pack/csolution-examples/tree/main

ARM Keil uVision

Go to https://www.keil.arm.com/devices/ and select the pack. The packs include sample examples.

https://www.keil.arm.com/mdk-community/
YouTube from installing https://www.youtube.com/watch?v=WirMEYIVATo

Go to where the cbuild is and interrogate its env.

EU+xxbykowm@WPF2VVQYL /cygdrive/c/Users/xxbykowm/AppData/Local/Keil_v5/ARM/cmsis-toolbox/bin
$ ./cbuild list environment
CMSIS_PACK_ROOT=C:/Users/xxbykowm/AppData/Local/Arm/Packs
CMSIS_COMPILER_ROOT=C:/Users/xxbykowm/AppData/Local/Keil_v5/ARM/cmsis-toolbox/etc
Long pathname support=enabled
cmake=C:\Program Files\CMake\bin\cmake.exe, version 3.31.5
ninja=C:\Users\xxbykowm\AppData\Local\Microsoft\WinGet\Links\ninja.exe, version 1.12.1

The Issue I had was --toolchain (eg. cbuild Hello.csolution.yml --packs --context-set --toolchain AC6 --rebuild ) from cmdline neither compiler in *.csolution.yml file wasn't set. The Keil uVision then looked for the compiler missing and error'ed.

Arm Keil Studio Pack (MDK v6) for Visual Studio Code

https://github.com/Arm-Software/vscode-keil-studio-pack/blob/main/README.md

Cortex-M33 and SSE-200 IP

image

image

ARM AEM

Download and install ARM AEM

Download the ARM AEM from https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms#Downloads. At the time of this write-up the available latest version was 11.27_19

cd ~/Downloads
wget https://developer.arm.com/-/cdn-downloads/permalink/FVPs-Architecture/FM-11.27/FVP_Base_RevC-2xAEMvA_11.27_19_Linux64.tgz

Extract and install

cd ~/Downloads
mkdir ./Base_RevC_AEM_Fast_Models_11.26/; tar xzvf FVP_Base_RevC-2xAEMvA_11.27_19_Linux64.tgz -C ~/Downloads/Base_RevC_AEM_Fast_Models_11.26/

Build and run BSP on ARM AEM

Clone meta-arm and poky

cd <your_path>
git clone -b arm-aem-scarthgap https://github.com/MarekBykowski/meta-arm.git
git clone -b arm-aem-scarthgap https://github.com/MarekBykowski/poky.git

Build

cd <your_path>/poky
source oe-init-build-env arm-aem-build
cd ./arm-aem-build/
bitbake core-image-minimal

Run

cd <your_path>/poky
source oe-init-build-env arm-aem-build
./run.sh

image

Migration of the SW stack of fvp-base to support armv9

As of now the Yocto folks do not support armv9. And have no plans as of now.

https://lists.yoctoproject.org/g/meta-arm/topic/107945635#msg5965

My off work project is to add it in.

Building for other FastModels platforms.

To build the SW components for fvp_base and/or foundation_armv8 (jointly reffered to as FastModels) follow README. It is been bit obsolete now, so not sure what works, doesn't, is isn't available from there.

Sample BootUp flow for Cortex-A53

image

SoC architecture

image

Items:

kernel config
bitbake -c devshell

References:

[1] ARM Fast Models
[2] https://docs.yoctoproject.org
[3] Working with your own kernel sources https://docs.yoctoproject.org/kernel-dev/common.html#working-with-your-own-sources
[4] What is Poky? Poky
[5] Simple howto https://a4z.gitlab.io/docs/BitBake/guide.html
[6] Yocto qemu https://docs.yoctoproject.org/dev-manual/qemu.html
[7] Common tasks, eg. customizing image, adding/updating recipe https://docs.yoctoproject.org/dev-manual/common-tasks.html

⚠️ **GitHub.com Fallback** ⚠️