nuttx/boards/arm64/fvp-v8r/fvp-armv8r
qinwei1 d2d954f691 arm64: ARMv8-r(Cortex-R82) support( add FVP platform )
Summary:
   Adding virtual evaluate platform FVP. This FVP board configuration
will be used to emulate generic ARM64v8-R (Cotex-R82)series hardware
platform and provide support for these devices:

 - GICv3 interrupt controllers for ARMv8-r
 - PL011 UART controller(FVP)

Note:
1. ostest is PASSED at fvp ( single core and SMP)
2. the FVP tools can be download from ARM site, please check FVP
  board readme.txt

TODO: merge PL011 UART driver to common place

Signed-off-by: qinwei1 <qinwei1@xiaomi.com>
2023-03-02 13:33:15 +08:00
..
configs arm64: ARMv8-r(Cortex-R82) support( add FVP platform ) 2023-03-02 13:33:15 +08:00
include arm64: ARMv8-r(Cortex-R82) support( add FVP platform ) 2023-03-02 13:33:15 +08:00
scripts arm64: ARMv8-r(Cortex-R82) support( add FVP platform ) 2023-03-02 13:33:15 +08:00
src arm64: ARMv8-r(Cortex-R82) support( add FVP platform ) 2023-03-02 13:33:15 +08:00
Kconfig arm64: ARMv8-r(Cortex-R82) support( add FVP platform ) 2023-03-02 13:33:15 +08:00
README.txt arm64: ARMv8-r(Cortex-R82) support( add FVP platform ) 2023-03-02 13:33:15 +08:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

README.txt
==========

This board configuration will use FVP_BaseR_AEMv8R to emulate
generic ARM64v8-R (Cotex-R82) series hardware platform and
provides support for these devices:

 - GICv3 interrupt controllers for ARMv8-r
 - PL011 UART controller(FVP)

Contents
========
  - Getting Started
  - Status
  - Platform Features
  - References

Getting Started
===============

1. Compile Toolchain
    The FVP platform using same Compiler like qemu, read the following
  file for How to get the Tool:
  https://github.com/apache/nuttx/tree/master/boards/arm64/qemu/qemu-armv8a

Note:
1. My host environment is Ubuntu 22.04.1 LTS, Ubuntu 18.04 will work too
2. The newest GNU toolchain is 12.2, available from:
   https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads


2. Getting Armv8-R AEM FVP
   The Armv8-R AEM FVP is a free of charge Armv8-R Fixed Virtual Platform.
   It supports the latest Armv8-R feature set. we can get it from:
   https://developer.arm.com/downloads/-/arm-ecosystem-models

   Please select to download Armv8-R AEM FVP product, extract the tool package
   the FVP tool is locate at:
   AEMv8R_FVP/AEMv8R_base_pkg/models/Linux64_GCC-9.3/FVP_BaseR_AEMv8R

3. Configuring and building
  3.1 Single Core
   Configuring NuttX and compile:
   $ ./tools/configure.sh -l fvp-armv8r:nsh
   $ make

  3.2 SMP
   Configuring NuttX and compile:
   $ ./tools/configure.sh -l fvp-armv8r:nsh_smp
   $ make

3. Running
  Single Core
  $ AEMv8R_FVP/AEMv8R_base_pkg/models/Linux64_GCC-9.3/FVP_BaseR_AEMv8R \
           -f boards/arm64/fvp-v8r/fvp-armv8r/scripts/fvp_cfg.txt \
           -a ./nuttx
  SMP
  $ AEMv8R_FVP/AEMv8R_base_pkg/models/Linux64_GCC-9.3/FVP_BaseR_AEMv8R \
           -f boards/arm64/fvp-v8r/fvp-armv8r/scripts/fvp_cfg_smp.txt \
           -a ./nuttx

Status
======

2023-2-18:
1. Release the frist version for ARMv8-R, Single Core and SMP is supported
   OS test is passed.

Platform Features
=================

The following hardware features are supported:
+--------------+------------+----------------------+
| Interface    | Controller | Driver/Component     |
+==============+============+======================+
| GICv3        | on-chip    | interrupt controller |
+--------------+------------+----------------------+
| PL011 UART   | on-chip    | serial port          |
+--------------+------------+----------------------+
| ARM TIMER    | on-chip    | system clock         |
+--------------+------------+----------------------+

References
===========

1. (ID050815) ARM® Cortex®-A Series - Programmers Guide for ARMv8-A
2. (ID020222) Arm® Architecture Reference Manual - for A profile architecture
3. (ARM062-948681440-3280) Armv8-A Instruction Set Architecture
4. AArch64 Exception and Interrupt Handling
5. AArch64 Programmer's Guides Generic Timer
6. Arm Generic Interrupt Controller v3 and v4 Overview
7. Arm® Generic Interrupt Controller Architecture Specification GIC architecture version 3 and version 4
8. (DEN0022D.b) Arm Power State Coordination Interface Platform Design Document
9. Arm® Architecture Reference Manual Supplement, Armv8, for R-profile AArch64 architecture,
   ARM DDI 0600B.a (ID062922)
10.Arm® Cortex®-R82 Processor Technical Reference Manual, Revision: r0p2