Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,37 @@
review:
- questions:
question: >
To get enough memory, the Arm Automotive Solutions Software Reference Stack must be built on an Arm cloud instance.
To ensure there is efficient memory resource, the Arm Automotive Solutions Software Reference Stack must be built on an Arm cloud instance.
answers:
- "True"
- "False"
- "True."
- "False."
correct_answer: 2
explanation: >
You can build the automotive software stack on a local machine using the System76 Thelio Astra Linux desktop.

- questions:
question: >
Which things below are benefits of Parsec?
Which of the following are benefits of Parsec?
answers:
- "Platform Agnostic API"
- "Secure boot and attestation"
- "Key management and cryptography"
- "All of the above"
- "Platform Agnostic API."
- "Secure boot and attestation."
- "Key management and cryptography."
- "All of the above."
correct_answer: 4
explanation: >
All of these help Parsec provide unified access to hardware security.

- questions:
question: >
Which of these are the benefits of using Arm-based desktops for Arm-based software development?
answers:
- "ISA compatibility."
- "No cross-compilation or Virtualization needed."
- "Lower cost and higher performance."
- "All of the above."
correct_answer: 4
explanation: >
Using Arm-based desktops for Arm-based software development brings all these benefits.

# ================================================================================
# FIXED, DO NOT MODIFY
# ================================================================================
Expand Down
27 changes: 27 additions & 0 deletions content/learning-paths/laptops-and-desktops/system76-auto/about.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
# User change
title: "Thelio Astra"

weight: 2

layout: "learningpathall"
---
### About the Thelio Astra

Thelio Astra is an Arm-based desktop computer designed by System76 for autonomous vehicle development and other general-purpose Arm software development.

Thelio Astra uses the Ampere Altra processor, which is based on the Arm Neoverse N1 CPU, and ships with the Ubuntu operating system.

An NVIDIA GPU is included for high performance graphics, and the system can be configured with up to 512 GB of RAM and up to 16 TB of storage.

Some of the benefits of using a Thelio Astra for automotive development include:

- Access to native performance - you can execute build and test cycles directly on Arm Neoverse processors, eliminating the performance overhead and complexities associated with instruction emulation and cross-compilation.

- Improved virtualization - familiar virtualization and container tools on Arm simplify the development and test process.

- Better cost-effectiveness - there are cost savings of having a local computer with a high core count, large memory, and plenty of storage.

- Enhanced compatibility - support for Arm CPUs and NVIDIA GPUs eliminates the need for Arm instruction emulation, which simplifies the developer process and overall experience.

- Optimized developer process - the development process can be optimized by enabling you to run large software stacks on your local machine, making it easier to fix issues and improve performance.
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
# User change
title: "Arm Automotive Solutions Software Reference Stack"

weight: 4

layout: "learningpathall"
---

## About Arm Automotive Solutions Software Reference Stack, and Arm Reference Design-1 AE

The Arm Automotive Solutions Software Reference Stack can be run on the Arm Reference Design-1 AE (RD-1 AE).

RD-1 AE is a concept hardware design, for the Automotive segment, and built on the Neoverse V3AE Application Processor as primary compute, and augmented with an Arm Cortex-R82AE based Safety Island.

The system additionally includes a Runtime Security Engine (RSE) used for the secure boot of the system elements and runtime Secure Services.

The software stack consists of:

* Firmware.
* Boot loader.
* Hypervisor.
* Linux kernel.
* File system.
* Applications.

The development environment uses the Yocto Project build framework.
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
# User change
title: "Parsec"

weight: 6

layout: "learningpathall"
---


## About Parsec

There are a number of example applications which demonstrate the software stack running the reference hardware system modeled by a Fixed Virtual Platform (FVP). The Parsec demo is explained below.

