Skip to content

Commit 5cefa97

Browse files
committed
First review of FVP Learning Path
1 parent 05795e4 commit 5cefa97

File tree

7 files changed

+162
-186
lines changed

7 files changed

+162
-186
lines changed

content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/1-Intro.md

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

9-
Arm Ecosystem Fixed Virtual Platforms (FVPs) model hardware subsystems target different market segments and applications.
9+
Arm Ecosystem Fixed Virtual Platforms (FVPs) model hardware subsystems and target different market segments and applications.
1010

11-
FVPs use binary translation technology to deliver fast, functional simulations of Arm-based systems, including processor, memory, and peripherals. They implement a programmer's view suitable for software development and enable execution of full software stacks, providing a widely available platform ahead of silicon.
11+
FVPs use binary translation technology to deliver fast, functional simulations of Arm-based systems, including processor, memory, and peripherals. They implement a programmer's view suitable for software development and enable execution of full software stacks, providing an available platform to run software before silicon is available.
1212

13-
Arm provides different types of FVPs. There are several freely available, pre-built Armv8‑A FVPs for download from [Arm Ecosystem Models](https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms) on Arm Developer website. You can use these FVPs without a license. For example, the AEMv8-A Base Platform RevC FVP is freely available, and it supports the latest Armv8‑A architecture versions up to v8.7 and Armv9-A.
13+
Arm provides two different types of FVPs.
1414

15-
The [Arm reference software stack](https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/aemfvp-a/user-guide.rst) is based on the above RevC model. However, some Armv8 FVPs with a fixed number of cores are replaced by FVPs with a configurable number of cores, for example:
15+
## Arm Ecosystem FVPs
1616

