Build ExecuTorch for Cortex-M85

You already have the exported model and validation audio. You’ll package both the model and audio into a bare-metal application and run the application on a virtual Cortex-M85 and Ethos-U85 system.

Start by building ExecuTorch for Cortex-M85.

Continue from the ExecuTorch repository root. Activate the environment and build the target libraries:

    

        
        
source .venv/bin/activate
source examples/arm/arm-scratch/setup_path.sh

cmake --preset arm-baremetal \
  -DCMAKE_BUILD_TYPE=Release \
  -B cmake-out-arm
cmake --build cmake-out-arm --target install --parallel

    

The installed libraries provide the ExecuTorch runtime, portable operators, and Ethos-U backend used by the application.

Build the Silero VAD application

Configure the application with the exported model, validation audio, and a speech threshold of 0.55.

Select your host operating system:

    

        
        

cmake \
  -S examples/arm/silero_vad_example_ethos_u/runtime \
  -B silero-vad-work/app \
  -DCMAKE_TOOLCHAIN_FILE="$PWD/examples/arm/ethos-u-setup/arm-none-eabi-gcc.cmake" \
  -DET_BUILD_DIR_PATH="$PWD/cmake-out-arm" \
  -DTARGET_CPU=cortex-m85 \
  -DET_PTE_FILE_PATH="$PWD/silero-vad-work/export/silero_vad_ethos_u.pte" \
  -DAUDIO_PATH="$PWD/silero-vad-work/assets/validation.wav" \
  -DVAD_THRESHOLD=0.55 \
  -DPYTHON_EXECUTABLE="$(command -v python)"
  

    
    

        
        

cmake \
  -S examples/arm/silero_vad_example_ethos_u/runtime \
  -B silero-vad-work/app \
  -DCMAKE_TOOLCHAIN_FILE="$PWD/examples/arm/ethos-u-setup/arm-none-eabi-gcc.cmake" \
  -DET_BUILD_DIR_PATH="$PWD/cmake-out-arm" \
  -DTARGET_CPU=cortex-m85 \
  -DET_PTE_FILE_PATH="$PWD/silero-vad-work/export/silero_vad_ethos_u.pte" \
  -DAUDIO_PATH="$PWD/silero-vad-work/assets/validation.wav" \
  -DVAD_THRESHOLD=0.55 \
  -DUART0_BASE=0x49303000 \
  -DPYTHON_EXECUTABLE="$(command -v python)"
  

    

Build the configured application:

    

        
        
cmake --build silero-vad-work/app \
  --target silero_vad_ethos_u --parallel

    

The build creates silero-vad-work/app/silero_vad_ethos_u. This ELF image contains both the .pte model and the 2.5-second validation clip.

Run Silero VAD on the FVP

Run the application and save its simulated UART output to fvp.log:

    

        
        
mkdir -p silero-vad-work/fvp
set -o pipefail
bash backends/arm/scripts/run_fvp.sh \
  --elf=silero-vad-work/app/silero_vad_ethos_u \
  --target=ethos-u85-256 \
  --timeout=300 2>&1 | tee silero-vad-work/fvp/fvp.log

    

The application prints one speech probability every 32 ms. Near the end, it reports a summary and stops the simulation:

The output is similar to:

    

        
        1 segments, 79 frames, 2.5s
Speech: 57/79 frames (72.2%)
Simulation complete, 0
No problems found!

        
    

Check the target artifacts

Confirm that the application and its serial log exist:

    

        
        
for artifact in \
  silero-vad-work/app/silero_vad_ethos_u \
  silero-vad-work/fvp/fvp.log; do
  test -s "$artifact" || {
    echo "Missing target artifact: $artifact" >&2
    exit 1
  }
done

echo "Target artifacts verified."

    

What you’ve accomplished and what’s next

You’ve run the stateful Silero VAD model on a virtual Cortex-M85 and Ethos-U85 target.

Next, you’ll inspect the speech decisions and compare them with the host reference.

Back
Next