Version 6 (modified by Sh, on Jun 6, 2013 at 1:30:45 PM) (diff)


Table of Contents

    Error: Page Developer/Architecures/ARM/ARM-EABI does not exist


In order to support the ARM Cortex-M architecture (ARMv7-M) on RTEMS we need an appropriate GCC configuration. See also PR 1765. This GCC configuration is based on EABI version 5 as defined by ARM. One benefit of EABI version 5 is that this brings RTEMS more in line with the primary GCC platform arm-linux-gnueabi. For standards related to this please have a look at the following documents.


The name of the ARM EABI version 5 tool chain target is: arm-rtems4.11. It is available through the standard RTEMS tool distribution.

The intermediate name arm-rtemseabi4.11 is now obsolete.


  • The EABI makes the VFP floating point format mandatory and enables us to use hardware floating point support in the future. RTEMS has currently no support for hardware floating point units (the context switch part is missing).
  • The Thumb interwork support is mandatory with this ABI.
  • The exception handling implementation changes from SJLJ to a table-based system, which is not based on DWARF unwinding tables as they are too bulky for use on small embedded systems.
  • Short enums. The standard ARM EABI configuration in GCC uses short enums by default. See also ARM Architecture Procedure Call Standard (AAPCS) section 7.1.3 "Enumerated Types". This may lead to portability problems since many architectures use int as the base type for enums. The XDR library is one problem candidate.


# Default: armv4, ARM # thumb: armv4t, Thumb # armv6-m: armv6-m, subset of Thumb 2 # armv7: armv7, Thumb 2 # armv7-m: armv7-m, Thumb 2, hardware integer division (SDIV/UDIV)

Multilib 1. and 2. support the standard ARM7TDMI and ARM926EJ-S targets.

Multilib 3. supports the Cortex-M0 and Cortex-M1 cores.

Multilib 5. supports the Cortex-M3 and Cortex-M4 cores, which have a special hardware integer division instruction (this is not present in the A and R profiles).

Multilib 4. supports Cortex-A and Cortex-R variants.

Board Support Package Update HOWTO

# Throw away your linker command file and use <tt>c/src/lib/libbsp/arm/shared/startup/linkcmds.base</tt> instead. The linker command file must support the .preinit_array, .init_array, and .fini_array sections.

Legacy ARM GCC Configuration

The legacy ARM GCC configuration (also called ARM ELF, arm-none-elf) is based on a GNU EABI. This configuration is not actively maintained in GCC. There is no support for recent ARM architectures. The name ELF is a bit misleading since the file format is ELF in both cases.

The legacy configuration has been removed for RTEMS in GCC 4.8.