summaryrefslogtreecommitdiff
path: root/meta-arm/meta-arm-bsp/documentation
diff options
context:
space:
mode:
Diffstat (limited to 'meta-arm/meta-arm-bsp/documentation')
-rw-r--r--meta-arm/meta-arm-bsp/documentation/fvp-baser-aemv8r64.md264
1 files changed, 0 insertions, 264 deletions
diff --git a/meta-arm/meta-arm-bsp/documentation/fvp-baser-aemv8r64.md b/meta-arm/meta-arm-bsp/documentation/fvp-baser-aemv8r64.md
deleted file mode 100644
index 2635e75d79..0000000000
--- a/meta-arm/meta-arm-bsp/documentation/fvp-baser-aemv8r64.md
+++ /dev/null
@@ -1,264 +0,0 @@
-Armv8-R AArch64 AEM FVP Support in meta-arm-bsp
-===============================================
-
-Overview
---------
-
-Fixed Virtual Platforms (FVP) are complete simulations of an Arm system,
-including processor, memory and peripherals. These are set out in a
-"programmer's view", which gives you a comprehensive model on which to build
-and test your software.
-
-The Armv8-R AEM FVP is a free of charge Armv8-R Fixed Virtual Platform. It
-supports the latest Armv8-R feature set.
-
-This BSP implements a reference stack for the AArch64 support in the R-class
-first announced with the Cortex-R82 processor:
-https://developer.arm.com/ip-products/processors/cortex-r/cortex-r82
-
-Fast Models Fixed Virtual Platforms (FVP) Reference Guide:
-https://developer.arm.com/docs/100966/latest
-
-
-BSP Support
------------
-
-The fvp-baser-aemv8r64 Yocto MACHINE supports the following BSP components,
-where either a standard or Real-Time Linux kernel (PREEMPT\_RT) can be built
-and run:
-
- - FVP_Base_AEMv8R: v11.22.14
- - boot-wrapper-aarch64: provides PSCI support
- - U-Boot: v2022.07 - provides UEFI services
- - Linux kernel: linux-yocto-5.15
- - Linux kernel with PREEMPT\_RT support: linux-yocto-rt-5.15
-
-Note that the Real-Time Linux kernel (PREEMPT\_RT) does not use the real-time
-architectural extensions of the Armv8-R feature set.
-
-High-Level Architecture
------------------------
-
-The diagram below shows the current boot flow:
-
- +---------------------------------------------------------------+
- | Linux kernel |
- +---------------------------------------------------------------+
- /|\ /|\
- | |
- | UEFI services |
- | PSCI services |
- \|/ |
- +----------------+ | S-EL1
- ----| U-Boot |------------------------------|-----------
- +----------------+ | S-EL2
- /|\ |
- | |
- | |
- | |
- +--------------------------------------------------\|/----------+
- | +----------------+ +----------------+ |
- | boot-wrapper-aarch64 | Device tree | | PSCI handler | |
- | +----------------+ +----------------+ |
- +---------------------------------------------------------------+
-
-
-The firmware binary (generated as `linux-system.axf`) includes
-boot-wrapper-aarch64, the flattened device tree and U-Boot. U-Boot is configured
-to automatically detect a virtio block device and boot the UEFI payload at the
-path `/efi/boot/bootaa64.efi`. Using the standard build, the first partition
-contains a Grub image at this path, which boots the Linux kernel at `/Image` on
-the same partition. The second partition of the image contains the Linux root
-file system.
-
-There is no EL3 or non-secure world in the Armv8-R AArch64 architecture, so the
-reset vector starts boot-wrapper-aarch64 at S-EL2. Boot-wrapper-aarch64 is
-compiled with the `--enable-keep-el` flag, which causes it to boot U-Boot at
-S-EL2 too. U-Boot is compiled with the `CONFIG_ARMV8_SWITCH_TO_EL1` flag, which
-causes it to switch to S-EL1 before booting Linux.
-
-The bundled device tree is passed to U-Boot via register x0. U-Boot passes the
-same device tree to Linux via the UEFI system table.
-
-Power state management is provided by PSCI services in boot-wrapper-aarch64.
-Linux accesses the PSCI handler via HVC calls to S-EL2. U-Boot has been patched
-to prevent it from overriding the exception vector at S-EL2. The PSCI handler
-memory region is added to a `/memreserve/` node in the device tree.
-
-Please note that the final firmware architecture for the fvp-baser-aemv8r64 is
-not yet stabilized. The patches in this layer are provided for development and
-evaluation purposes only, and should not be used in production firmware.
-
-Quick start: Howto Build and Run
---------------------------------
-
-### Host environment setup
-The following instructions have been tested on hosts running Ubuntu 18.04 and
-Ubuntu 20.04.
-Install the required packages for the build host:
-https://docs.yoctoproject.org/singleindex.html#required-packages-for-the-build-host
-
-Kas is a setup tool for bitbake based projects. The minimal supported version
-is 3.0, install it like so:
-
- pip3 install --user --upgrade kas
-
-For more details on kas, see https://kas.readthedocs.io/.
-
-To build the images for the fvp-baser-aemv8r64 machine, you also need to accept
-the EULA at
-https://developer.arm.com/downloads/-/arm-ecosystem-fvps/eula
-by setting the following environment variable:
-
- ARM_FVP_EULA_ACCEPT="True"
-
-**Note:** The host machine should have at least 50 GBytes of free disk space
-for the next steps to work correctly.
-
-### Fetch sources
-To fetch and build the ongoing development of the software stack follow the
-instructions on this document.
-
-To fetch and build the version 1 (single core) find instructions at https://community.arm.com/developer/tools-software/oss-platforms/w/docs/633/release-1-single-core
-
-To fetch and build the version 2 (linux smp) find instructions at https://community.arm.com/developer/tools-software/oss-platforms/w/docs/634/release-2---smp
-
-Fetch the meta-arm repository into a build directory:
-
- mkdir -p ~/fvp-baser-aemv8r64-build
- cd ~/fvp-baser-aemv8r64-build
- git clone https://git.yoctoproject.org/git/meta-arm
-
-
-### Build
-Building with the standard Linux kernel:
-
- cd ~/fvp-baser-aemv8r64-build
- export ARM_FVP_EULA_ACCEPT="True"
- kas build meta-arm/kas/fvp-baser-aemv8r64-bsp.yml
-
-Building with the Real-Time Linux kernel (PREEMPT\_RT):
-
- cd ~/fvp-baser-aemv8r64-build
- export ARM_FVP_EULA_ACCEPT="True"
- kas build meta-arm/kas/fvp-baser-aemv8r64-rt-bsp.yml
-
-### Run
-To run an image after the build is done with the standard Linux kernel:
-
- kas shell --keep-config-unchanged \
- meta-arm/kas/fvp-baser-aemv8r64-bsp.yml \
- --command "../layers/meta-arm/scripts/runfvp \
- --console "
-
-To run an image after the build is done with the Real-Time Linux kernel
-(PREEMPT\_RT):
-
- kas shell --keep-config-unchanged \
- meta-arm/kas/fvp-baser-aemv8r64-rt-bsp.yml \
- --command "../layers/meta-arm/scripts/runfvp \
- --console "
-
-**Note:** The terminal console login is `root` without password.
-
-To finish the fvp emulation, you need to close the telnet session:
-
- - Escape to telnet console with ``ctrl+]``.
- - Run ``quit`` to close the session.
-
-### Networking
-The FVP is configured by default to use "user-mode networking", which simulates
-an IP router and DHCP server to avoid additional host dependencies and
-networking configuration. Outbound connections work automatically, e.g. by
-running:
-
- wget www.arm.com
-
-Inbound connections require an explicit port mapping from the host. By default,
-port 8022 on the host is mapped to port 22 on the FVP, so that the following
-command will connect to an ssh server running on the FVP:
-
- ssh root@localhost -p 8022
-
-Note that user-mode networking does not support ICMP, so `ping` will not work.
-For more information about user-mode networking, please see
-https://developer.arm.com/documentation/100964/1117/Introduction-to-Fast-Models/User-mode-networking?lang=en
-
-### File sharing between host and fvp
-It is possible to share a directory between the host machine and the fvp using
-the virtio P9 device component included in the kernel. To do so, create a
-directory to be mounted from the host machine:
-
- mkdir /path/to/host-mount-dir
-
-Then, add the following parameter containing the path to the directory when
-launching the model:
-
- --parameter 'bp.virtiop9device.root_path=/path/to/host-mount-dir'
-
-e.g. for the standard Linux kernel:
-
- kas shell --keep-config-unchanged \
- meta-arm/kas/fvp-baser-aemv8r64-bsp.yml \
- --command "../layers/meta-arm/scripts/runfvp \
- --console -- --parameter \
- 'bp.virtiop9device.root_path=/path/to/host-mount-dir'"
-
-Once you are logged into the fvp, the host directory can be mounted in a
-directory on the model using the following command:
-
- mount -t 9p -o trans=virtio,version=9p2000.L FM /path/to/fvp-mount-dir
-
-Devices supported in the kernel
--------------------------------
-
-- serial
-- virtio 9p
-- virtio disk
-- virtio network
-- virtio rng
-- watchdog
-- rtc
-
-Known Issues and Limitations
-----------------------------
-
-- Only PSCI CPU\_ON and CPU\_OFF functions are supported
-- Linux kernel does not support booting from secure EL2 on Armv8-R AArch64
-- Linux KVM does not support Armv8-R AArch64
-- Device DMA memory cache-coherence issue: the FVP `cache_state_modelled`
- parameter will affect the cache coherence behavior of peripherals’ DMA. When
- users set `cache_state_modelled=1`, they also have to set
- `cci400.force_on_from_start=1` to force the FVP to enable snooping on upstream
- ports.
-
-Change Log
-----------
-- Enabled the ability for U-Boot to apply device tree overlays
-- Fixed bug in U-Boot that caused changes to the `memory` node in the device
- tree to be ignored.
-- Added boot-wrapper-aarch64 support for booting SMP payloads at S-EL2.
-- Enabled testimage support by default.
-- Added virtio\_rng to improve random number generation.
-- Added U-Boot v2022.01 for UEFI support.
-- Updated Linux kernel version from 5.14 to 5.15 for both standard and
- Real-Time (PREEMPT\_RT) builds.
-- Updated boot-wrapper-aarch64 revision and added support for booting U-Boot.
-- Included boot-wrapper-aarch64 PSCI services in `/memreserve/` region.
-- Fixed the counter frequency initialization in boot-wrapper-aarch64.
-- Configured the FVP to use the default RAM size of 4 Gb
-- Fixed PL011 and SP805 register sizes in the device tree.
-- Added virtio\_net User Networking mode by default and removed instructions
- about tap networking setup.
-- Updated Linux kernel version from 5.10 to 5.14 for both standard and
- Real-Time (PREEMPT\_RT) builds.
-- Enabled SMP support via boot-wrapper-aarch64 providing the PSCI CPU\_ON and
- CPU\_OFF functions.
-- Introduced Armv8-R64 compiler flags.
-- Added Linux PREEMPT\_RT support via linux-yocto-rt-5.10.
-- Added support for file sharing with the host machine using Virtio P9.
-- Added support for runfvp.
-- Added performance event support (PMU) in the Linux device tree.
-- Introduced the fvp-baser-aemv8r64 machine and its BSP composed of
- boot-wrapper-aarch64 and linux-yocto-5.10 supporting serial, virtio disk,
- virtio network, watchdog and rtc.