arm64: Update readme.txt for FVP platform

Summary:

   Updating Readme.TXT for FVP platform.

Signed-off-by: qinwei1 <qinwei1@xiaomi.com>
This commit is contained in:
qinwei1 2023-03-04 23:02:31 +08:00 committed by Xiang Xiao
parent 1d88bceb79
commit e696e99d9a

View File

@ -24,9 +24,9 @@ Getting Started
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
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
@ -39,6 +39,24 @@ Note:
AEMv8R_FVP/AEMv8R_base_pkg/models/Linux64_GCC-9.3/FVP_BaseR_AEMv8R
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:
$ /home/qinwei/workdir/tools/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
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.1 Single Core
Configuring NuttX and compile:
$ ./tools/configure.sh -l fvp-armv8r:nsh
@ -49,15 +67,125 @@ Note:
$ ./tools/configure.sh -l fvp-armv8r:nsh_smp
$ make
3. Running
Single Core
4. Running
4.1 Single Core
Step1: Booting NuttX
$ 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
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
- Ready to Boot Primary CPU
- Boot from EL2
- Boot from EL1
- Boot to C runtime for OS Initialize
[ 0] (null): arm64_chip_boot: Main CPU 0x80000000
[ 0] (null): nx_start: Entry
[ 0] (null): up_allocate_heap: heap_start=0x0x3c000, heap_size=0x7fc4000
[ 0] Idle Task: gic_validate_dist_version: GICv3 version detect
[ 0] Idle Task: gic_validate_dist_version: GICD_TYPER = 0x490067
[ 0] Idle Task: gic_validate_dist_version: 224 SPIs implemented
[ 0] Idle Task: gic_validate_dist_version: 0 Extended SPIs implemented
[ 0] Idle Task: gic_validate_dist_version: Distributor has no Range Selector support
[ 0] Idle Task: gic_validate_dist_version: MBIs is present, But No support
[ 0] Idle Task: gic_validate_redist_version: GICR_TYPER = 0x0
[ 0] Idle Task: gic_validate_redist_version: 16 PPIs implemented
[ 0] Idle Task: gic_validate_redist_version: no VLPI support, no direct LPI support
[ 0] Idle Task: up_timer_initialize: up_timer_initialize: cp15 timer(s) running at 100.00MHz, cycle 100000
[ 0] Idle Task: uart_register: Registering /dev/console
[ 0] Idle Task: uart_register: Registering /dev/ttyS0
[ 0] Idle Task: work_start_highpri: Starting high-priority kernel worker thread(s)
[ 0] Idle Task: nx_start_application: Starting init thread
[ 0] Idle Task: task_spawn: name=nsh_main entry=0xa590 file_actions=0 attr=0x3bf88 argv=0x3bf80
nsh: mkfatfs: command not found
NuttShell (NSH) NuttX-12.0.0
nsh> [ 0] Idle Task: nx_start: CPU0: Beginning Idle Loop
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.0.0
nsh>
4.2 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
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
- Ready to Boot Primary CPU
- Boot from EL2
- Boot from EL1
- Boot to C runtime for OS Initialize
[CPU0] [ 0] (null): arm64_chip_boot: Main CPU 0x80000000
[CPU0] [ 0] (null): nx_start: Entry
[CPU0] [ 0] (null): up_allocate_heap: heap_start=0x0x4a000, heap_size=0x7fb6000
[CPU0] [ 0] CPU0 IDLE: gic_validate_dist_version: GICv3 version detect
[CPU0] [ 0] CPU0 IDLE: gic_validate_dist_version: GICD_TYPER = 0x490067
[CPU0] [ 0] CPU0 IDLE: gic_validate_dist_version: 224 SPIs implemented
[CPU0] [ 0] CPU0 IDLE: gic_validate_dist_version: 0 Extended SPIs implemented
[CPU0] [ 0] CPU0 IDLE: gic_validate_dist_version: Distributor has no Range Selector support
[CPU0] [ 0] CPU0 IDLE: gic_validate_dist_version: MBIs is present, But No support
[CPU0] [ 0] CPU0 IDLE: gic_validate_redist_version: GICR_TYPER = 0x0
[CPU0] [ 0] CPU0 IDLE: gic_validate_redist_version: 16 PPIs implemented
[CPU0] [ 0] CPU0 IDLE: gic_validate_redist_version: no VLPI support, no direct LPI support
[CPU0] [ 0] CPU0 IDLE: up_timer_initialize: up_timer_initialize: cp15 timer(s) running at 100.00MHz, cycle 100000
[CPU0] [ 0] CPU0 IDLE: uart_register: Registering /dev/console
[CPU0] [ 0] CPU0 IDLE: uart_register: Registering /dev/ttyS0
- Ready to Boot Second CPU
- Boot from EL2
- Boot from EL1
- Boot to C runtime for OS Initialize
[CPU1] [ 1] CPU1 IDLE: gic_validate_redist_version: GICR_TYPER = 0x100000100
[CPU1] [ 1] CPU1 IDLE: gic_validate_redist_version: 16 PPIs implemented
[CPU1] [ 1] CPU1 IDLE: gic_validate_redist_version: no VLPI support, no direct LPI support
[CPU1] [ 1] CPU1 IDLE: nx_idle_trampoline: CPU1: Beginning Idle Loop
- Ready to Boot Second CPU
- Boot from EL2
- Boot from EL1
- Boot to C runtime for OS Initialize
[CPU2] [ 2] CPU2 IDLE: gic_validate_redist_version: GICR_TYPER = 0x200000200
[CPU2] [ 2] CPU2 IDLE: gic_validate_redist_version: 16 PPIs implemented
[CPU2] [ 2] CPU2 IDLE: gic_validate_redist_version: no VLPI support, no direct LPI support
[CPU2] [ 2] CPU2 IDLE: nx_idle_trampoline: CPU2: Beginning Idle Loop
- Ready to Boot Second CPU
- Boot from EL2
- Boot from EL1
- Boot to C runtime for OS Initialize
[CPU3] [ 3] CPU3 IDLE: gic_validate_redist_version: GICR_TYPER = 0x300000310
[CPU3] [ 3] CPU3 IDLE: gic_validate_redist_version: 16 PPIs implemented
[CPU3] [ 3] CPU3 IDLE: gic_validate_redist_version: no VLPI support, no direct LPI support
[CPU3] [ 3] CPU3 IDLE: nx_idle_trampoline: CPU3: Beginning Idle Loop
[CPU0] [ 0] CPU0 IDLE: work_start_highpri: Starting high-priority kernel worker thread(s)
[CPU0] [ 0] CPU0 IDLE: nx_start_application: Starting init thread
[CPU0] [ 0] CPU0 IDLE: task_spawn: name=nsh_main entry=0xc41c file_actions=0 attr=0x43f68 argv=0x43f60
[CPU0] [ 0] CPU0 IDLE: nx_start: CPU0: Beginning Idle Loop
nsh: mkfatfs: command not found
NuttShell (NSH) NuttX-12.0.0
nsh>
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.0.0
nsh>
Status
======