16. Armv8-M Mainline bare-metal (soft-float)

The thumbv8m.main-none-eabi Ferrocene target provides support for bare-metal ARMv8-M Mainline processors with the T32 ISA, using the soft-float ABI. This includes the Arm Cortex-M33, Arm Cortex-M35P, Cortex-M55 and Cortex-M85.

On this target, functions accepting f32 or f64 will have those arguments packed into integer registers. For more information on the differences between the hard-float and soft-float ABIs, see the rustc book.

For the hard-float ABI, Armv8-M Mainline bare-metal (hard-float) is also available.

By default, this target will not emit DSP or MVE instructions and it does not support using those instructions in inline assembly.

Please contact support if your use case requires DSP and/or MVE instructions; FPU support with soft-float ABI; and/or fully optimized builds for a specific CPU configuration.

16.1. Prerequisites

This target has no pre-requisites.

16.2. Archives to install

The following archives are needed when installing this target as a cross-compilation target:

  • rust-std-thumbv8m.main-none-eabi

16.3. Required compiler flags

To use the target, the following additional flags must be provided to rustc:

  • --target=thumbv8m.main-none-eabi

16.4. Testing Facade (Experimental)

Bare metal targets cannot use test harnesses that require libc. Instead, a testing facade that emulates the bare metal target can be used instead, but also provides access to std functionality.

The following additional archive is needed when installing:

  • rust-std-thumbv8m.main-ferrocene.facade-eabi

This target is the same as the one it proxies, except it includes a Linux libc, which means it can use std for testing and enriched interactive development on a Armv8-A Linux (glibc) or x86-64 Linux (glibc) host.

For more information, consult Testing Facades.