Who is this for?

This is an advanced topic for embedded developers who want to deploy a neural network model to an Arm Cortex-M55 microcontroller using ExecuTorch and an Ethos-U85 NPU.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Compile a MobileNetV2 model for the Ethos-U85 NPU using ExecuTorch's ahead-of-time (AOT) compiler on an Arm-based cloud instance
  • Build ExecuTorch static libraries for bare-metal Cortex-M55 targets
  • Configure CMSIS project files, memory layout, and linker scripts for an ML workload on the Alif Ensemble E8
  • Run real-time image classification inference on the Ethos-U85 NPU and verify results using SEGGER Real-Time Transfer (RTT)

Prerequisites

Before starting, you will need the following:

  • Experience with C/C++ and embedded development concepts
  • An Alif Ensemble E8 DevKit with a USB-C cable
  • A SEGGER J-Link debug probe (included in the DevKit)
  • A development machine running macOS on Apple Silicon with Visual Studio Code installed
  • An AWS account or access to an Arm-based cloud instance for native Arm compilation

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll deploy a MobileNetV2 image classifier on the Alif Ensemble E8 DevKit by compiling the model and runtime for the Ethos-U85 NPU, building a CMSIS project, and running inference with SEGGER RTT output. First, you’ll validate the board, debug probe, and flashing workflow, then use an Arm-based cloud instance to produce ExecuTorch static libraries and an Ethos-U85–targeted model. Next, you’ll create an mv2_runner firmware project from the Blinky template, add the provided application code that initializes the NPU and executes inference on a test image, and integrate RTT for result reporting. Finally, you’ll make memory layout and linker updates so the model, runtime, and SRAM working set fit, enabling real-time classification on the device.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
Which core should I target when flashing and debugging the firmware?
Use the Cortex-M55 High-Performance (HP) core to orchestrate inference on the Ethos-U85. The steps assume this core for building, flashing, and running the application.
What artifacts should I expect after compiling on the Arm cloud instance?
You’ll have ExecuTorch static libraries and a compiled MobileNetV2 model targeted for the Ethos-U85. These outputs are linked into the mv2_runner firmware project.
After duplicating the Blinky example, which project files need to be updated?
Rename blinky.cproject.yml to mv2_runner.cproject.yml and replace internal references from blinky to mv2_runner. This establishes a new CMSIS project for the application.
Where do I place the provided `main.cpp` and how do I verify it works?
Place main.cpp in the mv2_runner project directory as instructed. When you flash and run the firmware, check the SEGGER RTT console for the printed classification result.
What memory changes are required for the model and runtime to fit?
Increase MRAM allocation for the embedded model (about 3.7 MB) and code (around 800 KB), and provision approximately 7.6 MB of SRAM for inference buffers. Update stack and heap sizes, and the linker script in the CMSIS project accordingly.
Next