Установка тулчейна для роботи з arm7

Попередня установка

Як це не звучить кумедно, але тим не менше перш ніж почати установку тулчейна, нам потрібно виконати деякі дії по попередній підготовці компа (точніше - операційної системи). Інакше кажучи, ми повинні встановити всі необхідні компоненти Осі щоб можна було встановити тулчейн.

0. Нам потрібно встановити на комп сам Debian. Зрозуміло, якщо у вас він вже встановлений, то нічого робити не треба. Взагалі, останній стабільний дистрибутив Debian - Squeeze 6.0.6 поширюється на 8-ми DVD дисках. Також є аж 53 CD диска. Кому що подобається. Мене не влаштовує ні той, ні інший варіант. Тому я скачую перший CD диск:

Зверніть увагу на ключ «-з». Якщо у вас з яких-небудь причин обірветься закачування, то подавши ще раз цю ж команду (зрозуміло - в тому ж директорії!), Закачування продовжиться з обірваного місця, а не почнеться з початку.

Потім отриманий образ диска потрібно пропалити на CD або залити на флеш-стик (flash-stick, флешка) і встановити з цього диска дистрибутив. необхідні пакети будуть автоматично закачані по мережі.

1. Штатна установка дистрибутива не розрахована на загальний випадок, і якщо ми збираємося працювати з мікроконтролерами, то це наша проблема - доустановити необхідні пакети.

Їх небагато, і ставляться вони однією командою:

Можливо ви захочете встановити пакет:

Так само має сенс виконати ще таку команду, щоб забезпечити залежності:

Якщо хочете щоб відладчик gdb мав підтримку XML. вам потрібно буде встановити ще пару пакетів:

2. Тепер нам необхідно розчистити майданчик для розгортання проекту по збірці тулчейна. Просто, створимо окремий піддиректорій і зайдемо в нього, наприклад:

(Назва піддиректорія байдуже, можете назвати як хочете.)

Перебуваючи в нашому тільки-що створеному директорії даємо команду на клонування проекту:

Через досить-таки тривалий час в нашому директорії з'явиться піддиректорій summon-arm-toolchain. Заходимо в нього. Багато, помітять, що нам можна було не створювати свій директорій (build-arm). В общем-то вони мають рацію, але я припускаю, що в build-arm будуть розгорнуті ще деякі піддиректорії крім summon-arm-toolchain. Тому, щоб не розкидати піддиректорії по диску, я їх зосередив в одному місці.

Якщо ви не дуже розбираєтеся в git -е, то можете завантажити вихідні тулчейна також командою:

Так чи інакше, будемо вважати, що вихідні ви до себе на комп отримали. Тепер зайдемо в піддиректорій

А ось далі Вольфганг Візер (Wolfgang Wieser) пропонує виконати ще одну git -івського команду:

Я, правда, так і не зрозумів, навіщо це він робить, але може бути потім розберуся.

І нарешті нам залишається виконати останню команду, яка збере і встановить тулчейн. Але перш ніж виконувати, дочитайте до кінця, раптом, ви захочете що-небудь змінити на свій лад.

Отже, розробники summon кажуть, що можна взагалі не замарачіваться, а задати порожню команду (взагалі без параметрів):

У той же час, Вольфганг пропонує ось таке:

PREFIX - задає місце, куди буде встановлений тулчейн. Розробники (і я в тому числі!) Часто встановлюю програми в:

1. Домашній директорій в піддиректорій bin (/ home / vasja_pupkin / bin /). Це зручно, оскільки це твої проги і ти вільний робити з ними що завгодно. Хоч віруси заражають! Захисту, природно, - ніякої! Зате і доступ до них на змін - без проблем. Якщо параметр PREFIX не ставити, то за замовчуванням установка здійсниться в директорій $ (HOME) / sat.

2. Системний директорій / usr / local / bin. Сюди в основному потрапляють всі перевірені часом програми. Це довгострокове сховище. Проги сюди потрапляють, а потім користувачі про них зазвичай забувають. Ось так і працюють проги з цього місця - надійно і нескінченно тривалий час. Крім того, тут таких програм збирається досить багато. І якщо під час установки щось піде не так, то ви зіпсувати життя і собі і іншим. Тому нам краще на це місце поки не зазіхати. Можна також проводити встановлення в директорій / usr / bin. Практично вони нічим один від одного не відрізняються.

Щоб «націлити» інсталяцію сюди, задайте параметру PREFIX значення / usr / local або просто / usr. Піддиректорій bin вони будуть додані інсталятором.

SUDO - задає наявність або відсутність ознаки для виходу на рівень root-а.

Турбуватися про те, що зараз вам доведеться кожного разу набирати в шість разів більше довгу назву утиліти або компілятора - не варто. Справа в тому, що це (вибачте!) Не Шindows, і лінуксових консоль - це не віндового командний рядок. Практично, вам ніколи не знадобиться набирати довгу назву (таке як arm-none-eabi-objdump або інше). Один раз, звичайно доведеться, коли будете конфігурувати середу розробки або створювати спеціальний керуючий компілціей Makefile. але і то - швидше за все ви це закопіпастіте звідки-небудь (наприклад, з цього блогу), ніж будете самі набирати на клавіатурі. Так що все надумано. Практика покаже, що все зовсім інакше і немає приводу для занепокоєння.

