Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

arm gcc toolchain as arm-elf or arm-none-eabi, what is the difference?

When you build a gcc toolchain there is the possibility to build it as arm-elf or as arm-none-eabi, but what is the difference?

I use the eabi today, but that is just since everyone else seem to do that... but since that is a really bad argument, it would be really nice to understand the difference.

Note: This toolchain will crosscompile code for Cortex-M3 based mcu:s like the stm32.

Thanks


Some links:

EABI:

  • http://en.wikipedia.org/wiki/Application_binary_interface
  • http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.subset.swdev.abi/index.html

ELF:

  • http://en.wikipedia.org/wiki/Executable_and_Linkable_Format
like image 284
Johan Avatar asked May 11 '11 09:05

Johan


People also ask

What is arm EABI gcc?

This is an ARM gcc toolchain for cortex M0 and M3. The configuration is optimal for ARM 7, 9, and Cortex processors running in an embedded mode (with no OS). The binaries include the following: Binary. Version.

What means arm none Eabi?

arm-none-eabi is the toolchain we use in this class. This toolchain targets the ARM architecture, has no vendor, does not target an operating system (i.e. targets a “bare metal” system), and complies with the ARM EABI.

What does Eabi mean?

The default ARM tool chain application binary interface is the Embedded Application Binary Interface (EABI). It defines the conventions for files, data types, register mapping, stack frame and parameter passing rules. The EABI is commonly used on ARM and PowerPC CPUs.


1 Answers

Here is an excellent explanation.

Toolchains follow the loose naming convention: arch [-vendor] [-os] -eabi

  arch    refers to target architecture (which in our case is ARM)
  vendor  refers to toolchain supplier
  os      refers to the target operating system
  eabi    refers to Embedded Application Binary Interface

Some examples:

arm-none-eabi: This toolchain targets the ARM architecture, has no vendor, does not target any operating system, and complies with the ARM EABI.

arm-none-linux-gnueabi: This toolchain targets the ARM architecture, has no vendor, creates binaries that run on the Linux operating system, and uses the GNU EABI. It is used to target ARM-based Linux systems.

like image 152
zhigang Avatar answered Sep 22 '22 00:09

zhigang