proteus none for gcc arm elf cortex-m3 eabi

for - brazo gcc toolchain como brazo-elf o brazo-none-eabi, ¿cuál es la diferencia?



install arm none eabi gdb (4)

ARM EABI es un estándar creado por ARM que permite que diferentes cadenas de herramientas creen objetos compatibles. Por ejemplo, para que una cadena de herramientas pueda vincular objetos creados por otra cadena de herramientas.

Cuando construyes una cadena de herramientas de gcc existe la posibilidad de construirlo como elfo de armado o como brazo-no-eabi, pero ¿cuál es la diferencia?

Uso el eabi hoy, pero eso es solo porque todos los demás parecen hacer eso ... pero ya que ese es un argumento realmente malo, sería realmente agradable entender la diferencia.

Nota: Esta cadena de herramientas incluirá códigos de compilación cruzada para mcu: s basados ​​en Cortex-M3 como stm32.

Gracias

Algunos enlaces :

EABI:

DUENDE:


Aquí hay un documento excelente: https://community.freescale.com/thread/313490

Las cadenas de herramientas tienen una convención de nombres suelta como 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

algunas ilustraciones de la siguiente manera:

arm-none-eabi - Esta cadena de herramientas se dirige a la arquitectura ARM, no tiene proveedor, no se dirige a un sistema operativo y cumple con ARM EABI.

arm-none-linux-gnueabi - Esta cadena de herramientas se dirige a la arquitectura ARM, no tiene proveedor, crea binarios que se ejecutan en el sistema operativo Linux, y usa la EABI de GNU. Se usa para apuntar a sistemas Linux basados ​​en ARM.


Cada arquitectura o arquitectura / pareja tiene una ABI. La ABI (Interfaz binaria de aplicación) describe cómo se deben llamar las funciones, números de syscalls, argumentos pasados, qué registros se pueden usar ...

El abi describe cómo el compilador debe generar el ensamblador.

Si usa solo ensamblador, no necesita preocuparse por el ABI.

brazo-elf y brazo-ninguno-eabi solo usan dos versiones del brazo ABI. El eabi toolchain usa una revisión más nueva, pero también podría llamarse arm-elf-eabi, ya que también genera duende.


Que yo sé:

la cadena de herramientas de arm-elf genera código obj para algunos sistemas operativos que admiten el formato de ejecución de duende (por ejemplo, linux ABI). OS controlará la ejecución de su programa.

La cadena de herramientas arm-none-eabi genera código obj para microcontroladores o microprocesadores (para bare metal, este será EABI - embedded ABI). Este código se descarga para limpiar el flash de MC y el núcleo de MC start ejecutándolo después del encendido. Sin sistema operativo, conjunto de comandos extendido, sin posibilidad de vincular con módulos compartidos.