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
@@ -0,0 +1,32 @@
---
title: Develop Arm automotive software on the System76 Thelio Astra

minutes_to_complete: 60

who_is_this_for: This is an introductory topic for automotive developers interested in local development using the System76 Thelio Astra Linux desktop computer.

learning_objectives:
- Create an efficient automotive development environment on the System76 Thelio Astra desktop.
- Build and run the Arm Automotive Solutions Software Reference Stack locally.

prerequisites:
- A System76 Thelio Astra desktop computer running Ubuntu 24.04.

author_primary: Jason Andrews

### Tags
skilllevels: Introductory
subjects: Containers and Virtualization
armips:
- Neoverse
operatingsystems:
- Linux
tools_software_languages:
- Automotive

### FIXED, DO NOT MODIFY
# ================================================================================
weight: 1 # _index.md always has weight of 1 to order correctly
layout: "learningpathall" # All files under learning paths have this same wrapper
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
# ================================================================================
# Edit
# ================================================================================

next_step_guidance: >
You have successfully learned how to build and run the Arm Automotive Solutions Software Reference Stack on the System76 Thelio Astra.

recommended_path: "/learning-paths/cross-platform/docker-build-cloud/"

further_reading:
- resource:
title: Arm Automotive Solutions Documentation
link: https://arm-auto-solutions.docs.arm.com/en/v1.1/index.html
type: documentation
- resource:
title: Parsec
link: https://parsec.community/
type: documentation

# ================================================================================
# FIXED, DO NOT MODIFY
# ================================================================================
weight: 21 # set to always be larger than the content in this path, and one more than 'review'
title: "Next Steps" # Always the same
layout: "learningpathall" # All files under learning paths have this same wrapper
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
# ================================================================================
# Edit
# ================================================================================

# Always 3 questions. Should try to test the reader's knowledge, and reinforce the key points you want them to remember.
# question: A one sentence question
# answers: The correct answers (from 2-4 answer options only). Should be surrounded by quotes.
# correct_answer: An integer indicating what answer is correct (index starts from 0)
# explanation: A short (1-3 sentence) explanation of why the correct answer is correct. Can add additional context if desired


review:
- questions:
question: >
To get enough memory, the Arm Automotive Solutions Software Reference Stack must be built on an Arm cloud instance.
answers:
- "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?
answers:
- "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.

# ================================================================================
# FIXED, DO NOT MODIFY
# ================================================================================
title: "Review" # Always the same title
weight: 20 # Set to always be larger than the content in this path
layout: "learningpathall" # All files under learning paths have this same wrapper
---
54 changes: 54 additions & 0 deletions content/learning-paths/laptops-and-desktops/system76-auto/build.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
# User change
title: "Build the Arm Automotive Solutions Software Reference Stack"

weight: 3

layout: "learningpathall"
---

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.

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:

```console
mkdir -p ~/arm-auto-solutions
cd ~/arm-auto-solutions
git clone https://git.gitlab.arm.com/automotive-and-industrial/arm-auto-solutions/sw-ref-stack.git --branch v1.1
```

Open the configuration menu:

```console
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

![configuration #center](configure.png)

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

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

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

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
139 changes: 139 additions & 0 deletions content/learning-paths/laptops-and-desktops/system76-auto/run.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
---
# User change
title: "Run the Parsec demo"

weight: 4

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.

```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:

```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.

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.

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

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`.

On the primary compute run the SSL server:

```console
ssl_server &
```

The output from the server is printed:

```output
. Seeding the random number generator... ok
. Loading the server cert. and key... ok
. Bind on https://localhost:4433/ ... ok
. Setting up the SSL data.... ok
. 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.

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 client application requests a webpage from the SSL server and the output is:

```output
. Seeding the random number generator... ok
. Loading the CA root certificate ... ok (0 skipped)
. Connecting to tcp/localhost/4433... ok
. Performing the SSL/TLS handshake... ok
. Setting up the SSL/TLS structure... ok
. Performing the SSL/TLS handshake... ok
< Read from client: 18 bytes read

GET / HTTP/1.0

> Write to client: ok
. Verifying peer X.509 certificate... ok
> Write to server: 156 bytes written

HTTP/1.0 200 OK
Content-Type: text/html

<h2>Mbed TLS Test Server</h2>
<p>Successful connection using: TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256</p>

. Closing the connection... ok
. Waiting for a remote connection ... 18 bytes written

GET / HTTP/1.0

< Read from server: 156 bytes read

HTTP/1.0 200 OK
Content-Type: text/html

<h2>Mbed TLS Test Server</h2>
<p>Successful connection using: TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256</p>
```

## Shutdown and clean up

You can shut down the simulated system:

```console
shutdown now
```

You will return to the command line.

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

To delete the Multipass VM run the commands:

```console
multipass stop u20-32
multipass delete u20-32
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.
Loading