README.txt
==========
This board configuration will use FVP_BaseR_AEMv8R to emulate
generic ARMv8-R (Cortex-R52) 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
I recommend to use the docker based CI image
<nuttx>/tools/ci/docker
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:
<path_to>/AEMv8R_FVP/AEMv8R_base_pkg/models/Linux64_GCC-9.3/FVP_BaseR_AEMv8R
Version 11.20 is tested fine.
3. Configuring and building
3.1 FVP Overview
Just like QEMU, 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 FVP tools simulate 4 serial port and implement them to wait on local socket port:
$ <path_to>/AEMv8R_FVP/AEMv8R_base_pkg/models/Linux64_GCC-9.3/FVP_BaseR_AEMv8R \
-f boards/arm/fvp-v8r-aarch32/fvp-armv8r/scripts/fvp_cfg.txt -a ./nuttx
terminal_0: Listening for serial connection on port 5000
terminal_1: Listening for serial connection on port 5001
terminal_2: Listening for serial connection on port 5002
terminal_3: Listening for serial connection on port 5003
FVP has four UART port and I choice UART1 as tty, so just telnet to port 5001
will enter nsh:
telnet localhost 5001
3.2 Single Core
Configuring NuttX and compile:
$ ./tools/configure.sh -l fvp-armv8r-aarch32:nsh
$ make
4. Running
4.1 Single Core
Step1: Booting NuttX
$ AEMv8R_FVP/AEMv8R_base_pkg/models/Linux64_GCC-9.3/FVP_BaseR_AEMv8R \
-f boards/arm/fvp-v8r-aarch32/fvp-armv8r-aarch32/scripts/fvp_cfg.txt \
-a ./nuttx
terminal_0: Listening for serial connection on port 5000
terminal_1: Listening for serial connection on port 5001
terminal_2: Listening for serial connection on port 5002
terminal_3: Listening for serial connection on port 5003
Step2: telnet to UART1
Starting another terminal and enter:
$ telnet localhost 5001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
nsh: mkfatfs: command not found
NuttShell (NSH) NuttX-12.1.0
nsh>
Status
======
2023-5-31:
1. Initial version for ARMv8-R AARCH32, Single Core, noMPU, noFPU, noCache using GCC Toolchain
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 |
+--------------+------------+----------------------+