В качестве операционной системы для примера будет использоваться 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. Для этого можно выполнить в терминале команду:

[text]PATH=$HOME/arm/arm-2010.09/bin:$PATH
export PATH[/text]

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

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

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

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

[text]arm-none-eabi-g++ -v[/text]

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

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

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

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

image0

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

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

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

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

image1

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

[c]/*
* main.c
*
* Created on: Dec 15, 2010
* Author: pavel
*/
int main (void)
{
int a = 1;
int b = 2;
int c = a + b;
return 0;
}[/c]

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

В консоли должна быть выведена следующая информация:
[text]**** 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.

image2

Далее будет рассмотрена работа со стандартной библиотекой периферии и отладчиком JTAG..