В качестве операционной системы для примера будет использоваться Ubuntu 10.10.

Для того, чтобы упростить задачу, возьмем готовый toolchain от компании CodeSourcery, который позволит избежать проблем самостоятельной сборки компонентов компилятора и обеспечит поддержку и своевременное обновление.

Компоненты, необходимые для настройки:

  • Sourcery G++ Lite Edition for ARM - вариант с установщиком у меня не заработал (т.к. не поддерживает используемый в Ubuntu по умолчанию shell), поэтому рекомендую скачать версию в виде архива TAR;
  • Eclipse IDE for C/C++ Developers - opensource среда разработки для языка C/C++;
  • GNU ARM Eclipse Plug-in -
    устанавливается с помощью сервера обновлений, а чем будет рассказано
    ниже.
  • CMSIS (стандартная библиотека) от производителя микроконтроллера. Например, для NXP.

Установка Eclipse

Компилятор и среду разработки нет необходимости устанавливать в системные директории, если работать с программами предстоит только одному пользователю системы. Поэтому, для установки всех необходимых компонентов создадим директорию ~/arm в домашней директории
пользователя.

Для установки среды разработки Eclipse достаточно распаковать архив в необходимое место (директория ~/arm/eclipse).

Установка компилятора и утилит из состава Sourcery G++

Для установки компилятора, распакуем архив в ту же директорию ~/arm. В зависимости от текущей версии, имя папки будет иметь вид ~/arm/arm-2010.09.

Теперь, для того, чтобы исполняемые файлы toolchain были доступны для всей системы, необходимо добавить папку ~/arm/arm-2010.09/bin в системную переменную PATH. Для этого можно выполнить в терминале команды:

PATH=$HOME/arm/arm-2010.09/bin:$PATH
export PATH

Либо прописать необходимый путь в файле /etc/environment, для того, чтобы новый путь был доступен не только в текущем сеансе терминала. После редактирования файл должен выглядеть следующим образом:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/pavel/arm/arm-2010.09/bin"

Т.е. в конце необходимо дописать наш путь /home/имя домашней директории/arm/arm-2010.09/bin. Изменения вступят в силу после перезагрузки.

Для проверки правильности настройки путей, выполните команду в консоли:

arm-none-eabi-g++ -v

Установка плагина GNU ARM Eclipse

Плагин поддерживает такие toolchain-ы как:

  • CodeSourcery G++ Lite;
  • GNUARM;
  • WinARM;
  • Yagarto;
  • devkitPro.

Для установки, в среде разработки Eclipse необходимо выбрать пункт меню
Help/Install New Software. В появившемся диалоговом окне вводим адрес
http://gnuarmeclipse.sourceforge.net/updates

После добавления репозитория, поставьте галочку напротив пункта "CDT GNU Cross Development Tools" и жмите "Next" до окончания установки.

Помимо основного способа установки, через репозиторий проекта, возможна установка из архива, подробности на сайте проекта.

Проверка работоспособности компилятора

Создадим простой тестовый проект, для чего выберем пункт меню File/New/C Project. В появившемся диалоговом окне необходимо выбрать Sourcery C++ toolchain и ввести имя проекта.

Далее, добавим в проект файл main.c со следующим содержимым:

int main (void)
{
 int a = 1;
 int b = 2;
 int c = a + b;
 return 0;
}

И попробуем скомпилировать проект, для чего надо выбрать пункт меню
Project/Build All или просто нажать Ctrl+B.

В консоли должна быть выведена следующая информация:

\*\*\*\* Build of configuration Debug for project Test \*\*\*\*

| make all
|  Building file: ../main.c
|  Invoking: ARM Sourcery Linux GCC C Compiler
|  arm-none-eabi-gcc -O0 -Wall -Wa,-adhlns="main.o.lst" -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o"main.o" "../main.c"
|  ../main.c: In function 'main':
|  Finished building: ../main.c

| ../main.c:12:6: warning: unused variable 'c'
|  Building target: Test.elf
|  Invoking: ARM Sourcery Linux GCC C Linker
|  arm-none-eabi-gcc -nostartfiles -Wl,-Map,Test.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o"Test.elf" ./main.o
| /home/pavel/arm/arm-2010.09/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/bin/ld:warning: cannot find entry symbol \_start; defaulting to 00008000
|  Finished building target: Test.elf

| Invoking: ARM Sourcery Linux GNU Create Flash Image
|  arm-none-eabi-objcopy -O ihex Test.elf "Test.hex"
|  Finished building: Test.hex

| Invoking: ARM Sourcery Linux GNU Create Listing
|  arm-none-eabi-objdump -h -S Test.elf >"Test.lst"
|  Finished building: Test.lst

| Invoking: ARM Sourcery Linux GNU Print Size
|  arm-none-eabi-size --format=berkeley Test.elf
|  text data bss dec hex filename
|  44 0 0 44 2c Test.elf
|  Finished building: Test.siz[/text]

А в проекте в папке Binaries появиться бинарный файл прошивки Test.elf.