Принесет ли использование aarch64-none вместо aarch64-elf какую-либо пользу в Bare Metal?

Я слежу за Rpi 3 bare metal учебным курсом. Я потратил много времени на «голый металл» с Rpi A + и Zero, используя отличное репо Дэйва Велча и другие источники.

Самое замечательное в этом руководстве по Rpi 3 то, что

1) it's 64 bit
2) it's multi core 

С моим поверхностным пониманием, я знаю, что aarch64-elf создаст «двоичный», который может быть загружен ОС, использующей формат файла ELF, например, любой на основе Unix (Linux, OSX).

В то время как aarch64-none предназначен для «голого металла», то есть он не будет создавать информацию о загрузчике ОС в результирующий двоичный файл.

Что сбивает с толку, так это то, что Rpi 3 tutorial создает свою цепочку инструментов как aarch64-elf.

Если вы посмотрите на строку 40 make-файла, , он по-прежнему выполняет objcopy, который, как я думаю, в любом случае удалит всю информацию, относящуюся к ELF, верно?

Итак, мой вопрос: стоит ли менять их Make-файлы на aarch64-none в каждом отдельном примере? К сожалению, они не очень хорошо справились с настройкой этого параметра!

Есть ли какие-то дополнительные преимущества при использовании «голого металла» для aarch64-none? Мне все равно придется делать objcopy, верно?


person Sam Hammamy    schedule 10.04.2018    source источник
comment
На самом деле не должно быть никакой разницы в выводах, производимых двумя для одного и того же ввода.   -  person fuz    schedule 03.09.2018


Ответы (1)


Я отвечаю на ваши вопросы в другом порядке, потому что некоторые ответы имеют прямое значение для других.

1) Мне все равно придется делать objcopy?
Да.
2) Есть ли какие-либо дополнительные преимущества при использовании голого железа по сравнению с aarch64-none?
Нет, я бы не знал. Прошивка ARM и u-boot отлично компилируются с aarch64-elf, например.
3) Стоит ли менять их Make-файлы на aarch64-none в каждом отдельном примере?
Я бы сказал, что нет. Я бы предпочел загрузить и установить набор инструментов Linaro aarch64-elf из здесь:
Загрузите gcc-linaro-7.2.1-2017.11-i686_aarch64-elf.tar.xz, если ваша компилирующая система работает под управлением 32-битной версии Linux, и gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf.tar.xz, если он работает с 64-битным.

Порядок установки (x86_64 Linux):

mkdir -p /opt/linaro
wget https://releases.linaro.org/components/toolchain/binaries/latest/aarch64-elf/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf.tar.xz
tar Jxf gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf.tar.xz -C /opt/linaro
export PATH=/opt/linaro/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf/bin:$PATH

aarch64-elf-gcc  --version
aarch64-elf-gcc (Linaro GCC 7.2-2017.11) 7.2.1 20171011
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
person Frant    schedule 11.04.2018