Содержание

Собираем кросс-компилятор ARM

Первое, с чем мы сталкиваемся при работе с микроконтроллерами, это с выбором компилятора с языка C. Имея дело с современными контроллерами, имеет смысл начинать именно с C а не с ассеблера, потому что система команд заточена под компиляцию с языков высокого уровня, и для новичка может быть сложна и не раскрыть всех своих возможностей. Зачастую, компилятор может создать более оптимальный код, чем начинающий программист. Тем не менее изучение ассемблера необходимо в дальнейшем, что бы контроллер смог проявить себя во всей красе.

Поскольку мы имеем дело со свободным ПО, то выбор у нас не велик. Берём GCC не особо задумываясь. На самом деле GCC это целый комплекс кросскомпиляторов с языков C, C++, Objective-C, Ada, Fortran и Java. Нас же интересуют только первые два. Последний не интересует вообще, остальные могут пригодится.

Существуют готовые сборки необходимого софта, но всегда полезно знать что откуда берётся, поэтому мы рассмотрим компиляцию компилятора1) под UNIX-like системами.

План сборки

Сборка основного пакета происходит в четыре этапа.

  1. Собираем binutils для целевой платформы arm-elf
  2. Собираем «голый» GCC для целевой платформы arm-elf
  3. Собираем свежеполученным arm-elf-gcc библиотеки newlib
  4. Пересобираем GCC с использованием newlib

После этого дополнительно собираем отладчик GDB и графический интерфейс к нему Insight.

Не забудьте после сборки прописать пусть в переменную PATH:

export PATH=/usr/local/arm/arm-elf/bin:$PATH

Сборка

Скачайте шаблон для сборки тулчейна toolchain-skel.tar.gz

Распакуйте в удобное место.

В подкаталог src поместите архивы с исходными кодами:

Откройте в текстовом редакторе Makefile из главного каталога и скорректируйте переменную PREFIX указав где Вы хотите разместить собраный тулчейн.

Находясь в главном каталоге выполните команду make. Дождитесь успешного завершения. :!: Сборка может занять длительное время.

Если Вам необходим отладчик дополнительно выполните команду make gdb insight.

Для использования команд собранного тулчейна добавьте путь к ним в переменную окружения PATH:

export PATH=$PATH:<PREFIX>/bin

См. также

1) извиняюсь за каламбур, но GCC компилится тоже с помощью GCC