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

Для осваивания и изучения микроконтроллера на основе Cortex M4 мной используется отладочная плата STM32F4-Discovery с микроконтролллером STM32F407VGT6 от компании ST Microelectronics и поэтому выбор программного обеспечения будет рассматриваться в первую очередь для использования его с stm32f4discovery.

Для того чтобы это "железо" работало так как нам надо, необходимо сначала создать программу и затем поместить эту программу в микроконтроллер. Для этого используются различные программы или различное программное обеспечение (коротко - ПО).

По функциональному назначению эти программы можно разделить на редакторы, компиляторы, программы генерации кода, программаторы и отладчики.  Такой набор программ, очень часто называют toolchain и этот термин встречается очень и очень часто. Лично мне привычнее такой набор программ называть IDE (Integrated development environment - Интегрированная среда разработки).

Toolchain - это tool и chain вместе. Tool означает инструмент, chain означает "цепь, цепочка, последовательность" то есть Toolchain - это "интсрумент цепи". Почему цепи? Потому что процесс получения реально работающего микроконтроллера состоит из определенных последовательных этапов. Этапы идут друг за другом как звенья одной цепи и для каждого этапа необходим свой инструмент или, в данном случае, своя программа.

Поэтому Toolchain, насколько я понял, это набор из редактора, компилятора, программы генерации кода, программатора и отладчика.

Редакторы нужны для того чтобы люди могли писать программы на понятном им языке программирования. Причем это может быть простой текстовый редактор или редактор специально "заточенный" под определенный язык программирования.

Компиляторы и программы генерации кода переводят то, что написано человеком в редакторе, в машинный код. Это необходимо, потому что микроконтроллеры понимают только код из ноликов и единичек и совсем не понимают всё остальное.

Программаторы записывают машинный код в микропроцессор или в микроконтроллер.

Отладчики нужны для поиска ошибок человеческих в созданных ими же программах.

В документации на STM32F4DISCOVERY, в документе "UM1472: Discovery kit for STM32F407/417 lines" указано несколько toolchain, которые поддерживают STM32F4DISCOVERY. Хотя я раньше думал, что это полноценные IDE. Но раз в официальной документации написано что это toolchain, значит будем привыкать к новому термину и понятию.

Итак toolchain для STM32F4DISCOVERY:

  • Altium, TASKING™ VX-Toolset
  • Atollic, TrueSTUDIO
  • IAR, EWARM
  • Keil™, MDK-ARM

Все полнофункциональные версии этих toolchain-ов платные. Но за это они имеют всё необходимое для разработки. В них можно написать программу на Си и после нажатия на кнопочку получить машинный код и загрузить его в микроконтроллер. Эти toolchain имеют всё необходимое.

Но есть и нюансы. При просмотре примера для портов ввода/вывода (GPIO)микроконтроллера STM32F4хх в IAR EWARM (IAR Embedded Workbench for ARM) я заметил что там используется порт не такой как в STM32F4DISCOVERY. Оказалось что у компании IAR Systems есть свои отладочные платы с микроконтроллерами компании STMicroelectronics на основе Cortex-M4, но не на STM32F407VG, а на контроллере STM32F407ZG, а STM32F407ZG имеет 144 пина и примеры в IAR EWARM расчитаны именно для их отладочной платы IAR KickStart Kit for STM32F407ZG. Поэтому, если использовать примеры IAR Embedded Workbench for ARM для STM32F4-Discovery, то придется корректировать код, а для начинающего это пока сложно. Для начинающего нужны примеры которые работают сразу, а уже изменяя код программ рабочего примера, расширять свои знания. К счастью, для STM32F4-Discovery есть примеры у самой компании STMicroelectronics и их можно свободно использовать.

Помимо вышеперечисленного программного обеспечения есть и другие, в том числе и бесплатные. Из бесплатных наиболее упоминаемыми являются IDE или toolchan на базе Eclipse и CooCox CoIDE.

Их особенностью является то, что они не имеют встроенного компилятора. Для нормальной работы необходимо установить дополнительно наборы компиляторов GCC.  

GCC (GNU Compiler Collection) - это набор компиляторов для различных языков программирования, разработанный в рамках проекта GNU. Они бесплатны. Мне попались упоминания о двух таких наборах. Кто-то устанавливает GCC ARM Embedded, а кто-то CodeSourcery GCC.

  • GCC ARM Embedded или ARM GCC(GNU Tools for ARM Embedded Processors - launchpad.net/gcc-arm-embedded/+download)
  • CodeSourcery GCC (Sourcery CodeBench Lite Edition including ARM GCC IDE - mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/)

Как видим, выбирать программное обеспечение для ARM Cortex-M4 есть из чего. Моим критерием выбора было минимальное количество телодвижений для получения машинного кода из готового примера, загрузка в микроконтроллер и проверка работы "железа". Чем легче это делается, тем лучше.

IAR Embedded Workbench for ARM у меня уже был установлен, но пример с GPIO не заработал на STM32F4-Discovery, потому что их примеры ориентированы на их же отладочные платы. Примеров для STM32F4Discovery от самой компании STMicroelectronics у меня пока не было.

Далее я попробовал установить Eclipse и к нему CodeSourcery GCC. С установкой проблем не было, а вот первоначальные настройки я так и не одолел. Слишком уж многовато оказалось.

CooCox CoIDE и GCC ARM Embedded установились легко. Настойка этой пары была простой. Пример с GPIO откомпилировался и загрузился практически сразу. STM32F4 DISCOVERY замигал светодиодиками как и положено. Всё заработало. Единственное условие для нормальной работы CooCox CoIDE - это наличие интернет. Все примеры и дополнения качаются из интернет. Но это сейчас не проблема.

Для того чтобы STM32F4 - DISCOVERY был "виден" компьютером нужно установить драйвера. Я устанавливал их вместе с установкой утилиты STM32 ST-LINK utility. На страницу утилиты "STM32 ST-LINK utility" на сайте компании лучше попадать через поиск. Наберите в поиске "STSW-LINK004" и первая же ссылка приведет вас на нужную страницу.

В итоге я остановился на установке ST-LINK utility, CooCox CoIDE и GCC ARM Embedded, то есть пока мой toolchain состоит из:

  • CooCox CoIDE - для написания программ на Си и С++
  • GNU Tools for ARM Embedded Processors - компилятор с языка Си или С++
  • ST-LINK utility -  программатор и отладчик в "одном флаконе".

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

P.S.
Документ "UM1472: Discovery kit for STM32F407/417 lines" можно скачать на сайте компании STMicroelectronics со страницы посвященной STM32F4DISCOVERY - Discovery kit for STM32F407/417 lines - with STM32F407VG MCU. Лучше искать через поиск. В строке поиска набрать "STM32F4DISCOVERY" и первая же ссылка скорее всего будет указывать куда надо.