Установка тулчейна для работы с микроконтроллерами ARM/Cortex

Время летит быстро. Не так давно я описывал как устанавливать этот же тулчейн, откуда скачивать исходники, как компилировать и устанавливать кросс-компилятор и сопутствующие утилиты. Но время безжалостно всё это выкинуло на свалку истории. Теперь ничего этого делать не нужно. Теперь не нужны танцы с бубном и полуголыми девицами. Теперь почти весь инструментарий есть в репозиториях Debian и Ubuntu.

Собственно, рассказ о том как сейчас устанавливается этот тулчейн под катом.

У меня на разных винтах установлен Debian-8.4 и Ubuntu-16.04. Установка тулчейна на Debian и на Ubuntu практически не отличаются. Разница только в способе доступа на уровень root-а.

Установка тулчейна осуществляется одной командой:

$ sudo apt-get install gcc-arm-none-eabi

Паровозиком по зависимостям установятся стандартная библиотека С, стандартная библиотека С++ и утилиты. Они находятся в пакетах binutils-arm-none-eabi, libnewlib-arm-none-eabi, libnewlib-dev, libstdc++-arm-none-eabi-newlib.

Система так же подскажет, что в репозитории имеется так же пакет libnewlib-doc. Это документашка на стандартную библиотеку Си, но не совсем стандартную. В том плане, что это библиотека для микроконтроллеров, а не для компов. Тут есть свои тонкости.

Например, система ввода вывода. В комповой проге можно свободно написать  printf(«Hello world!»); , и вывод будет осуществлён на экран монитора. А в микроконтроллерной системе где экран монитора? У системы может вообще не быть никаких коммуникационных портов ввода-вывода. Улавливаете?

В общем, пока вы не соприкоснулись с проблемой, она не существует. Значит и пакет libnewlib-doc не особо нужен. Но если считаете, что пригодится, то команда на установку тулчейна будет следующая:

$ sudo apt-get install gcc-arm-none-eabi libnewlib-doc

И это всё, что нужно для компиляции программ!

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

Установить ПО для отладки тоже не сложно:

$ sudo apt-get install gdb-arm-none-eabi

В принципе имя пакета можно было присовокупить к предыдущей команде. Не принципиально.

В репозиториях имеется программа для заливки кода через один из последовательных портов микроконтроллера (USART, USB, CAN). Программа, как и её пакет называется stm32flash. Устанавливается тоже незатейливо:

$ sudo apt-get install stm32flash

Таким образом почти полный набор можно установить одной командой:

$ sudo apt-get install gcc-arm-none-eabi gdb-arm-none-eabi libnewlib-doc stm21flash

Я думаю, это не вызовет затруднений даже у тех, кто вчера пришел в мир Линукса.

Программа для заливки кода stm32flash не требует наличия программатора. Достаточно подсоединить микроконтроллер к компу через USB или последовательный порт.

Но, к сожалению, stm32flash не позволяет производить отладку. Для отладки нужно подсоединяться к микроконтроллеру по интерфейсу JTAG или SWD. Кроме того, нужно устройство, которое обеспечивает этот интерфейс. Например, китайский свисток stlink.

Сложность в том, что программное обеспечение для работы с stlink-ом не входит в состав репозитория. Поэтому зажигаем Луну, достаём бубен и приглашаем девушек!

Чтобы собрать программное обеспечение stlink (оно называется так же как и сам программатор-свисток), нужно установить несколько дополнительных пакетов. Нам понадобится git, gcc, make, autoconf, может быть ещё какие-то пакеты. У меня обе системы (Debian и Ubuntu) на момент сборки stlink были не совсем «чистые», я уже работал с ними и за долго до этого момента установил и git, и gcc, и ещё что-то. Я не помню что конкретно я устанавливал. Что вам конкретно нужно будет доустановить, сообразите по ходу. Читайте сообщения команд, которые будете выполнять.

Нам определённо точно понадобится установить пакеты autoconf, libtool, libusb-1.0-0-dev и libgtk-3-dev. В общем, смело выполняйте команду:

$sudo apt-get install git, gcc, make, autoconf libtool libusb-1.0-0-dev libgtk-3-dev

Если какой-то пакет уже установлен в системе, и его версия самая свежая, то его установка будет просто проигнорирована. То есть чего нет, то установится. А что есть — не изменится.

Теперь сдуваем пыль и удаляем паутину с музыкального инструмента, и следуем за шаманом:

$ mkdir temp
$ cd !$
$ git clone git://github.com/texane/stlink.git
$ cd <нажимаем Tab, а затем нажимаем Enter>

Сейчас мы находимся в директории с исходниками stlink. Энергично ударяя в бубен зазываем девиц в круг:

$ ./autogen.sh
$ ./configure --with-gtk-gui

И вот он — волшебный момент экзотического танца вокруг костра:

$ make

Ради этого стоит жить!

У меня компиляция прошла удачно, не считая полудюжины мелких варнингов:

stlink-warnings

Здесь на скриншоте предупреждения выделены довольно-таки невзрачным блекло-розовым цветом. Их даже сложно заметить. Но самом деле в полноценном окне терминала (не в псевдотерминале!) цвета намного ярче.

Эта ругань только в отношении графической утилиты stlink-gui. Дело в том, что скорость созревания Линукса просто фантастически огромная! Поэтому нередко оказывается так, что одни части программного обеспечения ушли далеко вперёд, пока другие топтались на месте.

Вот так и с утилитой stlink-gui получилось. Пока она «валялась» в течение нескольких месяцев в репозитории на github-е, графическая систем gtk, на которой построена работа графики утилиты, модернизировалась. Всё течёт, всё изменяется!

Gtk модернизировалась, и перестала поддерживать устаревшие (depricated) технологии. В целях совместимости, они еще не выкинуты совсем, но уже заглушены. Компиляция проходит, но работать они не будут! О чём, собственно, компилятор и предупреждает.

В принципе, это всё! Нам остается только проинсталировать утилиты stlink:

$ sudo make install

На этом процесс инсталляции тулчейна можно считать законченным. Пользуйтесь на здоровье!

После небольшого перерыва для тонких ценителей юных тел фуршет с благовониями и эротический массаж stlink-gui!

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s