Не торопитесь выбирать Arduino

На дворе уже глубокий двадцать первый век, первые процессоры с архитектурой ARM появились больше тридцати лет назад, уже много лет вы можете купить ARM Cortex-M… но широкие массы радиолюбителей продолжают хронически употреблять всяку каку, в частности AVR, под гипнозом низкого порога вхождения Arduino всерьез полагая, что микроконтроллер ATmega2560 — самое то.

Если вы используете в своих проектах AVR вообще и Arduino в частности, но подспудно чувствуете, что вам кто-то мягко, но упорно привязывает гирю к ногам; если хотите начать использовать ARM, но порог входа кажется высоковат; если хотите начать экономить на комплектующих, параллельно имея сумасшедший прирост производительности — давайте поговорим об этом.

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

Заботливо спроектированная в PCAD заготовка под PonyProg. Изготовлялась путем рисования дорожек лаком с последующим травлением в хлорном железе.

AVR — хорошее, быстрое, дешевое семейство микроконтроллеров с большим объемом набортной памяти и невысокой ценой. Правда, вернее будет сказать, что AVR был хорошим семейством микроконтроллеров с невысокой ценой. В начале двухтысячных, когда первые AVRки стали появляться в России, вовсю еще использовались микроконтроллеры семейства i8051, всерьез пытавшиеся доказать, что выполнение инструкции за 6 тактов и предельная тактовая в 12 МГц — это круто; и PIC, многие из которых можно было «очистить», только подержав полчаса под ультрафиолетовой лампой. В некоторых сферах даже хтонический зоопарк из Н1830ВЕ51, внешней микросхемы ППЗУ с ультрафиолетовым стиранием и гробоподобного эмулятора 51-ой серии считался достаточно бодрой комбинацией (ну может, чуть-чуть морально устаревшей). В то время AVR действительно был крутым, и я с наслаждением осваивал его программирование под писк дайлапного модема, закачивающего примеры конфигурирования периферии и дымок паяльника, раскочегаренного для сборки самодельного PonyProg.

Arduino — отличное, просто отличное средство для первого знакомства с миром микроконтроллеров, программирования и всего такого. Практически непригодная к применению в профессиональны сферах (ибо, если Arduino окуклить комплектом защиты входов-выходов, сделать нормальное питание и подключить нужную периферию, то разница в себестоимости по сравнению с «обычной» платой будет впечатляющей), Ардуино, однако, обладает существенным, с точки зрения начинающего специалиста, плюсом — монолитностью: в одном флаконе объединены целевая плата, программатор, отладчик и IDE. Покупая одну единственную плату и скачивая бесплатную среду разработки, можно буквально спустя пару часов весело мигать светодиодами или считывать температуру с внешнего 1-Wire термометра. Это действительно огромный плюс, особенно учитывая непростую альтернативу в виде отладочной платы + JTAG или SWD программатора + скачки, установки, настройки GNU Tools/Eclipse (или IAR EW) + написания своей первой программы (с умопомрачительным количеством настроек периферии, зашифрованных в глубинах каббалистических табличек тысяча двухсот страничного Reference manual) для любого современного ARM-Cortex контроллера, например STM32. А ведь кривая обучаемости, гадина этакая, и так давит всем своим весом во время первых попыток освоить что-либо…

IAR EW ARM Kickstart Edition — это среда разработки IAR Embedded Workbench с урезанным функционалом, но зато бесплатная. Среди отличий от платной версии упоминаются отсутствие поддержки MISRA C и «ограниченная поддержка» (но вы, скорее всего, и не собирались надоедать техподдержке фирмы IAR своими звонками). Единственное существенное ограничение — насильственное урезание максимального размера полученного бинарника до 32 кбайт, и до 16 кбайт у Cortex-M0/M1. Если размер прошивки выйдет за допустимую границу, программа не будет компилироваться.

Несмотря на ограничение размера, я считаю IAR EW Kickstart Edition просто офигенным вариантом для начинающего разработчика: дружелюбный интерфейс, масса советов и гайдлайнов в сети, встроенный программатор/отладчик.

Кстати, хочу заметить, что IAR EW для ARM стоит от $3500. Упоминаю об этом здесь не для того, чтобы поудивляться ценнику, а для того, чтобы напомнить — компилятор не только столько стоит, его еще и покупают за эти деньги.

STM32 Discovery — отладочные платы для легкого старта разработки под микроконтроллеры семейства STM32. Производитель, STMicroelectronics, позиционирует Discovery как «дешевое и полноценное» средство разработки. Действительно дешевое, вы будете приятно удивлены ценником, если присмотритесь к серии STM32 Discovery даже в российских магазинах. И действительно полноценное: платы включают в себя USB программатор/отладчик, целевой микроконтроллер (сейчас выпускается 18 наименований плат с разными контроллерами, от STM32F0 до STM32F7, прихватывая микропотребляющую STM32L0) и набор периферии, сильно разнящийся от платы к плате: от 2 светодиода + 2 кнопки до цветного сенсорного ЖКИ экрана. Все выводы микроконтроллера выведены на внешние разъемы (как у Arduino).

Давайте, наконец, познакомимся с последним фигурантом нашего разбирательства: STM32 Cube MX. Я упоминал о конфигураторе Cube MX в статье «Использование USB в STM32 на примере Virtual COM port», где писал о том, что даже настройка такого относительно сложного проекта, как USB Virtual COM port, осуществляется буквально в пару кликов мыши. Вкратце, STM32 Cube MX — это мостик, брошенный компанией STMicroelectronics над пропастью настроек периферии ARM-микроконтроллеров. Теперь стало возможно при помощи графического пользовательского интерфейса сказать программе что-то вроде: «Так, здесь у нашего микроконтроллера будет USB, вот здесь Ethernet, пара UART, вот эти ножки будут выходами, а вот эти — входами». Cube MX проверит проект на бесконфликтность (в STM32 можно в некоторых пределах жонглировать ножками, перебрасывая выводы функциональных блоков на пины, более удобные для трассировки платы) и сгенерирует заготовку проекта с настроенной периферией.

Собственно, что я хотел сказать после того, как мы немного структурировали часть микроконтроллерного паноптикума, нас окружающего? Я хотел предложить вам, в случае, если вы только начинаете свой путь разработчика аппаратного или программного обеспечения для встроенных систем на базе микроконтроллеров, не торопиться выбирать Arduino на базе AVR. Может быть, вам стоит подумать над использованием STM32 Discovery в качестве аппаратной платформы, IAR EW ARM Kickstart Edition в качестве IDE и STM32 Cube MX в качестве конфигуратора?

 

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