Установка кросс-компилятора ARM

sourcery codebench

Продолжаем строить Систему-на-Кристалле Amber для платы Марсоход2.

Для любого процессора нужна программа. Писать программу теоретически можно на ассемблере или C/C++. Чтобы запустить проект Amber в нашей плате Марсоход2 нам, конечно придется писать и компилировать программы. Как это делать?

ВНИМАНИЕ! Почти все написанное ниже довольно устарело, а именно, содержит устаревшую ссылку для скачивания компилятора Sourcery Codebench.

Вместо этого лучше самому сгенерировать тулчейн по вот этой инструкции.

Как видим, в папке sw/ проекта Amber лежат всякие разные программы. Обычно начинающие программисты пишут программы типа “hello world”. Ну вот и тут мы видим папку sw/hello-world с несколькими файлами: hello-world.c, start.S, Makefile, sections.lds.

Hellow-world.c содержит по сути очень простую программу на языке C:


#include "stdio.h"
main ()
{
 printf ("Hello, World!\n");
 /* Flush out UART FIFO */
 printf ("                ");
 _testpass();
}


Функция printf печатает форматированную текстовую строку на консоль, а консоль у нас - это видимо последовательный порт.

Походим по другим папкам проекта Amber – ничего похожего на компилятор не видно. Зато в папке doc есть описание проекта на английском языке amber-spec.pdf.

Вот там-то, в главе 10.2 Installing compiler все что нам нужно и написано.

Попробуем выполнить изложенную там инструкцию.

1) переходим по первой указанной в документации ссылке https://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/ и попадаем на сайт mentor.com!

Sourcery CodeBench Web Page

2) В документации приведен скриншот нужной нам страницы, но то что я вижу сильно отличается от документации. Тем не менее, читаем внимательно, наверное здесь все же есть нужная нам ссылка для скачивания? Возможно и эта моя инструкция когда-то устареет, когда mentor.com опять поменяет страници своего сайта..

3) Ниже вижу, что можно выкачать свободный (бесплатный) компилятор Sourcery Codebench Lite Edition для нескольких платформ. Конечно, выбираем ARM, ссылка “Download GNU/Linux Release” http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/arm-gnu-linux Хм... время прошло и почему-то они больше не дают компилятор для ARM.. Что же делать? Пишут, что "Sourcery CodeBench Lite releases for ARM EABI, ARM GNU/Linux, ARM AARCH64-Linux, IA32/IA64 GNU/Linux and ELF are no longer available."

4) Появляется вот такая страница – придется заполнить форму со своим фамилией именем и email, прежде чем нам дадут скачать файл. Запоняю форму и нажимаю кнопку Get It.

Mentor Sourcery CodeBench page

На очередной странице мне сказали, что по почте выслали ссылку на скачивание Sourcery Codebench.

5) Так и есть. Я получил от них письмо. Перехожу по ссылке.

Mentor Sourcery CodeBench page

Наконец-то страница, откуда можно скачать! Кстати похоже можно выбрать компилятор работающий под Linux или работающий под Windows. Я все же выбираю для Linux.

На самом деле я пробовал выкачивать компилятор и для Windows. Такая красивая инсталяшка к нему. Ставится без проблем, вот только пользоваться для наших целей сразу не получится. Есть две проблемы:

  1. Исходники для Amber имеют Makefile, которые описывают что и как компилировать. Чтобы использовать Makefile нужно иметь установленную программу make - это такая специальная утилита. В принципе вроде бы есть make для Windows, но честно говоря было лень искать. В моем Linux программа make кажется стояла по умолчанию с самого начала.
  2. Некоторые папки проекта Amber, например, sw/tools имеют исполняемые скрипты *.sh. Наверное их так же можно было бы запустить в Windows, но не стал возиться с этим.

У меня есть виртуальная машина с Ubuntu - ее и использовал, поставил все там.

Я получил с сайта Mentor файл arm-2012.03-57-arm-none-linux-gnueabi.bin

Его нужно сделать исполняемым командами Linux:

chmod a+x arm-2012.03-57-arm-none-linux-gnueabi.bin

потом запустить

./arm-2012.03-57-arm-none-linux-gnueabi.bin

и на все вопросы отвечать нажатием клавиши Enter. После этого в домашней папке появляется папка CodeSourcery и в ней все и установлено.

Таким образом, компилятор становится установленным.

Чтобы компилировать наши исходники для Amber нужно установить переменную окружения

export AMBER_CROSSTOOL=arm-none-linux-gnueabi

и добавить к переменной PATH путь к компилятору

export PATH=$PATH:/home/nick/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin

Я написал такой инициализационный файл sw/init который задает эти переменные. Теперь после запуска терминала в Linux можно просто набрать в корне проекта

source sw/init

и все - среда разработки практически готова.

Что еще?

Да вот еще скрипты в папке sw/tools не запускаются. Чтобы это исправить им нужно задать права разрешения исполнения

chmod a+x sw/tools/*.sh

Теперь если зайти, например, в папку sw/hello-world и набрать

make

то происходит компиляция программы и появляются разные объектные и текстовые файлы - собственно результат компиляции.

 

 


Добавить комментарий