Данный цикл статей посвящен быстрому старту работы с микроконтроллерами STM32 на базе ядра ARM Cortex-M3. В нескольких следующих частях я собираюсь рассказать о том, как:

- сделать дешевую отладочную платку для изучения STM32;
- установить кросс-платформенное программное обеспечение, необходимое для сборки выполняемых файлов;
- установить и настроить удобную 
кросс-платформенную среду разработки на базе eclipse, для быстрой разработки, сборки и отладки написанных программ;
- создать простой проект в установленной среде разработки;
- настроить связку eclipse + OpenOCD + Versaloon  для отладки программ.
- так как много читателей используют свою отладочную плату STM32VLDiscovery, я также расскажу о ее настройке в настраиваемой среде 

Моя цель дать инструкции для разных ОС:  Windows (я буду все проделывать на Windows 7 32bit), Linux Ubuntu (проверю на 13.04 32bit), а также на ArchLinux 64bit, на которой я сейчас работаю. Разные дистрибутивы/архитектуры/версии могут потребовать индивидуальных действий. 

Если вы планируете использовать Versaloon, то важно что бы было установлено программное обеспечение для Versaloon, как это сделать я рассказывал в статьях: для Windowsдля Linux. Если же вы используете STM32VLDiscovery, то об установки ПО я расскажу тут

Конкретно в этой статье я расскажу о демоплате и об установке среды разработки, которая включает в себя инструментарий сборки и интегрированную среду разработки eclipse, обо всем остальном в следующих статьях.

Демоплата

Скачать проект Eagle, а также pdf с платой тут. Схема представляет собой дешевый контроллер STM32F100C4T6B (16 Kb flash, 4 Kb SRAM - представитель линейки Low-Density Value Line). Пины выведены на штырьки, прикручен высокочастотный кварцем на 8 MHz, пара кнопок и светодиодов:

stm32easybord_shem(2).jpg

Подписи к пинам:

stm32easybord_pins.jpg

Лутится достаточно просто:

IMG2413A.jpg

Для прошивки платы используем интерфейс SWD (что к чему подключать смотрите тут ), питать платку будем сразу от Versaloon:

IMG2438A.jpg

BOOT0 нужно посадить на GND (джампер на фотке). 

Среда сборки программ для ARM

Из инструментария для сборки и отладки программ под ARM есть два популярных решения (не считая встроенных в IDE вроде IAR EWARM):

  1. Набор Sourcery CodeBench Lite for ARM EABI фирмы Mentor Graphics (http://mentor.com/). 
  2. Набор GNU Tools for ARM Embedded Processors на основе GNU GCC (проект расположился на https://launchpad.net/gcc-arm-embedded). Поддерживается в основном силами сотрудников британской корпорации ARM (Advanced RISC Machines http://arm.com), которая собственно и занимается разработкой и лицензированием архитектуры ядра ARM.  

Оба пакета полностью кросс-платформенные (работают под win и linux), и оба поддерживает стандарт бинарного интерфейса встроенных приложений (Embedded Application Binary Interface, EABI), что означает универсальность генерируемого объектного кода. Принято считать, что коммерческое решение Sourcery CodeBench дает более оптимальный объектный код, кроме того CodeBench сопровождается отличным пакетом документации, по этому я выбрал именно его.

Оба пакета содержат программы arm-none-eabi-*. Слово none в имени означает "no operating-system", то есть компилятор генерирует код под чистое железо (bare metal).  В то же время, существует например arm-linux-gnueaby-*, который генерирует код под ОС Linux, развернутой на ARM-процессоре. 

Набор Sourcery CodeBench Lite устанавливается путем специального инсталлятора. Одолжить можно на официальном сайте: http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/arm-eabiнужно указать минимальную информацию о себе и адрес электронной почты, на которую вам придет ссылка на страницу для скачивания. Там же можно стащить несколько pdf-ников с описанием как этим делом пользоваться (а вообще они и сами установятся). На момент написания статьи последней была версия  2013.05-23 (ее вы можете также скачать у меня на ЯндексДиске). 

Линуховый инсталлятор написан на java, но почему то ему мешает что в Ubunt-e /bin/sh ссылается на dash а не на bash (О_о), ну что же, поменяем на bash. Для этого выполняем то, что просят эти раки из mentor=): 

sudo dpkg-reconfigure -plow dash

И в интерактивном окне ответим <нет>. В Arch скорее всего у вас sh уже и так cсылается на bash (А если нет то вы знаете как это поменять =) ) Теперь запускаем инсталлятор:

