This repository contains the source of the CMSIS software pack ARM::CMSIS-Ethos-U containing the Arm Ethos-U NPU core driver and supporting documentation. The driver supplies the low-level interface between embedded software and Arm Ethos-U55, Ethos-U65, and Ethos-U85 NPUs.
The pack provides a single-variant driver component for each supported NPU family and a multi-variant component containing support for all three families. A single-variant build selects the NPU at compile time. A multi-variant build selects the NPU product and MAC configuration for each driver instance at run time.
Applications can use the driver to initialize an NPU, configure memory access, invoke Vela-optimized ML models synchronously or asynchronously, handle interrupts, and collect performance-monitoring data.
Refer to the CMSIS-Ethos-U documentation for architecture concepts, Vela configuration, driver usage, and system-integration guidance.
| NPU support | Component variant | Backend implementation |
|---|---|---|
| Arm Ethos-U55 | Generic U55 |
source/src/ethosu_backend_u55.c |
| Arm Ethos-U65 | Generic U65 |
source/src/ethosu_backend_u65.c |
| Arm Ethos-U85 | Generic U85 |
source/src/ethosu_backend_u85.c |
| Ethos-U55, Ethos-U65, and Ethos-U85 | Multi-Variant |
All three backends |
The selected single-variant component supplies the corresponding configuration
header and NPU-family definition. The Multi-Variant component supplies all
three backends and defines ETHOSU_MULTI_VARIANT.
The documentation is organized into five sections:
- General introduces the architecture, terminology, memory modes, and deployment lifecycle.
- Vela covers compiler installation, model compilation, configuration, memory placement, and diagnostics.
- Driver describes single-variant and multi-variant configuration, memory access, the core-driver API, execution contract, platform hooks, PMU, and bring-up checks.
- Integration connects Vela output to linker placement, memory attributes, cache policy, driver configuration, and system memory budgeting.
- Zephyr explains how to configure, build, and run Ethos-U-accelerated Zephyr applications.
This is a list of the relevant files and directories.
| File or directory | Description |
|---|---|
source |
Core-driver source, public headers, single- and multi-variant NPU support, CMake build files, and Zephyr module metadata. |
interface |
CMSIS-RTOS2 and data-cache interface templates supplied by the driver components. |
examples |
CMSIS-Toolbox integration-test solutions for Ethos-U55, Ethos-U65, and Ethos-U85, including Corstone targets, TFLM models, and self-checking tests. |
documentation |
Doxygen sources for the general, Vela, driver, integration, and Zephyr guides, plus generated web content, styles, and authoring guidance. |
overview |
Pack overview content and images displayed by CMSIS tooling. |
.github |
Workflows that test the example, build the pack, and publish documentation. |
Projects that build a single-variant driver directly with CMake select the target
through ETHOSU_TARGET_NPU_CONFIG, for example ethos-u55-128.
The driver is intended to be cross-compiled for the Arm Cortex-M processor used by the target system. Configure the toolchain, processor, and Ethos-U configuration before building:
cmake -S source -B build \
-DCMAKE_TOOLCHAIN_FILE=<toolchain> \
-DCMAKE_SYSTEM_PROCESSOR=cortex-m<nr><features> \
-DETHOSU_TARGET_NPU_CONFIG=ethos-u<nr>-<macs>
cmake --build buildFor a multi-variant build, set ETHOSU_MULTI_VARIANT=ON instead of selecting
ETHOSU_TARGET_NPU_CONFIG. The build includes support for all three NPU
families. Applications use ethosu_init_ex() and ethosu_reserve_driver_ex()
to select the product and MAC configuration at run time.
When using a toolchain from the Ethos-U core platform, set TARGET_CPU instead of CMAKE_SYSTEM_PROCESSOR. See the driver README for API examples and integration requirements.
Generate the documentation from a Bash shell with:
./documentation/doxygen/gen_doc.shGenerate the CMSIS-Ethos-U software pack with:
./gen_pack.shThe pack script builds the documentation as a preprocessing step and writes the resulting archive to output by default. See the documentation authoring guide for prerequisites and document structure.
| CI workflow | Description |
|---|---|
pack |
Generates the documentation and software pack for pull requests, pushes to main, and published releases. |
gh-pages |
Deploys the generated content from the gh-pages branch to GitHub Pages. |
test-ethos-u |
Builds and runs the Ethos-U55, Ethos-U65, and Ethos-U85 integration tests with Arm Compiler 6 and GCC. |
The Test Ethos-U workflow pins Arm GNU Toolchain 14.2.1 in
vcpkg-configuration.json.
TensorFlow Lite Micro 1.26.5 is built as C++17 with exceptions and RTTI disabled,
matching the compiler settings supplied by the TensorFlow Lite Micro pack. Newer
GCC versions diagnose the pack's private class-specific operator delete when
exceptions are enabled.
The CMSIS-Ethos-U pack and core driver are licensed under the Apache License 2.0.
Contributions are accepted under the Apache License 2.0 and must include a Developer Certificate of Origin sign-off. See the driver contribution guidance for details.
Use GitHub Issues to report defects, request enhancements, or discuss documentation improvements. For security-related matters, follow the security policy.