Skip to content

Commit dbc81d1

Browse files
adding cross-platform summaries and faqs
1 parent 4aae874 commit dbc81d1

20 files changed

Lines changed: 986 additions & 22 deletions

File tree

content/learning-paths/cross-platform/adler32/_index.md

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,59 @@ learning_objectives:
1212

1313
prerequisites:
1414
- An Arm computer running Linux with the GNU compiler (gcc) installed.
15-
- Visual Studio Code with the GitHub Copilot extension installed.
15+
- Visual Studio Code with the GitHub Copilot extension installed.
16+
17+
# START generated_summary_faq
18+
generated_summary_faq:
19+
template_version: summary-faq-v3
20+
generated_at: '2026-07-02T17:11:56Z'
21+
generator: ai
22+
ai_assisted: true
23+
ai_review_required: true
24+
model: gpt-5
25+
prompt_template: summary-faq-v3
26+
source_hash: 37b19106fba70423ba8c58f82097d9251f0ae208e882c852f9c4531afcebb46c
27+
summary_generated_at: '2026-07-02T17:11:56Z'
28+
summary_source_hash: 37b19106fba70423ba8c58f82097d9251f0ae208e882c852f9c4531afcebb46c
29+
faq_generated_at: '2026-07-02T17:11:56Z'
30+
faq_source_hash: 37b19106fba70423ba8c58f82097d9251f0ae208e882c852f9c4531afcebb46c
31+
summary: >-
32+
You'll use GitHub Copilot in Visual Studio Code to set up an Adler32
33+
checksum project on an Arm Linux system, establish a C baseline, and measure results. First, you'll
34+
generate the C implementation, create a test program that validates correctness and records
35+
timing for multiple input sizes, and ask Copilot to produce a GCC-based Makefile tuned for
36+
a Neoverse N1 target. Then, you'll to build and run the project, verify outputs, and
37+
collect timing data. With a working harness and repeatable measurements, you're positioned
38+
to introduce Arm Neon intrinsics for the Adler32 hot path and compare behavior against the
39+
baseline C version.
40+
faqs:
41+
- question: What files should exist before building?
42+
answer: >-
43+
You should have the C implementation (`adler32-simple.c`), a test program (`adler32-test.c`),
44+
and a Makefile generated by GitHub Copilot. If a file is missing or named differently, regenerate
45+
it using the provided prompts.
46+
- question: Which GitHub Copilot mode should I use to generate the code and Makefile?
47+
answer: >-
48+
Use the Copilot Agent session in VS Code and paste the prompts from the steps. Results vary
49+
by model, so minor differences in code or target names are expected.
50+
- question: How do I run the tests and verify correctness?
51+
answer: >-
52+
Use the Copilot-generated Makefile to build and execute the test program. The run should
53+
confirm correct checksum results for all listed data sizes before you proceed.
54+
- question: What should I check if the GCC build fails on my Arm system?
55+
answer: >-
56+
Confirm that GCC is installed and that the Makefile’s architecture-specific flags are supported.
57+
If a flag is not recognized for your CPU, adjust or remove it and rebuild.
58+
- question: What output should I expect when measuring performance?
59+
answer: >-
60+
The test program measures timing around Adler32 calls on random inputs of 1 kb, 10 kb, 100
61+
kb, 1 mb, and 10 mb. You should see per-size timings that you can reuse when evaluating
62+
a Neon-based implementation.
63+
# END generated_summary_faq
1664

1765
author: Jason Andrews
1866

19-
generate_summary_faq: true
67+
generate_summary_faq: false
2068
rerun_summary: false
2169
rerun_faqs: false
2270

content/learning-paths/cross-platform/automate-mcp-with-testcontainers/_index.md

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,56 @@ prerequisites:
1717
- Basic familiarity with Python, PyTest, and container concepts
1818
- Familiarity with the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) specification
1919

