compile - ubuntu arm none eabi gcc 7




bras gcc toolchain comme bras-elfe ou bras-aucun-eabi, quelle est la différence? (3)

Lorsque vous construisez une chaîne d'outils gcc, il est possible de la construire en tant que bras-elfe ou en tant que bras-aucun-eabi, mais quelle est la différence?

J'utilise l'eabi aujourd'hui, mais c'est juste que tout le monde semble le faire ... mais comme c'est un très mauvais argument, ce serait vraiment bien de comprendre la différence.

Note: Cette chaîne d'outils va croiser le code pour les mcu: s basés sur Cortex-M3 comme le stm32.

Merci

Quelques liens :

EABI:

ELFE:


Chaque architecture ou architecture / couple a un ABI. L'ABI (Application binary Interface) décrit comment les fonctions doivent être appelées, les numéros syscalls, les arguments passés, quels registres peuvent être utilisés ...

L'abi décrit comment le compilateur doit générer l'assembleur.

Si vous utilisez uniquement un assembleur, vous n'avez pas besoin de vous préoccuper de l'ABI.

arm-elf et arm-none-eabi utilisent juste deux versions du bras ABI. La chaîne d'outils eabi utilise une révision plus récente, mais pourrait également s'appeler bras-elf-eabi, car elle génère aussi des elfes.


Comme je le sais:

La chaîne d'outils arm-elf génère un code obj pour certains systèmes d'exploitation qui supportent l'exécution du format elf (exemple ABI linux). OS contrôlera l'exécution de votre programme.

arm-none-eabi toolchain génère un code obj pour les micro-contrôleurs ou les microprocesseurs (pour le bare metal, ce sera l'ABI embarqué EABI). Ce code est téléchargé pour nettoyer le flash de MC et le noyau de MC commence à l'exécuter après la mise sous tension. Pas de système d'exploitation, ensemble de commandes étendu, aucune possibilité de liaison avec des modules partagés.


Voici un excellent doc: https://community.freescale.com/thread/313490

Les chaînes d'outils ont une convention de nom libre comme 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

quelques illustrations comme suit:

arm-none-eabi - Cette chaîne d'outils cible l'architecture ARM, n'a pas de fournisseur, ne cible pas un système d'exploitation et est conforme à l'EABI ARM.

arm-none-linux-gnueabi - Cette chaîne d'outils cible l'architecture ARM, n'a aucun fournisseur, crée des binaires qui s'exécutent sur le système d'exploitation Linux et utilise l'EABI GNU. Il est utilisé pour cibler les systèmes Linux basés sur ARM.





eabi