12. Armv7E-M bare-metal (hard-float)

Note

Currently the baseline target is qualified, without any specific -Ctarget-cpu or -Ctarget-feature flags mentioned in the rustc book.

Please contact support if your use case demands fully optimized builds for a specific CPU configuration, or double-precision FPU support.

The thumbv7em-none-eabihf Ferrocene target provides support for bare-metal ARMv7E-M processors with the T32 ISA, using the hard-float ABI with a single precision FPU. This includes the Arm Cortex-M4F and the single-precision variant of the Arm Cortex-M7F. The double-precision variant of the Arm Cortex-M7F is also supported but only single-precision operations will be executed on the FPU.

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

For the soft-float ABI, Armv7E-M bare-metal (soft-float) is also available.

12.1. Prerequisites

This target has no pre-requisites.

12.2. Archives to install

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

  • rust-std-thumbv7em-none-eabihf

12.3. Required compiler flags

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

  • --target=thumbv7em-none-eabihf

12.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-thumbv7em-ferrocene.facade-eabihf

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.