20+
# START generated_summary_faq
21+
generated_summary_faq:
22+
template_version: summary-faq-v3
23+
generated_at: '2026-07-02T17:12:52Z'
24+
generator: ai
25+
ai_assisted: true
26+
ai_review_required: true
27+
model: gpt-5
28+
prompt_template: summary-faq-v3
29+
source_hash: 597877722e5f277e5558e29ecd33878ac2262b70a84a9769325b3c3b0ce06e58
30+
summary_generated_at: '2026-07-02T17:12:52Z'
31+
summary_source_hash: 597877722e5f277e5558e29ecd33878ac2262b70a84a9769325b3c3b0ce06e58
32+
faq_generated_at: '2026-07-02T17:12:52Z'
33+
faq_source_hash: 597877722e5f277e5558e29ecd33878ac2262b70a84a9769325b3c3b0ce06e58
34+
summary: >-
35+
You'll automate integration testing of Model Context Protocol (MCP)
36+
servers using PyTest and Testcontainers. First, you'll prepare a Python and Docker environment,
37+
verify Docker availability, and run a short Testcontainers example to start a disposable container
38+
and execute commands inside it. Then, you'll build a minimal integration test suite for
39+
the Arm MCP server, focusing on JSON-RPC 2.0 communication over standard input and output.
40+
Finally, you'll add a GitHub Actions workflow to run the tests on every push and pull request
41+
using native Arm64 runners with Docker. By the end, you'll have containerized tests that validate
42+
MCP server behavior locally and in continuous integration.
43+
faqs:
44+
- question: How do I know Docker is ready before running the examples?
45+
answer: >-
46+
Run docker info and confirm it returns configuration details without errors. If it fails,
47+
start the Docker daemon and retry.
48+
- question: What should I expect when I run the basic Testcontainers example?
49+
answer: >-
50+
It starts a long-running container, executes a command inside it, and then cleans up when
51+
the script ends. Seeing the command output and a clean exit indicates the example worked.
52+
- question: How do the integration tests communicate with an MCP server?
53+
answer: >-
54+
MCP uses JSON-RPC 2.0 over standard input/output, so tests exchange JSON-RPC messages with
55+
the server process. When containerized, Testcontainers manages the server lifecycle during
56+
each test run.
57+
- question: Where can I find a complete reference implementation of the tests?
58+
answer: >-
59+
A full test implementation is available in the Arm MCP repository under mcp-local/tests/.
60+
You can consult those files while building your own suite.
61+
- question: Which events should trigger the GitHub Actions workflow, and where is it defined?
62+
answer: >-
63+
The workflow runs on push and pull_request and is defined at `.github/workflows/integration-tests.yml`.
64+
GitHub’s native Arm64 runners include Docker.
65+
# END generated_summary_faq
66+
2067
author: Neethu Elizabeth Simon
2168

22-
generate_summary_faq: true
69+
generate_summary_faq: false
2370
rerun_summary: false
2471
rerun_faqs: false
2572

content/learning-paths/cross-platform/avh_cicd/_index.md

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,55 @@ learning_objectives:
1414
prerequisites:
1515
- Some familiarity with CI/CD concepts is assumed
1616

