Нравится? Делимся информацией!

среда, 10 апреля 2013 г.

Qemu.Cross компиляция под ARM (toolchains). Устраняем путаницу в названиях.





    Для создания программ под другие аппаратные платформы нежели наш ПиСюк пользуемся специально заточенными toolchain’ами (связкой программ, с помощью которых преобразовываем исходники в исполняемую программу).  Toolchain’ов - тьма. Потому в них я и запутался.
    Сейчас я стал постигать ARM процессоры. Линукс и т.п..
    Примеры тулчейнов:
1)  arm-linux-*
2) arm-none-linux-gnueabi-*
3) arm-none-eabi-*
4) arm-elf-*
5) arm-eabi-*
Примечание! где под * понимается суффикс “gcc” или “ar”, или “as”, или “g++” и т.п. (например, arm-none-linux-gnueabi-as или arm-none-linux-gnueabi-gcc )


    Чтоб не запутываться, существует клише наименования:
    arch[-vendor][-OS]-abi

  • arch - архитектура (architecture): arm, mips, x86
  • vendor - “поставщик” тулчейна: apple, linaro
  • OS - для какой ОС сделан тулчейн: linux, none (bare metal - означает, исполнение программы на голом железе - без ОС)
  • abi - используемый бинарный интерфейс приложения:  eabi, gnueabi, gnueabihf
В соответствии с этим, например:
2) arm-none-linux-gnueabi-*  - это тулчейн (может устанавливаться на Debian системы), целевой архитектурой которого является
ARM, без вендора. При помощи него создаются бинарники, которые запускаются на Линукс ОС и используют gnueabi.
3) arm-none-eabi-*   - у этого тулчейна целевая архитектура ARM, без вендора. Бинарники создаются с его помощью не для запуска на ОС, а для запуска на “голом железе” и компилируются с ARM EABI.  Очень хорошее объяснение здесь http://www.kunen.org/uC/gnu_tool.html 


    Теперь перейдем к Qemu. В разных источниках по-разному порой запускается qemu.
    При клонировании удаленного репозитория с Qemu, либо после распаковывания tar-архива мы получаем исходники Qemu. После же сборки Qemu у нас будет два объектных файла:
qemu-arm   - используется для исполнения/эмуляции ARM бинарников (так называемый режим эмуляции User-mode)
qemu-system-arm   - для загрузки ARM ОС ( Режим System-mode)

4 комментария:

  1. Отличная статья. Я на днях просидел в интернете, нигде не мог найти нормальную информацию по именованию тулчейнов

    ОтветитьУдалить
    Ответы
    1. рад что помогла статья =). на самом деле это выжимки из разных мест. искать лучше в англоязычном инете. там больше информации

      Удалить
  2. Обновил информацию про "3) arm-none-eabi-* - у этого..."

    ОтветитьУдалить
  3. годная статья, автору + , Хорошо бы добавить раздел как компилировать написанный код(например на с++) с помощью тулчейна

    ОтветитьУдалить