Для освоєння і вивчення мікроконтролера на основі Cortex M4 мною використовується отладочная плата STM32F4-Discovery з мікроконтролллером STM32F407VGT6 від компанії ST Microelectronics і тому вибір програмного забезпечення буде розглядатися в першу чергу для використання його з stm32f4discovery.
Для того щоб це "залізо" працювало так як нам треба, необхідно спочатку створити програму і потім помістити цю програму в мікроконтролер. Для цього використовуються різні програми або різне програмне забезпечення (коротко - ПО).
Toolchain - це tool і chain разом. Tool означає інструмент, chain означає "ланцюг, ланцюжок, послідовність" тобто 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 мають все необхідне.
Крім перерахованого вище програмного забезпечення є й інші, в тому числі і безкоштовні. З безкоштовних найбільш згадуваними є 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 - це наявність інтернет. Всі приклади і доповнення гойдаються з інтернет. Але це зараз не проблема.
У підсумку я зупинився на установці ST-LINK utility, CooCox CoIDE і GCC ARM Embedded, тобто поки мій toolchain складається з:
- CooCox CoIDE - для написання програм на Сі і С ++
- GNU Tools for ARM Embedded Processors - компілятор з мови Сі або С ++
- ST-LINK utility - програматор і відладчик в "одному флаконі".
Далі до цього списку додасться ще один інструмент, який мені дуже подобається. Але це вже інша історія.