Skip to content

Commit 196ccb6

Browse files
Updates
1 parent fbe3333 commit 196ccb6

File tree

6 files changed

+134
-116
lines changed

6 files changed

+134
-116
lines changed

content/learning-paths/automotive/zenacssdebug/config.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ layout: "learningpathall"
1010

1111
## Debug configuration
1212

13-
Set up an Arm Development Studio **debug configuration** for the Zena CSS FVP using the Iris interface. This page shows a fast, reliable path to a working configuration.
13+
Now you'll walk through setting up an Arm Development Studio debug configuration for the Zena CSS FVP using the Iris interface. This is a fast, reliable path to a working configuration.
1414

1515
As of Arm Development Studio 2025.0, there is no out-of-the-box configuration for the Zena CSS FVP. Creating one, however, is straightforward.
1616

@@ -23,33 +23,33 @@ Launch the FVP with the Iris server enabled:
2323
```bash
2424
kas shell -c "../layers/meta-arm/scripts/runfvp -t tmux --verbose -- --iris-server --iris-port 7100"
2525
```
26-
or if connecting to the FVP remotely:
26+
If connecting to the FVP remotely, you can use this command:
2727

2828
```bash
2929
kas shell -c "../layers/meta-arm/scripts/runfvp -t tmux --verbose -- --iris-server --iris-port 7100 -A"
3030
```
3131

3232
{{% notice Note %}}
33-
This Learning Path assumes a **local** connection for the remaining steps.
33+
This example modeled below uses a local connection for the remaining steps.
3434
{{% /notice %}}
3535

3636
## Create a configuration database in Arm Development Studio
3737

38-
Debug configurations are stored in a **configuration database**. Create a local database to store your model configuration:
38+
Debug configurations are stored in a configuration database. Create a local database to store your model configuration:
3939

40-
- In Arm Development Studio, go to **File > New > Other**
41-
- Select **Configuration Database > Configuration Database**
42-
- Click **Next**, enter a **Name**, then click **Finish**
40+
- In Arm Development Studio, go to **File > New > Other**.
41+
- Select **Configuration Database > Configuration Database**.
42+
- Click **Next**, enter a **Name**, then click **Finish**.
4343

4444
## Create a model configuration for Zena CSS FVP (Iris)
4545

46-
- Open the same wizard (**File > New > Other**), then choose **Configuration Database > Model Configuration**
47-
- Click **Next**, select the **Configuration Database** you created, then click **Next**
48-
- For **Model Interface**, choose **Iris**, then click **Next**
49-
- Choose **Browse for model running on local host**. The debugger detects and interrogates the FVP
50-
- If connecting remotely, choose **Connect to model running on either local or remote host** and provide the host and port
46+
- Open the same wizard (**File > New > Other**), then choose **Configuration Database > Model Configuration**.
47+
- Click **Next**, select the **Configuration Database** you created, then click **Next**.
48+
- For **Model Interface**, choose **Iris**, then click **Next**.
49+
- Choose **Browse for model running on local host**. The debugger detects and interrogates the FVP.
50+
- If connecting remotely, choose **Connect to model running on either local or remote host** and provide the host and port.
5151

52-
Arm Development Studio generates a **model.mdf** file that enumerates all CPUs in the FVP.
52+
Arm Development Studio generates a `model.mdf` file that enumerates all CPUs in the FVP.
5353

5454
Optionally, update **Manufacturer Name** (for example, `Arm`) and **Platform Name** (for example, `Zena_CSS_FVP`). Then **Save** and **Import** the model into the configuration database.
5555

@@ -59,6 +59,6 @@ If the FVP is not detected, verify the Iris server is running on the expected po
5959

6060
A `model.mdf` file will be created that identifies all CPUs within the FVP.
6161

62-
You can change the `Manufacturer Name` and `Platform Name` to something more meaningful (such as `Arm` and `Zena_CSS_FVP`), then `Save`, and `Import` into the configuration database.
62+
You can change the **Manufacturer Name** and **Platform Name** to something more meaningful (such as `Arm` and `Zena_CSS_FVP`), then **Save**, and **Import** into the configuration database.
6363

