Первое, с чем мы сталкиваемся при работе с микроконтроллерами, это с выбором компилятора с языка C. Имея дело с современными контроллерами, имеет смысл начинать именно с C а не с ассеблера, потому что система команд заточена под компиляцию с языков высокого уровня, и для новичка может быть сложна и не раскрыть всех своих возможностей. Зачастую, компилятор может создать более оптимальный код, чем начинающий программист. Тем не менее изучение ассемблера необходимо в дальнейшем, что бы контроллер смог проявить себя во всей красе.
Поскольку мы имеем дело со свободным ПО, то выбор у нас не велик. Берём GCC не особо задумываясь. На самом деле GCC это целый комплекс кросскомпиляторов с языков C, C++, Objective-C, Ada, Fortran и Java. Нас же интересуют только первые два. Последний не интересует вообще, остальные могут пригодится.
Существуют готовые сборки необходимого софта, но всегда полезно знать что откуда берётся, поэтому мы рассмотрим компиляцию компилятора1) под UNIX-like системами.
Сборка основного пакета происходит в четыре этапа.
binutils для целевой платформы arm-elfGCC для целевой платформы arm-elfarm-elf-gcc библиотеки newlibGCC с использованием 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