17-
* FVP_Base_Cortex-A55x4
18-
* FVP_Base_Cortex-A78x4
19-
* FVP_Base_Cortex-X1x4
20-
* FVP_Base_Cortex-X2x4
21-
* FVP_Base_Cortex-A78AEx2
22-
* FVP_Base_Cortex-A76x4
23-
* FVP_Base_Neoverse-N2x1
24-
* FVP_Base_Neoverse-N1x4
25-
* FVP_Base_Cortex-A510x4
26-
* FVP_Base_Cortex-A53x4
27-
* FVP_Base_Cortex-A76x4
17+
There are several freely available, pre-built Armv8‑A FVPs for download from [Arm Ecosystem Models](https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms#Downloads) on the Arm Developer website. You can use these FVPs without a license.
2818

29-
### Set up the environment
19+
There are multiple categories of Ecosystem FVPs such as:
20+
- Architecture FVPs
21+
- Automotive FVPs
22+
- Infrastructure FVPs
23+
- IoT FVPs
24+
25+
For example, in the architecture category, the AEMv8-A Base Platform RevC FVP is freely available, and it supports the latest Armv8‑A architecture versions up to v8.7 and Armv9-A.
26+
27+
The [Arm reference software stack](https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/aemfvp-a/user-guide.rst) is based on the above RevC model.
3028

31-
The [Arm reference software](https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/aemfvp-a/user-guide.rst) stack is the codebase. Follow the [Armv-A Base AEM FVP Platform Software User Guide](https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/aemfvp-a/user-guide.rst) to set up the environment, download the software stack, and get the toolchain.
29+
## Arm Base FVPs specific CPU types
3230

33-
he FVP_Base_Cortex-\<xxx> FVP is available for you to build and run Linux host environments. Contact Arm Support [[email protected]](mailto:[email protected]) to request access.
31+
Arm Base Armv8-A FVPs with specific CPU types are configured with a fixed number of cores. These are also called CPU FVPs because they specify the CPU types instead of the architecture version.
3432

35-
This document supports running the software stack on the following FVPs:
33+
The FVP_Base_Cortex-\<xxx> FVP is available for you to build and run on Linux computers. Contact Arm Support [[email protected]](mailto:[email protected]) to request access.
34+
35+
You can use any of the FVPs listed below to run the reference software stack:
3636

3737
* FVP_Base_Cortex-A510x4
3838
* FVP_Base_Cortex-A510x4+Cortex-A710x4
@@ -68,9 +68,9 @@ This document supports running the software stack on the following FVPs:
6868
* FVP_Base_Neoverse-E1x4
6969
* FVP_Base_Neoverse-N1x4
7070

71-
However, this is not a full list. This blog might apply to more FVP platforms, but no test is done for these platforms, for example:
71+
### Set up the environment
72+
73+
This Learning Path uses the [Arm reference software](https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/aemfvp-a/user-guide.rst) stack.
74+
75+
Follow the [Armv-A Base AEM FVP Platform Software User Guide](https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/aemfvp-a/user-guide.rst) to set up the environment, download the software stack, and get the toolchain.
7276

73-
* FVP_Base_Cortex-A55x1
74-
* FVP_Base_Cortex-A55x2
75-
* FVP_Base_Cortex-A55x1+Cortex-A75x1
76-
* FVP_Base_Cortex-A55x4+Cortex-A76x2

content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/2-Setup.md

Lines changed: 0 additions & 54 deletions
This file was deleted.

content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/3-Steps.md

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,35 @@
11
---
22
title: Use TF-A extra build options to build cpu_ops into images
3-
weight: 4
3+
weight: 3
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
88

9-
### 1. Why build cpu_ops into images
9+
## What are cpu_ops?
10+
11+
In the context of Arm Trusted Firmware-A (TF-A), cpu_ops refers to a framework that defines CPU-specific operations essential for managing power states and initialization sequences. This framework is particularly crucial for implementing the Power State Coordination Interface (PSCI), which standardizes power management in Arm systems.  
12+
13+
## What is the purpose of cpu_ops?
14+
15+
The cpu_ops framework provides a set of function pointers tailored to specific CPU architectures. These functions handle operations such as:
16+
• Reset Handling: Executing CPU-specific reset sequences.
17+
• Power Management: Managing CPU power-down and power-up sequences.
18+
• Errata Workarounds: Applying necessary workarounds for known CPU errata during initialization.
19+
20+
By abstracting these operations, TF-A can support multiple CPU types seamlessly, allowing for a modular and maintainable codebase.
21+
22+
## Why build cpu_ops into images?
1023

1124
If you build the software without any modification, you might get the following error message after running the software stack:
1225

13-
```
26+
```console
1427
ASSERT: File lib/cpus/aarch64/cpu_helpers.S Line 00035
1528
```
1629

17-
The previous error message is issued because the TF-A does not build the cpu_ops into the images:
30+
The previous error message occurs because the TF-A does not build the cpu_ops into the images:
1831

19-
```
32+
```console
2033
31 /* Get the matching cpu_ops pointer */
2134

2235
32 bl get_cpu_ops_ptr
@@ -33,7 +46,7 @@ The previous error message is issued because the TF-A does not build the cpu_ops
3346

3447
The cpu_ops are defined in the source file as follows:
3548

36-
```
49+
```console
3750
lib/cpus/aarch64/cortex_a510.S
3851
lib/cpus/aarch64/cortex_a53.S
3952
lib/cpus/aarch64/cortex_a55.S
@@ -46,9 +59,11 @@ lib/cpus/aarch64/cortex_a72.S
4659
lib/cpus/aarch64/cortex_a73.S
4760
```
4861

49-
Check the Makefile (plat/arm/board/fvp/platform.mk) of the FVP platform. You can find the following code:
62+
Check the Makefile (plat/arm/board/fvp/platform.mk) of the FVP platform.
5063

51-
```
64+
Find the following code:
65+
66+
```console
5267
ifeq (${HW_ASSISTED_COHERENCY}, 0)
5368
# Cores used without DSU
5469
FVP_CPU_LIBS += lib/cpus/aarch64/cortex_a35.S \
@@ -89,9 +104,9 @@ else
89104
endif
90105
```
91106

92-
HW_ASSISTED_COHERENCY = 0 and CTX_INCLUDE_AARCH32_REGS =1 are default build options.
107+
Default build options are `HW_ASSISTED_COHERENCY = 0` and `CTX_INCLUDE_AARCH32_REGS = 1`.
93108

94-
### 2. Required build options
109+
### What are the required build options to fix the problem?
95110

96111
Building the cpu_ops into the TF-A image requires different build options, depending on the CPU type. For example, different platforms require different build options when building the TF-A:
97112

@@ -101,42 +116,35 @@ Building the cpu_ops into the TF-A image requires different build options, depen
101116

102117
Note: The build option USE_COHERENT_MEM cannot be enabled with HW_ASSISTED_COHERENCY=1.
103118

104-
105-
### 3. Steps to build cpu_ops into the TF-A image
119+
### What are the steps to build cpu_ops into the TF-A image?
106120

107121
Perform the following steps to build cpu_ops into the TF-A image:
108122

109-
3.1 Modify the following build script to add build options. The [Arm reference software stack](https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/aemfvp-a/user-guide.rst) uses the [build-scripts](https://gitlab.arm.com/arm-reference-solutions/build-scripts) to build the TF-A.
123+
Modify the following build script to add build options. The [Arm reference software stack](https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/aemfvp-a/user-guide.rst) uses the [build-scripts](https://gitlab.arm.com/arm-reference-solutions/build-scripts) to build the TF-A.
110124

111-
```
112-
build-scripts/ configs/aemfvp-a/aemfvp-a
113-
```
114-
115-
3.2 Add TF-A build options, depending on the CPU type. For example:
125+
Add TF-A build options, depending on the CPU type. For example:
116126

117127
* For A55 CPU FVP, add the following line:
118128

119-
```
129+
```console
120130
ARM_TF_BUILD_FLAGS="$ARM_TF_BUILD_FLAGS HW_ASSISTED_COHERENCY=1 USE_COHERENT_MEM=0 "
121131
```
122132

123133
* For A78 CPU FVP, add the following line:
124134

125-
```
135+
```console
126136
ARM_TF_BUILD_FLAGS="$ARM_TF_BUILD_FLAGS HW_ASSISTED_COHERENCY=1 USE_COHERENT_MEM=0 CTX_INCLUDE_AARCH32_REGS=0"
127137
```
128138

129-
3.3 Rebuild the TF-A by using the following commands:
139+
Rebuild the TF-A by using the following commands:
130140

131-
```
141+
```console
132142
./build-scripts/build-arm-tf.sh -p aemfvp-a -f busybox clean
133-
134143
./build-scripts/build-arm-tf.sh -p aemfvp-a -f busybox build
135144
```
136145

137-
3.4 Package the built TF-A into the BusyBox disk image by using the following command:
146+
Package the built TF-A into the BusyBox disk image by using the following command:
138147

139-
```
148+
```console
140149
./build-scripts/aemfvp-a/build-test-busybox.sh -p aemfvp-a package
141150
```
142-

0 commit comments

Comments
 (0)