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:
Each architecture or architecture/os couple has an ABI. The ABI (Application binary Interface) describes how functions should be called, syscalls numbers, arguments passed, which registers can be used …
The abi describes how the compiler should generate the assembly.
If you use only assembler you don’t need to care about the ABI.
arm-elf and arm-none-eabi just use two versions of the Arm ABI. The eabi toolchain uses a newer revision, but could also be called arm-elf-eabi, as it generates elf too.