EABI for Linux
What is EABI?
GNU EABI is a new application binary interface (ABI) for Linux. It is part of a new family of ABIs from ARM® Ltd. known in the ARM-Linux community as EABI (or sometimes Embedded ABI). Eurotech was the first to make available a port of Debian using this new ABI for ARM systems.
Why switch to EABI?
The new EABI:
- Allows use of optimized hardfloat functions with the system's softfloat libraries
- Uses a more efficient syscall convention
- Will be more compatible with future tools
The ability to mix floating point code is the most important new feature. Like most root file systems for ARM computers, Debian has traditionally used hardfloat FPA instructions for floating point arithmetic. Very few ARM CPUs actually support FPA (a specific kind of floating point acceleration) but ARM-Linux kernels can emulate FPA instructions. They do this through illegal instruction faults which are rather inefficient. Emulating floating point instructions using softfloat (-msoftfloat) can be 4 to 10 times faster than kernel emulation. Prior to the introduction of EABI, the only way to use softfloat was to recompile the entire root file system with softfloat enabled. With EABI, softfloat instructions will be used by default and the root file system can have a mixture of softfloat and hardfloat executables. Now, if you have a system with floating point hardware -- it doesn't have to be FPA, it can be something else -- you can recompile critical software with the appropriate hardfloat instructions and run it on a system along with software that uses softfloat.
We have or will have systems that use VFP (Vector Floating Points), Maverick Crunch (Cirrus Logic), and iWMMXt (Intel) instructions. (The iWMMXt instructions are actually integer SIMD instructions but their opcodes overlap those for FPA.)
How do I use EABI?
To use EABI, you'll need to visit our support forums for installation details. The root file system includes an ARM-Linux-GNU EABI toolchain which you can use to recompile your own source code.
HOW CAN i USE eabi WITH vfp OPTIMIZATIONS?
Several of our systems support Vector Floating Point (VFP) instructions, which can be used to optimize software that makes intensive use of floating point math. We have benchmarked speed improvements of up to 400% for the libc math library, and 200% for the Mesa 3-D graphics library. We provide a page with instructions for using VFP with these libraries on EABI systems, as well as building your own software with VFP optimizations.
VFP can be used with these products.
Low-cost SBC with CAN, floating point and co-processor
Hardware vector floating point for 2-D and 3-D graphics
To learn more about our EABI build, contact us.