Подтвердить что ты не робот

Рука gcc toolchain как arm-эльф или arm-none-eabi, в чем разница?

Когда вы строите gcc toolchain, есть возможность построить его как англичанина или как arm-none-eabi, но в чем разница?

Сегодня я использую eabi, но это происходит потому, что все остальные, похоже, делают это... но поскольку это очень плохой аргумент, было бы очень приятно понять разницу.

Примечание. Эта инструментальная цепочка будет перекрестно компилировать код для mcu на основе Cortex-M3: s как stm32.

Спасибо


Некоторые ссылки:

EABI:

ELF:

4b9b3361

Ответ 1

Каждая пара архитектуры или архитектуры /os имеет ABI. ABI (Application binary Interface) описывает, как должны быть вызваны функции, номера системных вызовов, переданные аргументы, которые могут использоваться регистры...

Аби описывает, как компилятор должен сгенерировать ассемблер.

Если вы используете только ассемблер, вам не нужно заботиться об ABI.

arm-эльф и arm-none-eabi используют только две версии Arm ABI. Инструментальная клавиша eabi использует новую редакцию, но ее также можно назвать arm-elf-eabi, поскольку она также генерирует эльфа.

Ответ 2

Как я знаю:

arm-elf toolchain генерирует код obj для некоторых ОС, которые поддерживают исполняемый формат эльфа (пример linux ABI). ОС будет контролировать выполнение вашей программы.

arm-none-eabi toolchain генерирует OBJ-код для микроконтроллеров или микропроцессоров (для голого металла это будет EABI-встроенный ABI). Этот код загружается в чистую вспышку MC и ядра MC, запускающего его после включения питания. Нет ОС, расширенный набор команд, нет возможности для соединения с общими модулями.

Ответ 3

Вот отличное объяснение.

Наборы инструментов следуют свободному соглашению об именах: 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

Некоторые примеры:

arm-none -eabi: этот набор инструментов предназначен для архитектуры ARM, не имеет поставщика, не ориентирован на какую-либо операционную систему и соответствует ARM EABI.

arm-none-linux-gnueabi: этот набор инструментов предназначен для архитектуры ARM, не имеет поставщика, создает двоичные файлы, работающие в операционной системе Linux, и использует GNU EABI. Он используется для ориентированных на ARM систем Linux.

Ответ 4

ARM EABI - это стандарт, созданный ARM, который позволяет различным инструментальным целям создавать совместимые объекты. Например, чтобы одна инструментальная цепочка могла связывать объекты, созданные другой инструментальной цепочкой.