wiki:Developer/Architectures/ARM/ARM-EABI

Version 2 (modified by Sh, on Jun 29, 2011 at 12:21:42 PM) (diff)

ARM-EABI

Table of Contents

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

Overview

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.

Availability

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

Changes

  • 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.

Multilibs

# 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.

Board Support Package Status

A BSP Builds if it builds all sample applications with CXX and networking enabled. If the application link step fails due to memory constraints this does not count as an overall failure. A BSP Runs if it passes all tests. It is sufficient to run the tests on one sample of a set of BSP variants. The tests may be performed on a simulator.

{| border="1" ! Name !! Builds (Legacy) !! Runs (Legacy) !! Builds (EABI) !! Runs (EABI)

! arm1136jfs

| 2011-06-29
? 2011-06-29 ?

! arm1136js

| 2011-06-29
? 2011-06-29 ?

! arm7tdmi

| 2011-06-29
? 2011-06-29 ?

! arm920

| 2011-06-29
? 2011-06-29 ?

! armcortexa9

| 2011-06-29
? 2011-06-29 ?

! csb336

| 2011-06-29
? 2011-06-29 ?

! csb337

| 2011-06-29
? 2011-06-29 ?

! csb637

| 2011-06-29
? 2011-06-29 ?

! edb7312

| 2011-06-29
2011-06-29 2011-06-29 2011-06-29

! gba

| 2011-06-29
? 2011-06-29 ?

! gp32

| 2011-06-29
? 2011-06-29 ?

! gumstix

| 2011-06-29
? 2011-06-29 ?

! kit637_v6

| 2011-06-29
? 2011-06-29 ?

! lpc2362

| 2011-06-29
? 2011-06-29 ?

! lpc23xx_tli800

| 2011-06-29
? 2011-06-29 ?

! lpc24xx_ea

| 2011-06-29
? 2011-06-29 ?

! lpc24xx_ncs_ram

| 2011-06-29
? 2011-06-29 ?

! lpc24xx_ncs_rom_ext

| 2011-06-29
? 2011-06-29 ?

! lpc24xx_ncs_rom_int

| 2011-06-29
? 2011-06-29 ?

! lpc32xx_mzx

| 2011-06-29
? 2011-06-29 ?

! lpc32xx_mzx_stage_1

| 2011-06-29
? 2011-06-29 ?

! lpc32xx_mzx_stage_2

| 2011-06-29
? 2011-06-29 ?

! lpc32xx_phycore

| 2011-06-29
? 2011-06-29 ?

! nds

| 2011-06-29
? 2011-06-29 ?

! rtl22xx

| 2011-06-29
? 2011-06-29 ?

! rtl22xx_t

| 2011-06-29
? 2011-06-29 ?

! smdk2410

| 2011-06-29
? 2011-06-29 ?

|}

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.