bash arm-2013.05-23-arm-none-eabi.bin

В форточках windows инсталлятор запускается с помощью даблклика.  

Выполняем инсталлятор: Next, "I Accept the terms of …", Next, Next, "Typycal", Next, Next, "Modify PATH for current user",  Next,  Next, Install. Ждем. "No, I...", Next, Next, Done. Что бы путь к инструментам в PATH  добавился, Ubuntu пришлось перезагрузить. В Arch даже после перезагрузки PATH не изменился, пришлось редактировать /etc/profile:

# Set our default path
PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:/home/user/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin"
export PATH

Кстати, если у вас windows, то советую зайти в переменные среды и проверить правильно ли инсталлятор добавил путь. Лично у меня путь был такой:

C:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI\bin_cache;%SystemRoot%\system32;...

не знаю что его надоумило вписать туда папку bin_cache, которой вообще не существует. Короче пришлось поправить на: 

C:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI\bin;%SystemRoot%\system32;...

После завершения установки запустите консоль (или коммандную строку) и проверьте доступен ли компилятор в PATH, запустив:

arm-none-eabi-gcc -v

Должна отобразится версия.

Eclipse

В качестве базы для среды разработки я использовал eclipse indigo SR2 for C/C++ Developers (CDT). Именно indigo, не моложе и не старше. Скачать архив для вашей ОС можно по ссылке (нажав на ОС справа): http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers-includes-incubating-components/indigosr2 (или у меня на ЯндексДиске). Архив нужно извлечь (например в С:\eclipse для win, или в /home/user/bin/eclipse для linux). 

Также можно создать ярлык для удобного запуска на файлeclipse (для linux) или на eclipse.exe (для win). Например, в xfce значек будет выглядить так:

Для запуска eclipse понадобится jre (для windows брать тут http://www.java.com/ru/download/), в Linux Ubuntu можно установить пакет openjdk-7-jre, в Arch Linux - jre7-openjdk.

Далее eclipse нужно запустить и поставить на него пару плагинов:

Для тех, кто не знает как устанавливается плагины, кратко объясню: заходим в Help->Install New Software. В строке Work with вписываем репозитарий плагина. Ищем нужный компонент и ставим галочку на нем. Нажимаем Next, Next, принимаем соглашение (Accept), Next, OK.

В eclipse существует много разных опций, позволяющих гибко настроить работу под себя. Например советую включить автосохранение всех файлов перед сборкой. Для нужно зайти в Window -> Preferences и выбрать General -> Workspace, и затем поставить галочку "Save automatically build"  

eclipsearmconf1(2).jpg

Программное обеспечение для STM32VLDiscovery

Если вы планируете использовать готовую отладочную плату STM32VLDiscovery со встроенным программатором ST-LINKv1,  то в этой части вы можете прочитать, как установить программное обеспечение для данного программатора.

Я советую воспользоваться набором утилит texane/stlink. В этот набор входит утилита st-flash, для обычной прошивки hex-файлов в контроллер, а также debug-server st-util.

texane/stlink в linux

Сначала нужно установить инструментарий для сборки ПО:

sudo apt-get install libusb-1.0-0-dev git build-essential autoconf  automake 

Потом можно скачивать исходники, и собирать:

sudo apt-get install libusb-1.0-0-dev git build-essential autoconf  automake 
 git clone https://github.com/texane/stlink stlink.git   #клоним репозитарий
./autogen.sh 
./configure
make
sudo make install
sudo cp *.rules /etc/udev/rules.d  #что бы запускать от обычного юзера
sudo udevadm control --reload-rules   #перезагружаем правила

На этом установка закончена.

texane/stlink в windows 

Как собрать texane/stlink в Windows /post/110/sborka-texane-stlink-mingw-pod-windows