# Deploy ExecuTorch firmware on NXP FRDM i.MX 93 for Ethos-U65 acceleration

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/observing-ethos-u-on-nxp/)
- [Understand ExecuTorch deployment on NXP with Ethos-U](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/observing-ethos-u-on-nxp/1-overview/)
- [Boot the NXP FRDM i.MX 93 board](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/observing-ethos-u-on-nxp/2-boot-nxp/)
- [Set up the ExecuTorch build environment](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/observing-ethos-u-on-nxp/4-environment-setup/)
- [Build and install ExecuTorch](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/observing-ethos-u-on-nxp/6-build-executorch/)
- [Build ExecuTorch models for Ethos-U65](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/observing-ethos-u-on-nxp/7-build-executorch-pte/)
- [Build Cortex-M33 firmware for ExecuTorch](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/observing-ethos-u-on-nxp/9-build-executorch-runner-for-cm33/)
- [Deploy and test on FRDM-IMX93](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/observing-ethos-u-on-nxp/10-deploy-executorchrunner-nxp-board/)
- [Next Steps](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/observing-ethos-u-on-nxp/_next-steps/)

## About this Learning Path

| Skill level:         | Introductory          |
|---------------------|----------------------|
| Reading time:       | 2 hrs                |
| Last updated:       | 13 Aug 2026          |

### Authors:
- Waheed Brown, Arm [GitHub](https://github.com/https://github.com/armwaheed), [LinkedIn](https://linkedin.com/in/https://www.linkedin.com/in/waheedbrown/)
- Fidel Makatia Omusilibwa [GitHub](https://github.com/fidel-makatia), [LinkedIn](https://linkedin.com/in/fidel-makatia-hsc-mieee)

### Arm IP:
- [Cortex-A](https://support.arm.com/?tab=compute-ip&Product%20Type=Application%20Processors)
- [Cortex-M](https://support.arm.com/?tab=compute-ip&Product%20Type=Microcontrollers)
- [Ethos-U](https://support.arm.com/?tab=compute-ip&Product%20Type=Neural%20Processing%20Units)

### Tags:
- [ML](/tag/ml)
- [Linux](/tag/linux)
- [macOS](/tag/macos)
- [Baremetal](/tag/baremetal)
- [Python](/tag/python)
- [PyTorch](/tag/pytorch)
- [ExecuTorch](/tag/executorch)
- [Arm Compute Library](/tag/arm-compute-library)
- [GCC](/tag/gcc)

### Who is this for?
This is an introductory topic for developers and data scientists new to TinyML who want to observe ExecuTorch performance on a physical device.

### What will you learn?
Upon completion of this Learning Path, you will be able to:
- Bring up a custom ExecuTorch `executor_runner` firmware on the FRDM i.MX 93 Cortex-M33 using Linux RemoteProc
- Compile an ExecuTorch `.pte` model for Ethos-U65 and run inference with NPU acceleration
- Understand how heterogeneous Arm systems split responsibilities across application cores, microcontrollers, and NPUs

### Prerequisites
Before starting, you will need the following:
- An NXP [FRDM i.MX 93](https://www.nxp.com/design/design-center/development-boards-and-designs/frdm-i-mx-93-development-board:FRDM-IMX93) development board
- A USB Mini-B to USB Type-A cable, or a USB Mini-B to USB Type-C cable
- Completion of [Use Linux on an NXP FRDM i.MX 93 board](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/linux-nxp-board/) (Linux setup, login access, and file transfer)
- Basic knowledge of Machine Learning concepts
- A host computer to compile ExecuTorch libraries

### Summary
You’ll run an ExecuTorch model on the FRDM i.MX 93 Cortex-M33 with Ethos-U65 acceleration. First, you’ll prepare a build environment, compile `executor_runner` firmware and a U65-targeted `.pte` model. Then, you’ll transfer both artifacts to the board. You’ll start the firmware from Linux with RemoteProc and observe inference across the Cortex-M33 and NPU.

### Frequently asked questions

<details>
<summary>Which USB connector should I use for the serial console, and what do I need on macOS?</summary>
Use the DEBUG USB-C connector on the board. On macOS, install the Silicon Labs USB-to-UART driver and a serial terminal such as `picocom` (for example, install it with `brew install picocom`).
</details>

<details>
<summary>Why build ExecuTorch inside a Docker container on macOS?</summary>
Building inside a Docker container provides an Ubuntu build environment that matches the toolchains used in this Learning Path, and avoids gaps in macOS-native cross-compilers. The container is only for building and produces prebuilt ExecuTorch libraries and `.pte` files that you’ll copy to the FRDM i.MX 93.
</details>

<details>
<summary>After installing ExecuTorch, how do I confirm the package is available?</summary>
Run `pip list | grep executorch` and check that `executorch` appears in the output.
</details>

<details>
<summary>What artifacts must be present before starting the firmware with Linux RemoteProc?</summary>
Copy the U65-compiled `.pte` model and the `executor_runner` ELF to the board. The runner loads the `.pte`, prepares buffers, and invokes the NPU or CPU backend on the Cortex-M33.
</details>

<details>
<summary>What output should I expect when the MobileNet V2 model compiles successfully?</summary>
The compilation output reports the number of NPU operators and their coverage. For the example MobileNet V2 model, expect an output reporting 100% NPU utilization.
</details>