17+
# START generated_summary_faq
18+
generated_summary_faq:
19+
template_version: summary-faq-v3
20+
generated_at: '2026-07-02T17:13:33Z'
21+
generator: ai
22+
ai_assisted: true
23+
ai_review_required: true
24+
model: gpt-5
25+
prompt_template: summary-faq-v3
26+
source_hash: b6a7439a701f6ae09ce8c61f02150a61fa6ecc1151050e903492e16794999676
27+
summary_generated_at: '2026-07-02T17:13:33Z'
28+
summary_source_hash: b6a7439a701f6ae09ce8c61f02150a61fa6ecc1151050e903492e16794999676
29+
faq_generated_at: '2026-07-02T17:13:33Z'
30+
faq_source_hash: b6a7439a701f6ae09ce8c61f02150a61fa6ecc1151050e903492e16794999676
31+
summary: >-
32+
You'll connect Arm Virtual Hardware (AVH) to a GitHub Actions CI/CD
33+
workflow for embedded software. First, you'll prepare a GitHub repository by forking an example
34+
project, generate a Personal Access Token with permission to update workflow files, and set
35+
up an AVH instance using the Arm Virtual Hardware install guide. Then, you'll enable GitHub
36+
Actions on the fork and add a self-hosted runner on an AWS host, selecting a Linux image
37+
and x64 architecture to match the instance. By the end, the repository is configured to use
38+
an AVH-backed self-hosted runner so workflows can drive automated testing and validation for
39+
bare‑metal targets.
40+
faqs:
41+
- question: Which permission should I enable on the GitHub Personal Access Token?
42+
answer: >-
43+
Enable the token to update GitHub Action workflows. Generate it under **Settings > Developer
44+
settings > Personal access tokens** and save it locally.
45+
- question: Where do I run the self-hosted runner setup commands?
46+
answer: >-
47+
Run the commands shown after selecting **New self-hosted runner** on the machine that will host
48+
the runner. Use the AWS instance where Arm Virtual Hardware is set up.
49+
- question: Which runner image and architecture should I choose?
50+
answer: >-
51+
Set **Runner image** to **Linux** and **Architecture** to **x64**. This matches the AWS instance as specified
52+
in the steps.
53+
- question: How do I enable GitHub Actions on my fork?
54+
answer: >-
55+
Open the Actions tab in your fork. If workflows are disabled, click **I understand my workflows,
56+
go ahead and enable them**.
57+
- question: How do I verify that the self-hosted runner is available to the repository?
58+
answer: >-
59+
Open **Settings > Actions > Runners** in the repository and confirm the runner appears in the
60+
list. If it doesn't, re-check the setup commands on the instance.
61+
# END generated_summary_faq
62+
1763
author: Pareena Verma
1864

19-
generate_summary_faq: true
65+
generate_summary_faq: false
2066
rerun_summary: false
2167
rerun_faqs: false
2268

content/learning-paths/cross-platform/avh_cicd2/_index.md

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,56 @@ prerequisites:
1515
- This learning path builds on [Integrate Arm Virtual Hardware into CI/CD workflow 1](/learning-paths/cross-platform/avh_cicd/).
1616
- Valid AWS and GitHub accounts are required
1717

