Skip to content

Commit dfcf701

Browse files
Merge pull request #2928 from madeline-underwood/soc
Soc_reviewed
2 parents 44e0cde + ba601b2 commit dfcf701

5 files changed

Lines changed: 182 additions & 156 deletions

File tree

content/learning-paths/servers-and-cloud-computing/arm-soc-migration-learning-path/_index.md

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,22 @@
11
---
2-
title: Migrate applications between Arm platforms with AI assistance
3-
4-
draft: true
5-
cascade:
6-
draft: true
2+
title: Migrate applications between Arm platforms using Kiro Arm SoC Migration Power
73

84
minutes_to_complete: 60
95

10-
who_is_this_for: This learning path is for developers migrating applications between Arm platforms using using AI-assisted tooling with Kiro's ARM SoC Migration Power. You will learn a practical, repeatable migration workflow through an example that moves an application from the cloud to the edge — from AWS Graviton (Neoverse-based) to Raspberry Pi 5 (Cortex-A based).
6+
who_is_this_for: This is an advanced topic for experienced developers who need to migrate applications between Arm-based platforms using AI-assisted tooling. You will work through a structured, repeatable migration workflow using Kiro Arm SoC Migration Power, moving an application from AWS Graviton3 (Neoverse) to Raspberry Pi 5 (Cortex-A). The techniques apply broadly to cloud-to-edge and cross-architecture migrations across the Arm ecosystem.
117

128
learning_objectives:
13-
- Install and configure Kiro's ARM SoC Migration Power
14-
- Understand a structured migration workflow applicable across Arm platforms
15-
- Use AI-guided migration to identify platform-specific and hardware-dependent code
16-
- Create Hardware Abstraction Layers with power assistance
17-
- Validate and verify migrations with automated analysis
9+
- Install and configure Kiro Arm SoC Migration Power
10+
- Apply a structured migration workflow across Arm platforms
11+
- Identify platform-specific and hardware-dependent code using AI-guided analysis
12+
- Implement hardware abstraction layers to isolate platform-specific dependencies
13+
- Validate and verify the migrated application using automated analysis
1814

1915
prerequisites:
20-
- Access to a source and target Arm platforms (the example uses AWS Graviton3 and Raspberry Pi 5)
21-
- Basic understanding of C programming
22-
- Familiarity with embedded systems, Linux environments, or cloud computing concepts
16+
- Access to both source and target Arm platforms (for example, AWS Graviton3 and Raspberry Pi 5)
17+
- Working knowledge of C programming
18+
- Familiarity with Linux development environments and basic embedded or cloud deployment concepts
19+
- Experience building applications with GCC and CMake
2320

2421
author: Daniel Schleicher
2522

@@ -45,7 +42,7 @@ tools_software_languages:
4542

4643
further_reading:
4744
- resource:
48-
title: Kiro ARM SoC Migration Power Documentation
45+
title: Kiro Arm SoC Migration Power Documentation
4946
link: https://kiro.dev/powers/arm-soc-migration
5047
type: documentation
5148
- resource:

content/learning-paths/servers-and-cloud-computing/arm-soc-migration-learning-path/graviton-development.md

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,24 @@ layout: learningpathall
77
---
88

99
## Develop application on the source Arm platform
10-
In this section, you will build and validate the application on the source Arm platform before performing any migration steps.
1110

12-
This example uses AWS Graviton3 as the source platform, however the same principles apply to any Arm-Arm migration scenario (e.g., from Raspberry Pi 4 to Pi 5, from i.MX8 to Jetson, etc.).
11+
In this section, you will build and validate the application on the source Arm platform before performing any migration steps.
1312

14-
Your development environment (Kiro IDE) remains local. The Graviton instance acts as the remote Arm test platform. This mirrors real-world workflows where development occurs locally and deployment targets remote Arm systems.
13+
This example uses AWS Graviton3 as the source platform. The same principles apply to any Arm-to-Arm migration scenario, such as Raspberry Pi 4 to Raspberry Pi 5 or i.MX8 to Jetson.
1514

16-
### Download the Application (Local Machine)
15+
### Download the application (local machine)
1716