6464
The debugger is now aware of the FVP and you are ready to debug.

content/learning-paths/automotive/zenacssdebug/connect.md

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -12,77 +12,79 @@ layout: "learningpathall"
1212

1313
You are now ready to create debug connections for each of the sub-systems within Zena CSS. In this section you will create the connections, which will be subsequently enhanced in the following section. You may prefer to fully set up one such connection before moving to others.
1414

15-
Arm Development Studio has full support for Heterogeneous systems such as Zena CSS, and so you can connect to all processors simultaneously.
15+
Arm Development Studio has full support for heterogeneous systems such as Zena CSS, and so you can connect to all processors simultaneously.
1616

17-
## Debug connection project
17+
## Create a project for connection files
1818

19-
First, create a project to store these connections (`.launch` files) in.
19+
First, create a project to store these connections (`.launch` files).
2020

21-
Select **File** > **New...** > **Project** > **General** > **Project**, and give it a meaningful name (`Connections`).
21+
Select **File** > **New...** > **Project** > **General** > **Project**, and give it a meaningful name (for example, `Connections`).
2222

23-
## RSE (Cortex-M55)
23+
## Create an RSE (Cortex-M55) model connection
2424

25-
Runtime Security Engine (RSE) is based on [Cortex-M55](https://developer.arm.com/Processors/Cortex-M55) core and is a security subsystem fulfilling the role of Root of Trust.
25+
Runtime Security Engine (RSE) is based on the [Cortex-M55](https://developer.arm.com/Processors/Cortex-M55) core and is a security subsystem fulfilling the role of Root of Trust.
2626

2727
Select **File** > **New** > **Model Connection**.
2828

2929
{{% notice Note %}}
30-
You can also use **File** > **New** > **Other** > **Arm Debugger** > **Model Connection**, or **Create a debug connection**...` shortcut in the **Debug Control** pane.
30+
You can also use **File** > **New** > **Other** > **Arm Debugger** > **Model Connection**, or the **Create a debug connection**... shortcut in the **Debug Control** pane.
3131
{{% /notice %}}
3232

33-
Specify a connection name (`RSE`), and associate with the above `Connections` project. Click `Next`.
33+
Specify a connection name (`RSE`), and associate with the above `Connections` project. Click **Next**.
3434

35-
Locate the FVP based on the name you gave it previously (`Zena_CSS_FVP`). The text filter can help you locate it easily.
35+
Locate the FVP based on the name you gave it previously (`Zena_CSS_FVP`). You can use the text filter to locate it quickly.
3636

37-
You will then be presented with the `Edit configuration` pane. In the `Connection` tab, scroll down to locate `Bare Metal Debug` > `Arm_Cortex-M55`.
37+
You will then be presented with the **Edit configuration** pane. In the **Connection** tab, scroll down to locate **Bare Metal Debug** > **Arm_Cortex-M55**.
3838

39-
As you will be later launching the FVP with the software stack loaded, select `Connect to an already running model`.
39+
As you will be later launching the FVP with the software stack loaded, select **Connect to an already running model**.
4040

41-
Assuming the same host will be running both the FVP and the debugger, specify the `Connection address` as the default `127.0.0.1:7100`.
41+
Assuming the same host will be running both the FVP and the debugger, specify the **Connection address** as the default `127.0.0.1:7100`.
4242

4343
{{% notice Note %}}
4444
`127.0.0.1` is the same as `localhost`, which targets the host running the FVP. For a remote FVP, specify the remote IP address and start the FVP with `-A`. Port `7100` is the default Iris port and can be adjusted if needed.
4545
{{% /notice %}}
4646

47-
Arm Development Studio creates **RSE.launch** inside the **Connections** project.
47+
Arm Development Studio creates `RSE.launch` inside the **Connections** project.
4848

49-
## Safety Island (Cortex-R82AE)
49+
## Create a Safety Island (Cortex-R82AE) model connection
5050

5151
The Safety Island is based on the [Cortex-R82AE](https://developer.arm.com/Processors/Cortex-R82AE) core and manages power, clocks, and CMN control.
5252

5353
Follow the same steps as for RSE, with this change:
5454

55-
- In **Edit configuration**, expand **Bare Metal Debug** and select **Arm_Cortex-R82AE**
55+
In **Edit configuration**, expand **Bare Metal Debug** and select **Arm_Cortex-R82AE**.
5656

5757
{{% notice Tip %}}
58-
To save time, copy **RSE.launch** to **SI.launch** and update the CPU selection to **Arm_Cortex-R82AE**.
58+
To save time, copy `RSE.launch` to `SI.launch` and update the CPU selection to **Arm_Cortex-R82AE**.
5959
{{% /notice %}}
6060

61-
## Primary Compute (Cortex-A720AE)
61+
## Create Primary compute (Cortex-A720AE) connections
6262

63-
Primary Compute comprises four clusters intended to run a rich OS such as Linux. Each cluster has four [Cortex-A720AE](https://developer.arm.com/Processors/Cortex-A720AE) cores alongside a [DSU-120AE](https://developer.arm.com/Processors/DSU-120AE) DynamIQ Shared Unit.
63+
Primary compute comprises four clusters intended to run a rich OS such as Linux. Each cluster has four [Cortex-A720AE](https://developer.arm.com/Processors/Cortex-A720AE) cores alongside a [DSU-120AE](https://developer.arm.com/Processors/DSU-120AE) DynamIQ Shared Unit.
6464

6565
You will create two connections: one for bare-metal initialization and one with Linux kernel awareness for SMP debug.
6666

67-
## Primary init (bare metal)
67+
### Primary init (bare metal, CPU0 only)
6868

69-
Create **Primary_init.launch**:
69+
Create `Primary_init.launch`:
7070

71-
- Use **File > New > Model Connection**
72-
- Select your **Zena_CSS_FVP** model
73-
- In **Edit configuration**, expand **Bare Metal Debug** and select **ARM_Cortex-A720AE_0** to attach to CPU0 only. This leaves other CPUs running
71+
- Select **File > New > Model Connection**.
72+
- Select your `Zena_CSS_FVP` model.
73+
- In **Edit configuration**, expand **Bare Metal Debug** and select **ARM_Cortex-A720AE_0** to attach to CPU0 only. This leaves other CPUs running.
7474

75-
#### Primary Linux (kernel awareness, SMP)
75+
### Primary Linux (SMP, OS awareness)
7676

7777
Create **Primary_Linux.launch** for Linux kernel debug with OS awareness:
7878

79-
- Use **File > New > Model Connection**
80-
- Select your **Zena_CSS_FVP** model
81-
- In **Edit configuration**, expand **Linux Kernel Debug** and choose **ARM_Cortex-A720AEx16 SMP Cluster 1**
82-
This connects to all 16 Cortex-A720AE processors described in the FVP. Only cores 0 to 3 are used by the default Linux configuration
79+
- Use **File > New > Model Connection**.
80+
- Select your **Zena_CSS_FVP** model.
81+
- In **Edit configuration**, expand **Linux Kernel Debug** and choose **ARM_Cortex-A720AEx16 SMP Cluster 1**.
82+
This connects to all 16 Cortex-A720AE processors described in the FVP. Only cores 0 to 3 are used by the default Linux configuration
8383

8484
To learn more about OS awareness in Arm Debugger, see the [OS awareness documentation](https://developer.arm.com/documentation/101470/latest/Debugging-Embedded-Systems/About-OS-awareness).
8585

86+
## Next steps: enhance connections (symbols, reset, semihosting)
87+
8688
{{% notice Next %}}
8789
In the next section, you will enhance these connections with symbol loading, reset behavior, semihosting, and Linux kernel awareness settings.
8890
{{% /notice %}}
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
---
22
# User change
3-
title: "Launch FVP"
3+
title: "Launch the FVP"
44

55
weight: 3 # 1 is first, 2 is second, etc.
66

77
# Do not modify these elements
88
layout: "learningpathall"
99
---
1010

11-
## Launch the FVP
11+
## Start the FVP from the build environment
1212

1313
You can launch the FVP within the build environment with the software stack loaded:
1414

1515
```command
1616
kas shell -c "../layers/meta-arm/scripts/runfvp -t tmux --verbose"
1717
```
1818

19-
See the [documentation](https://arm-auto-solutions.docs.arm.com/en/v2.0/rd-aspen/user_guide/reproduce.html#run-the-fvp) for details.
19+
See the [Arm Zena CSS User Guide](https://arm-auto-solutions.docs.arm.com/en/v2.0/rd-aspen/user_guide/reproduce.html#run-the-fvp) for further information.
2020

2121
While you can continue to use this method during debugging, it does not enable the Iris debug server in the model, so the system cannot be debugged from Arm Development Studio. Additional command-line options are required.
2222

23-
You will use the following options (see `FVP_RD_Aspen --help` for the full list). **Options are case-sensitive.**
23+
You will use the following options (see `FVP_RD_Aspen --help` for the full list). Options are case-sensitive.
2424

2525
| Option | Alias | Notes |
2626
|-------------------------|:-----:|-------------------------------------------------------|
@@ -29,25 +29,25 @@ You will use the following options (see `FVP_RD_Aspen --help` for the full list)
2929
| `--run` | `-R` | Run the simulation when the debug server starts |
3030
| `--iris-allow-remote` | `-A` | Allow remote connections (only if required) |
3131

32-
## Launch the FVP with additional options
32+
## Enable the Iris debug server for Arm Development Studio
3333

3434
Append `--` to pass model options through `runfvp`.
3535

36-
**Start the model with the debug server and hold at reset:**
36+
Start the model with the debug server and hold at reset:
3737
```command
3838
kas shell -c "../layers/meta-arm/scripts/runfvp -t tmux --verbose -- --iris-server --iris-port 7100"
3939
```
4040

41-
Start the model with the debug server and begin execution (so boot can progress):
41+
Start the model with the debug server and begin execution so that boot can progress:
4242
```command
4343
kas shell -c "../layers/meta-arm/scripts/runfvp -t tmux --verbose -- --iris-server --iris-port 7100 --run"
4444
```
4545

46-
Allow remote debug connections (only if needed), using option aliases:
46+
If required, allow remote debug connections using option aliases:
4747
```command
4848
kas shell -c "../layers/meta-arm/scripts/runfvp -t tmux --verbose -- -I -A --iris-port 7100"
4949
```
5050

5151
{{% notice Note %}}
52-
Specify the Iris port explicitly (even when using the default) so it matches your debugger connection settings. If you enable remote connections, ensure your firewall allows inbound access to the chosen port.
52+
Even when using the default, specify the Iris port explicitly so it matches your debugger connection settings. If you enable remote connections, ensure your firewall allows inbound access to the chosen port.
5353
{{% /notice %}}

content/learning-paths/automotive/zenacssdebug/primarycompute.md

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ weight: 8 # 1 is first, 2 is second, etc.
77
# Do not modify these elements
88
layout: "learningpathall"
99
---
10-
1110
## Debug Primary Compute
1211

1312
The Primary Compute application processors (`Cortex-A720AE`) are the final processors to be enabled.
@@ -16,11 +15,11 @@ As before, you can connect whilst powered down and monitor the point that they a
1615

1716
You can debug the initialization code and the final Linux Operating System (OS) threads.
1817

19-
### Connect debugger to target
18+
## Connect debugger to target
2019

2120
Use the following debugger commands in the `Primary_init.launch` to load the symbols for the `BL2` initialization code, setting a breakpoint at `bl2_entrypoint`.
2221

23-
Note that an address "offset" is used to specify the exception level that the image is relevant to. If the processor changes exception level, the debug information would need to also be loaded to the corresponding EL address space.
22+
Note that an address offset is used to specify the Exception Level (EL) that the image is relevant to. If the processor changes Exception Level, the debug information would need to also be loaded to the corresponding EL address space.
2423

2524
For example the processors start in `EL3` and move to `EL2N` when the Linux kernel is enabled.
2625

@@ -29,43 +28,52 @@ stop
2928
add-symbol-file /arm-auto-solutions/build/tmp_baremetal/work/fvp_rd_aspen-poky-linux/trusted-firmware-a/2.11.0+git/image/firmware/bl2.elf EL3:0x0
3029
tbreak bl2_entrypoint
3130
```
31+
3232
{{% notice Note %}}
33-
Exact paths may differ for your set up.
33+
Exact paths might differ depending on your build output.
3434
{{% /notice %}}
3535

36-
Run the code to the `bl2_entrypoint` and you can debug as expected.
36+
Run to **bl2_entrypoint** and step through as required.
3737

38-
### Debug Linux kernel modules
38+
{{% notice Tip %}}
39+
Symbol loading is Exception Level–aware. If execution changes Exception Level, load symbols into the corresponding EL address space. For example, the processors start in EL3 and transition to EL2N when the Linux kernel is enabled.
40+
{{% /notice %}}
3941

40-
To make use of the OS awareness feature, disconnect `Primary_init` and connect to `Primary_Linux` as created previously. Load the symbols from the `vmlinux` image.
42+
## Debug the Linux kernel with OS awareness (SMP)
4143

42-
``` text
44+
Switch to the `Primary_Linux.launch` connection you created earlier to enable Arm Development Studio OS awareness for the Linux kernel. Load the kernel symbols and set source mapping if your kernel sources are located outside the default paths:
45+
46+
```text
4347
stop
4448
add-symbol-file /arm-auto-solutions/build/tmp_baremetal/work/fvp_rd_aspen-poky-linux/linux-yocto/6.6.54+git/linux-fvp_rd_aspen-standard-build/vmlinux EL2N:0x0
4549
set substitute-path /usr/src/kernel/ /arm-auto-solutions/build/tmp_baremetal/work-shared/fvp-rd-aspen/kernel-source/
4650
```
51+
4752
Run the FVP until the OS prompt appears.
4853

4954
{{% notice %}}
50-
If you are only interested in kernel debug, modify the launch command for the FVP to include `--run` to start execution immediately.
55+
If you only need kernel debugging, start the model with the debug server **and** begin execution immediately by adding `--run`:
5156

52-
``` command
57+
```command
5358
kas shell -c "../layers/meta-arm/scripts/runfvp -t tmux --verbose -- --iris-server --iris-port 7100 --run"
5459
```
5560
{{% /notice %}}
5661

57-
You can now enable the `Threads` view in the `Debug Control` pane.
62+
## View Linux threads with OS awareness
5863

59-
Right-click on the connection, and select `Display Threads`. You can also do this by entering `thread` in the `Command` pane.
64+
Enable the **Threads** view to inspect kernel threads instead of raw CPUs:
6065

61-
The view will then change from listing the 16 application processors to the OS threads.
66+
In **Debug Control**, right-click the **Primary_Linux** connection and select **Display Threads**
67+
2. Alternatively, enter `thread` in the **Command** pane.
68+
69+
The view changes from listing the 16 application processors to the active OS threads.
6270

6371
{{% notice Note %}}
64-
A warning of the form:
65-
``` text
72+
You might see a warning like:
73+
```text
6674
WARNING(ROS60): Could not enable OS support as the OS does not appear to be initialized. This might be caused by a mismatch between the loaded symbols and the code on the target or because the OS is not up and running. Enabling OS support will be re-attempted when the target next stops.
6775
```
68-
may be emitted if the OS is not booted when you connect. It can safely be ignored.
76+
This occurs if the OS has not completed boot when you connect; it is safe to ignore and will clear after the next target stop.
6977
{{% /notice %}}
7078

7179
You have successfully learnt how to use Arm Development Studio to explore and debug the Arm Zena CSS Reference Software Stack.

0 commit comments

Comments
 (0)