The [Parsec-enabled TLS demo](https://arm-auto-solutions.docs.arm.com/en/v1.1/design/applications/parsec_enabled_tls.html) illustrates a HTTPS session. A simple web page is transferred using a Transport Layer Security (TLS) connection.

Parsec, or Platform AbstRaction for SECurity, is an open-source initiative that provides a common API to hardware security and cryptographic services.

This enables applications to interact with the secure hardware of a device without requiring knowledge of the specific details of the hardware itself. The Parsec abstraction layer makes it easier to develop secure applications that can run on different devices and platforms.  

You can follow the instructions in the next section to run the Parsec demo.
31 changes: 10 additions & 21 deletions content/learning-paths/laptops-and-desktops/system76-auto/build.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,17 @@
# User change
title: "Build the Arm Automotive Solutions Software Reference Stack"

weight: 3
weight: 5

layout: "learningpathall"
---
## Build the Automotive Software Stack

The Arm Automotive Solutions Software Reference Stack can be run on the Arm Reference Design-1 AE.

This is a concept hardware design built on the Neoverse V3AE Application Processor (as primary compute) and augmented with an Arm Cortex-R82AE based safety island.

The system additionally includes a Runtime Security Engine (RSE) used for the secure boot and runtime secure services.

The software stack consists of firmware, boot loader, hypervisor, Linux kernel, file system, and applications.

The development environment uses the Yocto Project build framework.

## Build the automotive software stack

The Thelio Astra makes it possible to build the complete software stack on an Arm-based local machine, instead of alternatives such as an Arm-based cloud instances or a non-Arm desktop computer.
The Thelio Astra makes it possible to build the complete software stack on an Arm-based local machine instead of using a non-Arm desktop computer, with the ISA compatibility benefits that it brings to Arm-based software development. Using Arm-based cloud instances is another option.

You can build the Using the Arm Automotive Solutions Software Reference Stack from the command line of the Ubuntu 20.04 Multipass virtual machine.

Create a new directory and clone the repository:
Start by creating a new directory, and then clone the repository:

```console
mkdir -p ~/arm-auto-solutions
Expand All @@ -37,18 +26,18 @@ Open the configuration menu:
kas menu sw-ref-stack/Kconfig
```

Use the space bar and arrow keys to select the three components show in the screen capture below:
- Accept the END USER LICENSE AGREEMENT
- Safety Island Actuation Demo
- Baremetal
Press the space bar and the arrow keys to select the three components shown in the screen capture below:
- **Accept the END USER LICENSE AGREEMENT FOR ARM ECOSYSTEM MODELS**.
- **Safety Island Actuation Demo**.
- **Baremetal**.

![configuration #center](configure.png)

{{% notice Note %}}
To build and run you much accept the EULA.
To build and run, you must accept the EULA.
{{% /notice %}}

Use tab to navigate to the `Build` button and press enter to start the build.
Press tab to navigate to **Build** and press Enter to start the build.

The build will take some time, depending on the number of CPUs in your virtual machine.

47 changes: 18 additions & 29 deletions content/learning-paths/laptops-and-desktops/system76-auto/run.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,56 +2,45 @@
# User change
title: "Run the Parsec demo"

weight: 4
weight: 7

layout: "learningpathall"
---


There are a number of example applications which demonstrate the software stack running the reference hardware system modeled by a Fixed Virtual Platform (FVP). The Parsec demo is explained below.

The [Parsec-enabled TLS demo](https://arm-auto-solutions.docs.arm.com/en/v1.1/design/applications/parsec_enabled_tls.html) illustrates a HTTPS session. A simple web page is transferred using a Transport Layer Security (TLS) connection.

Parsec, or Platform AbstRaction for SECurity, is an open-source initiative that provides a common API to hardware security and cryptographic services.

This enables applications to interact with the secure hardware of a device without needing to know the specific details of the hardware itself. The Parsec abstraction layer makes it easier to develop secure applications that can run on different devices and platforms.  

Follow the instructions below to run the Parsec demo.

## Run the Parsec SSL demo

From the command line, start a Tmux session.
From the command line, start a Tmux session:

```console
tmux new-session -s arm-auto-solutions
```

Tmux makes it possible to connect to the output from multiple hardware subsystems in the reference design.

To run the software stack on the FVP run:
To run the software stack on the FVP, run:

```console
cd ~/arm-auto-solutions
kas shell -c "../layers/meta-arm/scripts/runfvp -t tmux --verbose"
```

This will run the entire software stack on a model of the hardware.
This runs the entire software stack on a model of the hardware.

At anytime you can use Tmux to interact with the different subsystems using `Ctrl-b` then `w` to bring up a list of windows. Use the arrow keys to select a window.
Anytime during the process you can use Tmux to interact with the different subsystems using Ctrl+B then W to bring up a list of windows. Press the arrow keys to select a window.

After the software boots, you reach a Linux login prompt: `fvp-rd-kronos login:`
After the software boots, you should see a Linux login prompt: `fvp-rd-kronos login:`

Enter `root` for the login name, no password is required.
Enter `root` for the login name. No password is required.

Make sure the initialization process is complete by running:

```console
systemctl is-system-running --wait
```

If the output is `running`, continue to the next step. If not, re-run the command until the output is `running`.
If the output is `running`, continue to the next step. If not, rerun the command until the output is `running`.

On the primary compute run the SSL server:
On the primary compute, run the SSL server:

```console
ssl_server &
Expand All @@ -67,17 +56,17 @@ The output from the server is printed:
. Waiting for a remote connection ...
```

The SSL client runs in a standard Ubuntu 22.04 container and requests a web page from the SSL server. The client has been modified to use Parsec, making it more portable and abstracting the details of the hardware security services.
The SSL client runs in a standard Ubuntu 22.04 container and requests a web page from the SSL server. The client has been modified to use Parsec, making it more portable, and able to abstract the details of the hardware security services.

Run the Parsec enabled SSL client:
Run the Parsec-enabled SSL client:

```console
docker run --rm -v /run/parsec/parsec.sock:/run/parsec/parsec.sock -v /usr/bin/ssl_client1:/usr/bin/ssl_client1 --network host docker.io/library/ubuntu:22.04 ssl_client1
```

The container will be downloaded and run. The SSL client application named `ssl_client1` runs.
The container will then download and run. The SSL client application named `ssl_client1` also starts running.

The client application requests a webpage from the SSL server and the output is:
The client application requests a webpage from the SSL server and you should see this output:

```output
. Seeding the random number generator... ok
Expand Down Expand Up @@ -116,17 +105,17 @@ Content-Type: text/html

## Shutdown and clean up

You can shut down the simulated system:
You can shut down the simulated system by using the following command:

```console
shutdown now
```

You will return to the command line.
This will return you to the command line.

Type `exit` to leave the Tmux session and `exit` again to leave the Multipass virtual machine.
Type `exit` to leave the Tmux session, and `exit` again to leave the Multipass virtual machine.

To delete the Multipass VM run the commands:
To delete the Multipass VM, run the commands:

```console
multipass stop u20-32
Expand All @@ -136,4 +125,4 @@ multipass purge

You have run the Parsec example from the Arm Automotive Solutions Software Reference Stack.

There are many other example applications you can run, refer to the Further Reading section.
There are many other example applications you can run. See the Further Reading section at the end of the Learning Path for more information.
32 changes: 11 additions & 21 deletions content/learning-paths/laptops-and-desktops/system76-auto/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,22 @@
# User change
title: "Set up an automotive development environment"

weight: 2
weight: 3

layout: "learningpathall"
---

## Before you begin

This Learning Path explains how to do automotive software development using the [System76 Thelio Astra](https://system76.com/desktops/thelio-astra) Linux desktop computer running Ubuntu.
This Learning Path explains how to perform automotive software development using the [System76 Thelio Astra](https://system76.com/arm) Linux desktop computer running Ubuntu.

Before you begin, install Multipass using the [Multipass install guide](/install-guides/multipass/) for Arm Linux. Multipass is used to create a cloud style virtual machine on your desktop computer.
Before you begin, install Multipass using the [Multipass install guide](/install-guides/multipass/) for Arm Linux. You can then use Multipass to create a cloud-style virtual machine on your desktop computer.

### About the Thelio Astra

Thelio Astra is an Arm-based desktop computer designed for autonomous vehicle development and other general purpose Arm software development.

It uses the Ampere Altra processor, based on Arm Neoverse N1, and ships with the Ubuntu operating system.

An NVIDIA GPU is included for high performance graphics, and the system can be configured with up to 512 GB of RAM and up to 16 TB of storage. This Learning Path was created using a Thelio Astra with 64 CPUs, 64 GB of RAM, and 1 TB of storage.

Some of the benefits of using a Thelio Astra for automotive development include:

- **Access to native performance:** You can execute build and test cycles directly on Arm Neoverse processors, eliminating the performance overhead and complexities associated with instruction emulation and cross-compilation.
- **Improved virtualization:** Familiar virtualization and container tools on Arm simplify the development and test process.
- **Better cost-effectiveness:** There are cost savings of having a local computer with a high core count, large memory, and plenty of storage.
- **Enhanced compatibility:** Support for Arm CPUs and NVIDIA GPUs eliminates the need for Arm instruction emulation, which simplifies the developer process and overall experience.
- **Optimized developer process:** The development process can be optimized by enabling you to run large software stacks on your local machine, making it easier to fix issues and improve performance.

## Create a virtual machine using Multipass

A Multipass virtual machine is a good way to create the required automotive development environment and isolate the build and test process. Using Multipass also allows you to split the resources of the Thelio Astra and specify the number of CPUs and the portion of memory and storage for the development environment. It's also easy to delete the VM and create a new one anytime.
A Multipass virtual machine is a good way to create the required automotive development environment and isolate the build and test process. Using Multipass also allows you to split the resources of the Thelio Astra and specify the number of CPUs and the portion of memory and storage for the development environment. It is also easy to delete an existing VM and create a new one whenever required.

The Arm Automotive Solutions Software Reference Stack requires Ubuntu 20.04 for the build and test machine. The Thelio Astra ships with either Ubuntu 22.04 or 24.04. With Multipass, you can use Ubuntu 20.04 for the development environment, isolate the development from the native operating system, and avoid any compatibility issues.

Expand All @@ -40,8 +26,12 @@ To get started, create a Multipass virtual machine named `u20-32` with Ubuntu 20
```console
multipass launch 20.04 --name u20-32 --cpus 32 --disk 250G --memory 32G
```
{{% notice Note %}}
You can adjust the configuration of the setup, by changing the number of CPUs, the allotted memory, and the disk space size. Using more of these resources will speed up the build process.

You can configure different values or CPUs, disk space, and memory, but the more resources you use the faster the builds will complete.
This Learning Path documents an example using a Thelio Astra with 64 CPUs, 64 GB of RAM, and 1 TB of storage.
{{% /notice %}}


Start a bash shell in the Ubuntu 20.04 VM:

Expand All @@ -57,7 +47,7 @@ sudo apt update ; sudo apt upgrade -y

### Create swap space

Building the automotive software stack requires significant memory resources, so it's best to create swap space. Without swap space, some build processes may fail due to lack of memory.
Building the automotive software stack requires significant memory resources, so it's good practice to create swap space. Without swap space, some build processes might fail due to lack of memory.

Create 10 GB of swap space:

Expand All @@ -68,7 +58,7 @@ sudo mkswap /swapfile
sudo swapon /swapfile
```

To confirm the swap space has been created run:
To confirm the swap space has been created, run:

```console
swapon --show
Expand Down