EABI vs OABI

From embeddedTS Manuals
Revision as of 16:58, 2 September 2011 by Mark (talk | contribs) (Created page with "= Overview = OABI was the first application binary interface for the ARM series. OABI assumes that you will have a floating point unit processor. Unfortunatly this just isn't t...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Overview

OABI was the first application binary interface for the ARM series. OABI assumes that you will have a floating point unit processor. Unfortunatly this just isn't the case for many ARM devices. On devices without a hardware FPU, compilers will attempt to talk to an FPU that doesn't exist, throw a kernel exception, and then the kernel's exception hanlder would use its built in softFPU to correctly emulate the math which is returned to the original program which called for any floating point math. This implies a context switch every time you use a float which is incredibly inefficient.

EABI was created to fix these and other inefficiencies. Instead of having the softfpu in the Linux Kernel, the compiler builds in specific support for hardfloat or softfloat. This brings huge speed increases to boards using a softfpu, and a small increase for hardware floating point CPUs. Software floating point operations using this method are noted to be approximately 10x faster than OABI.

Debian Architectures

Debian has 3 architectures for Arm at this time.

Architecture ABI FPU Releases
ARM OABI Not required, but very slow without All debian releases upto and including Lenny were OABI. It has since been deprecated.
ARMEL EABI Does not make use of FPU Lenny and beyond
ARMHF EABI FPU required. Specifically benefits from NEON architecture and VFP. Wheezy and beyond