OOCD_EN - дозвіл на установку пакета OpenOCD.

Цей пакет (OpenOCD) є товстим прошарком між мікро контролером і отладчиком gdb. Якщо хочете, то OpenOCD - це могутній драйвер, який вміє працювати з величезною кількістю мікроконтролерів, программаторов, налагоджувальних плат і інтерфейсів. Перебуваючи в отладчике, ви задаєте йому різні команди. Отладчик транслює їх (в) OpenOCD. OpenOCD перетравлює їх в керуючі команди апаратних программаторов. Пояснювати довше і не зрозуміліше, ніж це ви побачите на практиці. Насправді, складного нічого тут немає.

Щоб встановити OpenOCD. напишіть OOCD_EN = 1.

Забавно відзначити, що Вольфганг каже, що він не встановлює OpenOCD (OOCD_EN = 0). Він пояснює відмову від установки тим, що в поточній версії (яка буде таким чином встановлена) відсутня підтримка STM32F4. Але щоб мати підтримку цих каменів OpenOCD потрібно встановлювати інакше. У нього там ціла тема розгорнута з цього питання.

Але мені зараз не потрібно працювати з STM32F4 і, крім того, програмне забезпечення в Лінуксі прогресує дуже швидко. Не виключено, що на той час, коли ви буде виконувати установку, підтримка STM32F4 в OpenOCD вже буде реалізована. Так що вирішуйте самі - потрібно вам це чи ні.

Якщо не потрібно, робіть так як тут. Якщо потрібно, то нагадайте мені і я опишу установку OpenOCD в окремій статті.

LIBSTM32_EN - цей параметр дозволяє компіляцію невільною бібліотеки libstm3. Якщо вам потрібна ця бібліотека, то напишіть LIBSTM32_EN = 1. За замовчуванням LIBSTM32_EN = 0.

LIBOPENCM3_EN - ще одна бібліотека для роботи з ядром Cortex-M3. на цей раз - вільна. За замовчуванням LIBOPENCM3_EN = 1.

USE_LINARO - якщо ви не довіряєте команді розробників, які адаптували gcc. і хочете працювати з «ванільним» gcc. то вкажіть USE_LINARO = 0. За замовчуванням USE_LINARO = 1.

DEFAULT_TO_CORTEX_M3 - дозволяє зібрати утиліти (binutils) і компілятор gcc для генерації коду для архітектури Cortex-M3. Посилаючись на те, що тести показали, що це рішення не дуже надійно, розробники не рекомендують це робити. Замість цього, кажуть вони, краще додати опції для збірки в ваше програмне оточення (environment). За замовчуванням DEFAULT_TO_CORTEX_M3 = 0.

CPUS - кількість ядер на компі. Якщо у вас прокачаних тачка, то ви можете скоротити час збірки Тулча змусивши працювати все ядра. В іншому, за замовчуванням в даному проекті (я підкреслюю - в даному проекті, в інших проектах це не обов'язково буде так!) Кількість ядер визначається автоматично і всі вони будуть задіяні при складанні. Але якщо під час збирання ще забажаєте пограти в круту іграшку, яка жере ресурси процесора, то гальма і залипання вам будуть забезпечені. Щоб такого не сталося, вкажіть в цій опції кількість «циліндрів».

Ну ось, начебто просвітили. Тепер можна дати команду на збірку: ./summon-arm-toolchain з необхідними параметрами.

Зауваження щодо використання

Завдяки хорошій роботі Еріка Парсонджа і Бернарда Дейвісон зараз тулчейн підтримує роботу з декількома бібліотеками. Ви можете побажати використовувати такі комбінації GCC-прапорів щоб забезпечити в своєму проекті вже перевірену (в оригіналі - fledged, опери, що постала на крило) підтримку коду для обчислень з плаваючою точкою для наступних архітектур:

для ARM7TDMI-S вкажіть прапори: -mthumb -mcpu = arm7tdmi-s
для Cortex-M0 вкажіть прапори: -mthumb -mcpu = cortex-m0
для Cortex-M3 вкажіть прапори: -mthumb -mcpu = cortex-m3
для Cortex-M4 вкажіть прапори: -mthumb -mcpu = cortex-m4 -mfloat-abi = hard -mfpu = fpv4-sp-d16

Причому, за замовчуванням використовується програмна (soft) реалізація коду для роботи з плаваючою точкою, але для Cortex-M4 ви можете задати апаратну (hard) реалізацію.

Щоб подивитися список доступних комбінацій виконайте команду:

Ну ось! Тепер, здається, все?

Далі будемо розбиратися в питаннях як створюються проги для ARM / Cortex і чим (і чому) це створення відрізняється від створення прог для AVR і MSP430.

При черговій інсталяції на супер-пупер-комп'ютер-ноутбук RoverBook Parthner RT6 (Celeron-1200, RAM 64 MB мінус 4 MB для вбудованої видяха, гвинт 15 GB) закачування newlib зациклилася:

Як з'ясувалося, ftp-сервер RedHat не зміг переварити команду закачування:

Йому не сподобався прапор -no-passive-ftp. Довелося редагувати скрипт summon-arm-toolchain.

Знайдіть в скрипті функцію fetch і видаліть з команди wget цей прапор.

Схожі статті