Skip to content

Commit d0cbf79

Browse files
committed
Tech review RD-V3 LP
1 parent fa4fc0d commit d0cbf79

6 files changed

Lines changed: 64 additions & 53 deletions

File tree

content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/1_introduction_rdv3.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Introducing the Arm RD‑V3 Platform
2+
title: Learn about the Arm RD‑V3 Platform
33
weight: 2
44

55
### FIXED, DO NOT MODIFY
@@ -8,7 +8,7 @@ layout: learningpathall
88

99
## Introduction to the Arm RD‑V3 Platform
1010

11-
This module introduces the Arm [Neoverse CSSV3](https://www.arm.com/products/neoverse-compute-subsystems/css-v3) architecture and the RD‑V3 [Reference Design Platform Software](https://neoverse-reference-design.docs.arm.com/en/latest/index.html) that implements it. You'll learn how these components enable scalable, server-class system design, and how to simulate and validate the full firmware stack using Fixed Virtual Platforms (FVP)well before hardware is available.
11+
In this section, you will learn about the Arm [Neoverse CSS V3](https://www.arm.com/products/neoverse-compute-subsystems/css-v3) subsystem and the RD‑V3 [Reference Design Platform Software](https://neoverse-reference-design.docs.arm.com/en/latest/index.html) that implements it. You'll learn how these components enable scalable, server-class system design, and how to simulate and validate the full firmware stack using Fixed Virtual Platforms (FVP), well before hardware is available.
1212

1313
Arm Neoverse is designed to meet the demanding requirements of data center and edge computing, delivering high performance and efficiency. Widely adopted in servers, networking, and edge devices, the Neoverse architecture provides a solid foundation for modern infrastructure.
1414

@@ -56,9 +56,9 @@ Here is the Neoverse Reference Design Platform [Software Stack](https://neoverse
5656

5757
### Develop and Validate Without Hardware
5858

59-
In traditional development workflows, system validation cannot begin until silicon is availableoften introducing risk and delay.
59+
In traditional development workflows, system validation cannot begin until silicon is available, often introducing risk and delay.
6060

61-
To address this, Arm provides the Fixed Virtual Platform ([FVP](https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms)) —a complete simulations model that emulates full Arm SoC behavior on a host machine. The CSS‑V3 platform is available in multiple FVP configurations, allowing developers to select the model that best fits their specific development and validation needs.
61+
To address this, Arm provides Fixed Virtual Platforms ([FVP](https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms)), complete simulations model that emulates Arm SoC behavior on a host machine. The CSS‑V3 platform is available in multiple FVP configurations, allowing developers to select the model that best fits their specific development and validation needs.
6262

6363

6464
Key Capabilities of FVP:
@@ -67,11 +67,11 @@ Key Capabilities of FVP:
6767
* Compatible with TF‑A, UEFI, GRUB, and Linux kernel images
6868
* Provides boot logs, trace outputs, and interrupt event visibility for debugging
6969

70-
FVP enables developers to verify boot sequences, debug firmware handoffs, and even simulate RSE behaviors—all before first silicon.
70+
FVP enables developers to verify boot sequences, debug firmware handoffs, and even simulate RSE (Runtime Security Engine) behaviors, all pre-silicon.
7171

7272
### Comparing different version of RD-V3 FVP
7373

74-
To support different use cases and levels of platform complexity, Arm offers three virtual models based on the CSS‑v3 architecture: RD‑V3, RD-V3-Cfg1, and RD‑V3‑R1. While they share a common foundation, they differ in chip count, system topology, and simulation flexibility.
74+
To support different use cases and levels of platform complexity, Arm offers three virtual models based on the CSS V3 architecture: RD‑V3, RD-V3-Cfg1, and RD‑V3‑R1. While they share a common foundation, they differ in chip count, system topology, and simulation flexibility.
7575

7676
| Model | Description | Recommended Use Cases |
7777
|-------------|------------------------------------------------------------------|--------------------------------------------------------------------|
@@ -81,5 +81,5 @@ To support different use cases and levels of platform complexity, Arm offers thr
8181
| CFG2 | Quad-chip platform with 4×32-core Poseidon-V CPUs connected via CCG links | Designed for advanced multi-chip validation, CML-based coherence, and high-performance platform scaling |
8282

8383

84-
This Learning Path begins with RD‑V3 as the primary platform for foundational exercises, guiding you through the process of building the software stack and simulating it on FVP to verify the boot sequence.
84+
In this Learning Path you will use RD‑V3 as the primary platform for foundational exercises, guiding you through the process of building the software stack and simulating it on an FVP to verify the boot sequence.
8585
In later modules, you’ll transition to RD‑V3‑R1 to more advanced system simulation, multi-node bring-up, and firmware coordination across components like MCP and SCP.

content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/2_rdv3_bootseq.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ layout: learningpathall
88

99
## Firmware Stack Overview and Boot Sequence Coordination
1010

11-
To ensure the platform transitions securely and reliably from power-on to operating system launch, this module introduces the roles and interactions of each firmware component within the RD‑V3 boot process.
12-
You’ll learn how each module contributes to system initialization and how control is systematically handed off across the boot chain.
11+
To ensure the platform transitions securely and reliably from power-on to operating system launch, this section introduces the roles and interactions of each firmware component within the RD‑V3 boot process.
12+
You’ll learn how each component contributes to system initialization and how control is systematically handed off across the boot chain.
1313

1414

15-
## How the System Wakes Up
15+
## How the System Boots Up
1616

17-
In the RD‑V3 platform, each subsystem—such as TF‑A, RSE, SCP, LCP, and UEFI—operates independently but cooperates through a well-defined sequence.
18-
Each module is delivered as a separate firmware image, yet they coordinate tightly through a structured boot flow and inter-processor signaling.
17+
In the RD‑V3 platform, each firmware component—such as TF‑A, RSE, SCP, LCP, and UEFI—operates independently but functions together through a well-defined sequence.
18+
Each component is delivered as a separate firmware image, yet they coordinate tightly through a structured boot flow and inter-processor signaling.
1919

2020
The following diagram from the [Neoverse Reference Design Documentation](https://neoverse-reference-design.docs.arm.com/en/latest/shared/boot_flow/rdv3_single_chip.html?highlight=boot) illustrates the progression of component activation from initial reset to OS handoff:
2121

@@ -149,12 +149,12 @@ GRUB then selects and boots the Linux kernel. Unlike the previous dependency arr
149149
This layered approach supports modular testing, independent debugging, and early-stage simulation—all essential for secure and robust platform bring-up.
150150

151151

152-
In this module, you have:
152+
In this section, you have:
153153

154154
* Explored the full boot sequence of the RD‑V3 platform, from power-on to Linux login
155155
* Understood the responsibilities of key firmware components such as TF‑A, RSE, SCP, LCP, and UEFI
156156
* Learned how secure boot is enforced and how each module hands off control to the next
157157
* Interpreted boot dependencies using FVP simulation and UART logs
158158

159-
With the full boot flow and firmware responsibilities now clear, you're ready to apply these insights.
160-
In the next module, you'll fetch the RD‑V3 codebase, configure your workspace, and begin building your own firmware stack for simulation.
159+
With an understanding of full boot sequence and firmware responsibilities, you're ready to apply these insights.
160+
In the next section, you'll fetch the RD‑V3 codebase and start building the firmware stack for simulation.

content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/3_rdv3_sw_build.md

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
---
2-
title: Build the RD‑V3 Reference Platform
2+
title: Build the RD‑V3 Reference Platform Software Stack
33
weight: 4
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
8-
## Building the RD‑V3 Reference Platform
8+
## Building the RD‑V3 Reference Platform Software Stack
9+
10+
In this module, you’ll set up your development environment on any Arm-based server and build the firmware stack required to simulate the RD‑V3 platform. This Learning Path was tested on an AWS `m7g.4xlarge` Arm-based instance running Ubuntu 22.04
911

10-
In this module, you’ll set up your development environment on Arm server and build the firmware stack required to simulate the RD‑V3 platform.
1112

1213
### Step 1: Prepare the Development Environment
1314

@@ -48,15 +49,15 @@ For this session, we will use `pinned-rdv3.xml` and `RD-INFRA-2025.07.03`.
4849
cd ~
4950
mkdir rdv3
5051
cd rdv3
51-
# Initialize the source tree
52+
```
53+
Initialize and sync the source code tree:
54+
```bash
5255
repo init -u https://git.gitlab.arm.com/infra-solutions/reference-design/infra-refdesign-manifests.git -m pinned-rdv3.xml -b refs/tags/RD-INFRA-2025.07.03 --depth=1
53-
54-
# Sync the full source code
5556
repo sync -c -j $(nproc) --fetch-submodules --force-sync --no-clone-bundle --retry-fetches=5
5657
```
5758

58-
Once synced, you will see the message like:
59-
```
59+
Once synced, the output should look like:
60+
```output
6061
Syncing: 95% (19/20), done in 2m36.453s
6162
Syncing: 100% (83/83) 2:52 | 1 job | 0:01 platsw/edk2-platforms @ uefi/edk2/edk2-platformsrepo sync has finished successfully.
6263
```
@@ -81,7 +82,7 @@ There are two supported methods for building the reference firmware stack: **hos
8182
- The **host-based** build installs all required dependencies directly on your local system and executes the build natively.
8283
- The **container-based** build runs the compilation process inside a pre-configured Docker image, ensuring consistent results and isolation from host environment issues.
8384

84-
In this Learning Path, we will use the **container-based** approach.
85+
In this Learning Path, you will use the **container-based** approach.
8586

8687
The container image is designed to use the source directory from the host (`~/rdv3`) and perform the build process inside the container. Make sure Docker is installed on your Linux machine. You can follow this [installation guide](https://learn.arm.com/install-guides/docker/).
8788

@@ -103,9 +104,9 @@ To build the container image:
103104
./container.sh build
104105
```
105106

106-
The build procedure may take a few minutes, depending on network bandwidth and CPU performance. On my AWS m7g.4xlarge instance, it took 250 seconds.
107+
The build procedure may take a few minutes, depending on network bandwidth and CPU performance. This Learning Path was tested on an AWS `m7g.4xlarge` instance, and the build took 250 seconds. The output from the build looks like:
107108

108-
```
109+
```output
109110
Building docker image: rdinfra-builder ...
110111
[+] Building 239.7s (19/19) FINISHED docker:default
111112
=> [internal] load build definition from rd-infra-arm64 0.0s
@@ -141,24 +142,29 @@ Building docker image: rdinfra-builder ...
141142
=> => naming to docker.io/library/rdinfra-builder 0.0s
142143
```
143144

144-
After the docker image build completes successfully, you can use `docker images` to find the build docker image called `rdinfra-builder`.
145-
145+
Verify the docker image build completed successfully:
146+
147+
```bash
148+
docker images
146149
```
150+
151+
You should see a docker image called `rdinfra-builder`:
152+
153+
```output
147154
REPOSITORY TAG IMAGE ID CREATED SIZE
148155
rdinfra-builder latest 3a395c5a0b60 4 minutes ago 8.12GB
149156
```
150157

151-
To quickly test the Docker image you just built, run the following command to enter it interactively:
158+
To quickly test the Docker image you just built, run the following command to enter the docker container interactively:
152159

153160
```bash
154-
cd ~/rdv3/container-scripts
155161
./container.sh -v ~/rdv3 run
156162
```
157163

158164
This script mounts your source directory (~/rdv3) into the container and opens a shell session at that location.
159165
Inside the container, you should see a prompt like this:
160166

161-
```
167+
```output
162168
Running docker image: rdinfra-builder ...
163169
To run a command as administrator (user "root"), use "sudo <command>".
164170
See "man sudo_root" for details.
@@ -169,7 +175,7 @@ your-username:hostname:/home/your-username/rdv3$
169175
You can explore the container environment if you wish, then type exit to return to the host system.
170176

171177

172-
### Step 4: Enter the Container and Build Firmware
178+
### Step 4: Build Firmware
173179

174180
Building the full firmware stack involves compiling several components and preparing them for simulation. Rather than running each step manually, you can use a single Docker command to automate the build and package phases.
175181

@@ -193,13 +199,16 @@ docker run --rm \
193199
./build-scripts/rdinfra/build-test-buildroot.sh -p rdv3 package"
194200
```
195201

196-
The build artifacts will be placed under `~/rdv3/output/rdv3/rdv3/`, where the last `rdv3` corresponds to the selected platform name.
202+
The build artifacts will be placed under `~/rdv3/output/rdv3/rdv3/`, where the last `rdv3` in the directory path corresponds to the selected platform name.
197203

198-
After a successful build, the following output artifacts will be generated under `~/rdv3/output/rdv3/rdv3/`
204+
After a successful build, inspect the artifacts generated under `~/rdv3/output/rdv3/rdv3/`
199205

200-
```
206+
```bash
201207
ls ~/rdv3/output/rdv3/rdv3 -al
208+
```
202209

210+
The directory contents should look like:
211+
```output
203212
total 7092
204213
drwxr-xr-x 2 ubuntu ubuntu 4096 Aug 12 13:15 .
205214
drwxr-xr-x 4 ubuntu ubuntu 4096 Aug 12 13:15 ..
@@ -220,6 +229,7 @@ lrwxrwxrwx 1 ubuntu ubuntu 48 Aug 12 13:15 tf_m_vm0_0.bin -> ../components/
220229
lrwxrwxrwx 1 ubuntu ubuntu 48 Aug 12 13:15 tf_m_vm1_0.bin -> ../components/arm/rse/neoverse_rd/rdv3/vm1_0.bin
221230
lrwxrwxrwx 1 ubuntu ubuntu 33 Aug 12 13:15 uefi.bin -> ../components/css-common/uefi.bin
222231
```
232+
Here's a reference of what each file refers to:
223233

224234
| Component | Output Files | Description |
225235
|----------------------|----------------------------------------------|-----------------------------|
@@ -234,7 +244,7 @@ lrwxrwxrwx 1 ubuntu ubuntu 33 Aug 12 13:15 uefi.bin -> ../components/css-co
234244

235245
You can also perform the build manually after entering the container:
236246

237-
In the container shell:
247+
Start your docker container. In your running container shell:
238248
```bash
239249
cd ~/rdv3
240250
./build-scripts/rdinfra/build-test-buildroot.sh -p rdv3 build
@@ -244,4 +254,4 @@ cd ~/rdv3
244254
This manual workflow is useful for debugging, partial builds, or making custom modifications to individual components.
245255

246256

247-
You’ve now successfully prepared and built the full RD‑V3 firmware stack. In the next module, you’ll install the matching FVP model and simulate the full boot sequencebringing the firmware to life in a virtual platform.
257+
You’ve now successfully prepared and built the full RD‑V3 firmware stack. In the next section, you’ll install the appropriate FVP and simulate the full boot sequence, bringing the firmware to life on a virtual platform.

content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/4_rdv3_on_fvp.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ weight: 5
66
layout: learningpathall
77
---
88

9-
## Simulating RD‑V3 with Arm FVP
9+
## Simulating RD‑V3 with an Arm FVP
1010

11-
In the previous module, you built the complete CSS‑V3 firmware stack.
12-
Now, you’ll use Arm Fixed Virtual Platform (FVP) to simulate the systemallowing you to verify the boot sequence without any physical silicon.
11+
In the previous section, you built the complete CSS‑V3 firmware stack.
12+
Now, you’ll use Arm Fixed Virtual Platform (FVP) to simulate the system, allowing you to verify the boot sequence without any physical silicon.
1313
This simulation brings up the full stack from BL1 to Linux shell using Buildroot.
1414

1515
### Step 1: Download and Install the FVP Model
@@ -20,7 +20,7 @@ For example, the **RD‑INFRA‑2025.07.03** release tag is designed to work wit
2020

2121
You can refer to the [RD-V3 Release Tags](https://neoverse-reference-design.docs.arm.com/en/latest/platforms/rdv3.html#release-tags) for a full list of release tags, corresponding FVP versions, and their associated release notes, which summarize changes and validated test cases.
2222

23-
Download the matching FVP binary for your selected release tag using the link provided in this course:
23+
Download the matching FVP binary for your selected release tag using the link provided:
2424

2525
```bash
2626
mkdir -p ~/fvp
@@ -31,17 +31,17 @@ tar -xvf FVP_RD_V3_11.29_35_Linux64_armv8l.tgz
3131
./FVP_RD_V3.sh
3232
```
3333

34-
The FVP installation may prompt you with a few questionschoosing the default options is sufficient for this learning path. By default, the FVP will be installed in `/home/ubuntu/FVP_RD_V3`.
34+
The FVP installation may prompt you with a few questions,choosing the default options is sufficient for this learning path. By default, the FVP will be installed in `/home/ubuntu/FVP_RD_V3`.
3535

3636
### Step 2: Remote Desktop Set Up
3737

3838
The RD‑V3 FVP model launches multiple UART consoles—each mapped to a separate terminal window for different subsystems (e.g., Neoverse V3, Cortex‑M55, Cortex‑M7, panel).
3939

4040
If you’re accessing the platform over SSH, these UART consoles can still be displayed, but network latency and graphical forwarding can severely degrade performance.
4141

42-
To interact with different UARTs more efficiently, we recommend installing a remote desktop environment using `XRDP`. This provides a smoother user experience when dealing with multiple terminal windows and system interactions.
42+
To interact with different UARTs more efficiently, it is recommend to install a remote desktop environment using `XRDP`. This provides a smoother user experience when dealing with multiple terminal windows and system interactions.
4343

44-
In AWS Ubuntu 22.04 instance, you need install required packages:
44+
You will need to install the required packages:
4545

4646

4747
```bash
@@ -50,7 +50,7 @@ sudo apt install -y ubuntu-desktop xrdp xfce4 xfce4-goodies pv xterm sshpass soc
5050
sudo systemctl enable --now xrdp
5151
```
5252

53-
To allow remote desktop connections, you need to open port 3389 (RDP) in your EC2 security group:
53+
To allow remote desktop connections, you need to open port 3389 (RDP) in your AWS EC2 security group:
5454
- Go to the EC2 Dashboard → Security Groups
5555
- Select the security group associated with your instance
5656
- Under the Inbound rules tab, click Edit inbound rules
@@ -70,13 +70,13 @@ To enable XRDP remote sessions, you need to switch to Xorg by modifying the GDM
7070
Open the `/etc/gdm3/custom.conf` in a text editor.
7171
Find the line:
7272

73-
```
73+
```output
7474
#WaylandEnable=false
7575
```
7676

7777
Uncomment it by removing the # so it becomes:
7878

79-
```
79+
```output
8080
WaylandEnable=false
8181
```
8282

0 commit comments

Comments
 (0)