18-
Download the `sensor-monitor` application to your local machine (where Kiro IDE is installed).
17+
Download the `sensor-monitor` application to your local machine (where Kiro IDE is installed). You inspect the project locally, then build and validate it on the Graviton3 instance.
1918

2019
```bash
2120
wget https://github.com/ArmDeveloperEcosystem/arm-learning-paths/raw/main/content/learning-paths/servers-and-cloud-computing/arm-soc-migration-learning-path/projects/sensor-monitor.tar.gz
2221
tar -xzf sensor-monitor.tar.gz
2322
cd sensor-monitor
2423
```
2524

26-
The package includes the complete source code, a Makefile, and platform-specific implementations. You will analyze and migrate this code using the ARM SoC Migration Power.
25+
The archive includes the complete source code, a Makefile, and platform-specific implementations. You will analyze and migrate this code using the Arm SoC Migration Power.
2726

28-
### Upload to the Graviton Instance for Testing
27+
### Upload to the Graviton instance for testing
2928

3029
Before migrating, verify that the application builds and runs correctly on the source Arm platform.
3130

@@ -35,7 +34,7 @@ Upload the archive to the Graviton instance:
3534
scp -i graviton-migration-key.pem sensor-monitor.tar.gz ec2-user@$(aws ec2 describe-instances --filters "Name=tag:Name,Values=graviton-migration-source" "Name=instance-state-name,Values=running" --query 'Reservations[0].Instances[0].PublicIpAddress' --output text):~
3635
```
3736

38-
### Build and Test on Graviton
37+
### Build and test on Graviton
3938

4039
Connect to the instance:
4140

@@ -51,15 +50,17 @@ cd sensor-monitor
5150
make
5251
./sensor_monitor
5352
```
54-
If successful, the application will compile with GCC (AArch64 target) and display simulated sensor readings.
53+
54+
If successful, the application compiles for AArch64 using GCC and displays simulated sensor readings.
5555

5656
This confirms:
57-
* The toolchain is functional
58-
* The application builds cleanly on Arm64 Linux
59-
60-
This state becomes your baseline reference for migration validation.
6157

62-
### Application Overview
58+
- The toolchain is functional
59+
- The application builds cleanly on Arm64 Linux
60+
61+
This validated build becomes your migration baseline. Any functional differences after migration can be compared against this known-good state.
62+
63+
### Application overview
6364

6465
The `sensor-monitor` application demonstrates a common embedded/edge design pattern: business logic separated from platform-specific hardware interaction.
6566

