Yocto - MarekBykowski/readme GitHub Wiki
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:
- FastModel/SystemC simulator/s https://developer.arm.com/documentation/100966/1127/Introduction-to-FVPs/Types-of-FVP?lang=en, license-managed FVPs, or free-of-charge FVPs.
- ARM BSP/SW components, namely bl1 (ROM bootloader), bl2 (SPL U-Boot), bl3-1 (Secure Monitor), bl3-3 (U-Boot), Linux Kernel, device-tree, and rootfs and/or along. For building the SW stack for ARM AEM we use Yocto meta layer meta-arm https://git.yoctoproject.org/meta-arm and poky distro https://git.yoctoproject.org/poky
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"
-
HW overview
- 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
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
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.
https://github.com/Arm-Software/vscode-keil-studio-pack/blob/main/README.md
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/
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
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.
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.
Items:
kernel config
bitbake -c devshell
[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