18+
# START generated_summary_faq
19+
generated_summary_faq:
20+
template_version: summary-faq-v3
21+
generated_at: '2026-07-02T17:14:08Z'
22+
generator: ai
23+
ai_assisted: true
24+
ai_review_required: true
25+
model: gpt-5
26+
prompt_template: summary-faq-v3
27+
source_hash: 251b6edf6a016f9fc73eb35216f56b2001465fbca8253bd7b6e6f9f4afcd25e6
28+
summary_generated_at: '2026-07-02T17:14:08Z'
29+
summary_source_hash: 251b6edf6a016f9fc73eb35216f56b2001465fbca8253bd7b6e6f9f4afcd25e6
30+
faq_generated_at: '2026-07-02T17:14:08Z'
31+
faq_source_hash: 251b6edf6a016f9fc73eb35216f56b2001465fbca8253bd7b6e6f9f4afcd25e6
32+
summary: >-
33+
You'll extend Arm Virtual Hardware (AVH) integration by preparing an AWS account with a CloudFormation
34+
stack and connecting it to a forked GitHub repository that runs automated build and validation
35+
on AVH. First, you'll fork the `ARM-software/AVH-GetStarted` project, deploy the
36+
included CloudFormation template, and configure GitHub Actions with repository secrets. The
37+
settings include the AWS region used by the stack and a valid VPC subnet ID obtained from
38+
the AWS console. After configuration, you'll run the workflow in GitHub Actions to drive
39+
tests on AVH, providing a clear sequence from account setup to automated
40+
validation.
41+
faqs:
42+
- question: How do I get the example project used in this workflow?
43+
answer: >-
44+
Fork the [repository](https://github.com/ARM-software/AVH-GetStarted/fork) and clone your
45+
fork. The example includes a template to help set up your AWS account and documentation
46+
for the CI workflow.
47+
- question: What do I need to complete in AWS before adding GitHub secrets?
48+
answer: >-
49+
Deploy the CloudFormation stack using the template provided in the example project. After
50+
creating the stack, proceed to define the repository secrets in GitHub.
51+
- question: Which value should I use for `AWS_DEFAULT_REGION`?
52+
answer: >-
53+
Use the same AWS Region where you created the CloudFormation stack. The region must match
54+
for the workflow to reference the correct resources.
55+
- question: How do I find the `AWS_SUBNET_ID` required by the workflow?
56+
answer: >-
57+
In the AWS console, go to **VPC > Subnets** and select any valid Subnet ID. Copy that ID into
58+
the `AWS_SUBNET_ID` repository secret.
59+
- question: Where do I add the required secrets in GitHub, and do names matter?
60+
answer: >-
61+
In your forked repository, go to **Settings > Secrets > Actions**, then choose **New repository
62+
secret**. The secret names must match exactly as specified in the Learning Path.
63+
# END generated_summary_faq
64+
1865
author: Pareena Verma
1966

20-
generate_summary_faq: true
67+
generate_summary_faq: false
2168
rerun_summary: false
2269
rerun_faqs: false
2370

content/learning-paths/cross-platform/aws-greengrass-pacbti-test/_index.md

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,58 @@ prerequisites:
1919
- An NVIDIA Jetson Thor device running JetPack 7.1 or later
2020
- Familiarity with AWS IoT Core and basic cloud concepts
2121

22+
# START generated_summary_faq
23+
generated_summary_faq:
24+
template_version: summary-faq-v3
25+
generated_at: '2026-07-02T17:15:02Z'
26+
generator: ai
27+
ai_assisted: true
28+
ai_review_required: true
29+
model: gpt-5
30+
prompt_template: summary-faq-v3
31+
source_hash: 202dcb3054a983defc04c70315a3329f88ebbb20ca21039d3f24fb44314d1e09
32+
summary_generated_at: '2026-07-02T17:15:02Z'
33+
summary_source_hash: 202dcb3054a983defc04c70315a3329f88ebbb20ca21039d3f24fb44314d1e09
34+
faq_generated_at: '2026-07-02T17:15:02Z'
35+
faq_source_hash: 202dcb3054a983defc04c70315a3329f88ebbb20ca21039d3f24fb44314d1e09
36+
summary: >-
37+
This Learning Path guides you through registering a Raspberry Pi 5 and an NVIDIA Jetson Thor
38+
as AWS IoT Greengrass core devices, building a custom component that checks for Arm Pointer
39+
Authentication (PAC) and Branch Target Identification (BTI), and deploying it to both devices
40+
using a Greengrass thing group. The Raspberry Pi 5 (Armv8.2-A) acts as the negative comparison
41+
platform, while the Jetson Thor (Armv9-A) provides the positive case. After uploading the
42+
component artifact to Amazon S3 and completing the deployment, you use MQTT to trigger the
43+
checks and compare results, confirming the expected difference in PAC/BTI support.
44+
faqs:
45+
- question: How do I know both devices are ready before I create the deployment?
46+
answer: >-
47+
Check that each device is set up as an AWS IoT Greengrass core device and added to the thing
48+
group you plan to target (for example, My_PAC_BTI_Test_Devices). If both appear when selecting
49+
the group during deployment creation, you are ready to proceed.
50+
- question: Which device should report PAC/BTI support after the test runs?
51+
answer: >-
52+
Jetson Thor (Armv9-A) should report support for both PAC and BTI. Raspberry Pi 5 (Armv8.2-A)
53+
should report that neither feature is supported.
54+
- question: What should I check after uploading the component artifact to Amazon S3?
55+
answer: >-
56+
Confirm the bucket exists and that the artifact file appears in the bucket. Ensure you reference
57+
the correct bucket and object when creating the custom component.
58+
- question: How do I trigger the PAC/BTI check once the deployment is complete?
59+
answer: >-
60+
Use MQTT as described in the steps to publish the trigger for the component and then review
61+
the returned messages. The results indicate PAC/BTI support for each device.
62+
- question: What should I check if one device does not produce results after I publish the MQTT
63+
message?
64+
answer: >-
65+
Verify the device is in the selected thing group and that the deployment targeted that group.
66+
If the device is not set up as a Greengrass core device, complete that setup and redeploy.
67+
# END generated_summary_faq
68+
2269
author:
2370
- Varun Chari
2471
- Doug Anson
2572

26-
generate_summary_faq: true
73+
generate_summary_faq: false
2774
rerun_summary: false
2875
rerun_faqs: false
2976

@@ -72,3 +119,4 @@ weight: 1 # _index.md always has weight of 1 to order corr
72119
layout: "learningpathall" # All files under learning paths have this same wrapper
73120
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
74121
---
122+

content/learning-paths/cross-platform/build-a-reachy-robot-app-on-pi/_index.md

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,57 @@ prerequisites:
2222
- Basic Python and Bash terminal experience.
2323
- (Optional) [Reachy Mini](https://huggingface.co/reachy-mini)
2424

25+
# START generated_summary_faq
26+
generated_summary_faq:
27+
template_version: summary-faq-v3
28+
generated_at: '2026-07-02T17:15:58Z'
29+
generator: ai
30+
ai_assisted: true
31+
ai_review_required: true
32+
model: gpt-5
33+
prompt_template: summary-faq-v3
34+
source_hash: d021122b9217e2326e98d45aeffccb742357e77a7774f9c469d2c73285ca91a9
35+
summary_generated_at: '2026-07-02T17:15:58Z'
36+
summary_source_hash: d021122b9217e2326e98d45aeffccb742357e77a7774f9c469d2c73285ca91a9
37+
faq_generated_at: '2026-07-02T17:15:58Z'
38+
faq_source_hash: d021122b9217e2326e98d45aeffccb742357e77a7774f9c469d2c73285ca91a9
39+
summary: >-
40+
This Learning Path guides you to build a distributed edge AI application where a Raspberry
41+
Pi 5 performs on-device gesture recognition with MediaPipe and TensorFlow Lite and sends commands
42+
to a Reachy Mini robot running in a MuJoCo simulation on a development machine. You set up
43+
the Pi, enable Git LFS to retrieve the gesture model, run the app, and open a browser dashboard
44+
on port 8042 to deliver thumbs-up or thumbs-down verdicts that trigger Reachy’s reactions.
45+
The steps explain how the Pi connects to the robot daemon over the network and how to operate
46+
the dashboard, then walk through the code structure that separates perception, logic, robot
47+
motion, and static assets so you can extend or adapt the project.
48+
faqs:
49+
- question: I cloned the project but the gesture model file is tiny—did Git LFS work?
50+
answer: >-
51+
Verify that you installed and enabled Git LFS before cloning. Re-clone with LFS enabled
52+
and check that assets/gesture_recognizer.task is a large binary file, not a small text pointer.
53+
- question: The dashboard doesn’t open at http://localhost:8042—what should I try?
54+
answer: >-
55+
If you use VS Code Remote SSH, confirm that port forwarding is active. Otherwise, open http://<pi-ip-address>:8042
56+
from a browser on the same network and make sure the app is running on the Raspberry Pi.
57+
- question: How do I know the Raspberry Pi is connected to the MuJoCo simulation?
58+
answer: >-
59+
When you show a thumbs-up or thumbs-down, the simulated Reachy Mini should perform the corresponding
60+
victory or defeat reaction. If nothing happens, check that both machines are on the same
61+
network and that the connection settings in main.py point to the correct host.
62+
- question: Can I run the Raspberry Pi headless for this app?
63+
answer: >-
64+
Yes. Open the dashboard from another machine using the Raspberry Pi’s IP address and port
65+
8042; the Pi does not need a local display.
66+
- question: Where do I change gesture handling or robot moves in the code?
67+
answer: >-
68+
Edit gesture.py to adjust recognition or mapping and moves.py to change motion routines.
69+
Use main.py to wire the app and update the settings used for the distributed simulation
70+
route.
71+
# END generated_summary_faq
72+
2573
author: Matt Cossins
2674

27-
generate_summary_faq: true
75+
generate_summary_faq: false
2876
rerun_summary: false
2977
rerun_faqs: false
3078

@@ -75,3 +123,4 @@ weight: 1 # _index.md always has weight of 1 to order corr
75123
layout: "learningpathall" # All files under learning paths have this same wrapper
76124
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
77125
---
126+

0 commit comments

Comments
 (0)