@@ -74,19 +75,18 @@ sensor-monitor/
7475
└── README.md # Documentation
7576
```
7677

77-
**Key Components:**
78+
**Key components:**
7879

7980
`src/main.c` - Main application that reads sensor data in a loop
8081
`include/sensor.h` - Hardware abstraction interface
8182
`platform/graviton/sensor_graviton.c` - Simulated sensor for cloud development
8283

83-
## Expected Outcome
84+
## What you've accomplished and what's next
85+
86+
In this section:
8487

85-
At this stage, you should have:
86-
- A working application running on the source Arm platform
87-
- Simulated sensor output from the Graviton instance
88-
- A validated baseline for functional comparison
89-
90-
You are now ready to analyze the code using the ARM SoC Migration Power and begin adapting it for the target platform (Raspberry Pi 5).
88+
- You built and ran the sensor-monitor application on the Graviton3 source platform
89+
- You confirmed the toolchain and build process work correctly on Arm64 Linux
90+
- You established your baseline for migration validation
9191

92-
This establishes your baseline application before migration to the target platform.
92+
In the next section, you'll use the Arm SoC Migration Power to analyze the codebase and migrate it to the target platform.
Lines changed: 41 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,43 @@
11
---
2-
title: Migrate using ARM SoC Migration Power
2+
title: Migrate using Arm SoC Migration Power
33
weight: 4
44

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

9-
## Use ARM SoC Migration Power for AI-guided migration
9+
## Use Arm SoC Migration Power for AI-guided migration
1010

11-
In this section you will learn how to use the ARM SoC Migration Power to migrate your application between Arm-based platforms. The example demonstrates migration from:
11+
In this section, you use the Arm SoC Migration Power to migrate your application between Arm-based platforms. The example demonstrates migration from:
1212

1313
- **Source:** AWS Graviton3 (Neoverse-V1, Arm64 Linux, cloud deployment)
1414
- **Target:** Raspberry Pi 5 (BCM2712, Cortex-A76, edge deployment)
1515

16-
However, the workflow applies to any Arm-to-Arm migration.
16+
However, the workflow applies to any Arm-to-Arm migration. The migration process follows four phases: discovery, architecture analysis, abstraction design, and platform-specific implementation.
1717

18-
### Initiate Migration
18+
For each step below, an example prompt for the Graviton-to-Pi-5 scenario is provided alongside a general pattern you can adapt for other platform pairs. Being explicit in your prompts improves the quality and precision of the Power’s architectural analysis.
1919

20-
Open Kiro and and describe your migration clearly using the ARM SoC Migration Power.
20+
### Initiate migration
21+
22+
Open Kiro and describe your migration clearly using the Arm SoC Migration Power.
2123

2224
Example prompt:
2325
```
24-
I want to use the ARM SoC Migration Power to migrate my sensor monitoring
26+
I want to use the Arm SoC Migration Power to migrate my sensor monitoring
2527
application from AWS Graviton3 to Raspberry Pi 5 (BCM2712). The application
2628
currently uses simulated sensors on Graviton and needs to work with real
2729
GPIO and SPI hardware on the Pi 5.
2830
```
2931

30-
The general pattern to use for other Arm-based platform migrations:
32+
The general pattern for other Arm-based platform migrations:
3133
```
32-
I want to migrate my [application type] from [source ARM SoC] to [target ARM SoC].
34+
I want to migrate my [application type] from [source Arm SoC] to [target Arm SoC].
3335
The application uses [source-specific features] and needs [target-specific features].
3436
```
35-
Being explicit improves the quality of the Power’s architectural reasoning.
3637

37-
### Discovery Phase
38+
### Discovery phase
3839

39-
The power will prompt you for information about your platforms:
40+
Provide detailed information about both platforms:
4041

4142
**Example for Graviton → Raspberry Pi 5:**
4243
```
@@ -46,56 +47,49 @@ Hardware Requirements: GPIO for LEDs, SPI for temperature sensor
4647
```
4748
Next, instruct the Power to analyze your codebase for platform dependencies:
4849

49-
Example Prompt:
50+
Example prompt:
5051
```
5152
Scan my codebase for Graviton-specific code that needs migration to BCM2712.
5253
Focus on sensor interfaces and any cloud-specific assumptions.
5354
```
5455

55-
The general pattern to use for other Arm-based platform migrations:
56+
The general pattern for other Arm-based platform migrations:
5657
```
5758
Scan my codebase for [source platform]-specific code that needs migration to [target platform].
5859
Focus on [platform-specific features].
5960
```
60-
This step ensures migration is systematic rather than ad hoc.
61+
This ensures the migration is systematic, traceable, and grounded in explicit platform assumptions.
6162

6263

63-
### Architecture Analysis
64+
### Architecture analysis
6465

6566
Now compare the architectural characteristics of the platforms.
6667

67-
Example Prompt:
68+
Example prompt:
6869
```
6970
Compare Graviton3 and BCM2712 architecture capabilities. What are the key
7071
differences I need to handle for cloud-to-edge migration?
7172
```
7273

73-
**Example output for Graviton → Pi 5:**
74-
- CPU differences (Neoverse-V1 vs Cortex-A76)
75-
- Memory constraints (cloud 64GB+ vs edge 4-8GB)
76-
- SIMD capabilities (SVE vs NEON)
77-
- Peripheral requirements (none vs GPIO/SPI/I2C)
78-
79-
The power analyzes architecture differences for any Arm SoC pair and identifies migration challenges.
74+
For Graviton3 to Pi 5, the Power identifies key differences such as CPU architecture (Neoverse-V1 vs Cortex-A76), available memory (cloud 64 GB+ vs edge 4–8 GB), SIMD capabilities (SVE vs NEON), and peripheral requirements (none vs GPIO/SPI/I2C). The Power analyzes these differences for any Arm SoC pair and identifies the migration challenges you need to address.
8075

8176
### Design the Hardware Abstraction Layer (HAL)
8277

83-
Now formalize a platform-independent interface. Ask the power to design a Hardware Abstraction Layer for your platforms:
78+
Now formalize a platform-independent interface. Ask the Power to design a Hardware Abstraction Layer (HAL) for your platforms:
8479

85-
Example Prompt:
80+
Example prompt:
8681
```
8782
Help me design a HAL layer that supports both Graviton (cloud mocks) and
8883
BCM2712 (real hardware). I need GPIO and SPI abstraction.
8984
```
9085

91-
92-
The general pattern to use for other Arm-based platform migrations:
86+
The general pattern for other Arm-based platform migrations:
9387

9488
```
9589
Help me design a HAL layer that supports both [source platform] and [target platform].
9690
I need [feature] abstraction.
9791
```
98-
The Power may propose a structured abstraction such as the example shown `hal/sensor.h`:
92+
The Power may propose a structured abstraction such as the example shown in `hal/sensor.h`:
9993

10094
```c
10195
typedef struct {
@@ -107,22 +101,22 @@ typedef struct {
107101
extern const sensor_hal_t *sensor_hal;
108102
```
109103

110-
### Implement Target Platform Support
104+
### Implement target platform support
111105

112106
Now generate or refactor platform-specific code using the Power:
113107

114-
Example Prompt:
108+
Example prompt:
115109
```
116110
Help me refactor my sensor code for BCM2712 compatibility. Show me how to
117111
implement real SPI sensor communication for the Pi 5.
118112
```
119113

120-
The general pattern to use for other Arm-based platform migrations:
114+
The general pattern for other Arm-based platform migrations:
121115
```
122116
Help me implement [feature] for [target platform]. Show me how to [specific requirement].
123117
```
124118

125-
The power will provide target platform-specific code. Example for `platform/bcm2712/sensor_bcm2712.c`:
119+
The Power will provide target platform-specific code. Example for `platform/bcm2712/sensor_bcm2712.c`:
126120

127121
```c
128122
#include "hal/spi.h"
@@ -143,24 +137,25 @@ void sensor_cleanup(void) {
143137
spi_cleanup();
144138
}
145139
```
140+
Review all generated or refactored code carefully to ensure correctness, performance, and alignment with your hardware constraints.
146141
147-
### Update the Build System
142+
### Update the build system
148143
149-
Ask the power to update your build system for multi-platform support:
144+
Ask the Power to update your build system for multi-platform support:
150145
151-
Example Prompt:
146+
Example prompt:
152147
```
153148
Update my build system for dual Graviton/BCM2712 support with proper
154149
platform selection and cross-compilation.
155150
```
156151
157-
The general pattern to use for other Arm-based platform migrations:
152+
The general pattern for other Arm-based platform migrations:
158153
```
159154
Update my build system for [source platform]/[target platform] support with proper
160155
platform selection and cross-compilation.
161156
```
162157
163-
The power will generate a platform-aware build configuration. Example `CMakeLists.txt`:
158+
The Power will generate a platform-aware build configuration. Example `CMakeLists.txt`:
164159
165160
```cmake
166161
cmake_minimum_required(VERSION 3.16)
@@ -185,12 +180,13 @@ endif()
185180
add_executable(sensor_monitor ${COMMON_SOURCES} ${PLATFORM_SOURCES})
186181
```
187182

188-
## Expected Outcome
183+
## What you've accomplished and what's next
184+
185+
In this section:
189186

190-
After completing this section, you should have used the Kiro Power to:
191-
- Analyze architecture differences between your source and target platforms
192-
- Design HAL interfaces that abstract platform differences
193-
- Generate platform-specific code for both platforms
194-
- Configure the build system for your target platform
187+
- You used the Arm SoC Migration Power to analyze architecture differences between Graviton3 and BCM2712
188+
- You designed a HAL that abstracts platform differences and preserves portability
189+
- You generated platform-specific code for the target device
190+
- You updated the build system for multi-platform support
195191

196-
This workflow applies to any ARM SoC migration, not just Graviton to Raspberry Pi 5.
192+
In the next section, you'll validate the migration by building for both platforms and running the application on the Raspberry Pi 5.

0 commit comments

Comments
 (0)