Вот в старое время, бывало, откроешь текстовой редактор, накидаешь несколько сот строк на ассемблере, откомпилируешь одной программой, затем отлинкуешь другой и все, программа готова. А нынче? А нынче вычислительные мощности подросли настолько, что даже мои часы мощнее компьютера на котором я обучался алгоритмизации. А труд программиста почти не изменился. Разработчики все так же пишут код руками, вводят его в текстовом редакторе, затем компилируют, да линкуют. Только вот со времен Кобола, Алгола, да чистого ассемблера много чего изменилось. Сейчас никому и в голову не придет писать программу на ассемблере даже для микропроцессора. Это не только не эффективно, но и игра не стоит свечей, которые сгорят, пока программист будет выдавливать из себя инструкции для конкретного процессора. «Железо» нынче стоит куда дешевле труда человека.
Вот и появляются на свет разного рода фреймворки для облегчения труда разработчика, ускорения и упрощения написания программ. В среде микроконтроллеров настоящую революцию произвела Arduino. Простейшая среда разработки, с упрощенной библиотекой команд, да инициализацией периферии, спрятанной от разработчика. При помощи Arduino можно написать за минуту простую мигалку светодиодом, а можно потратить куда больше времени и реализовать настоящую прошивку с множеством функций. Только вот в последнем случае использовать простецкую Arduino IDE становится невыносимо трудно. Тут тебе нет отладчика, нет автодополнения, да вообще много чего нет. Возможно, что ввиду отсутствия единой системы разработки для встраиваемых систем и появилась на свет PlatfromIO IDE. Среда позволяющая разрабатывать прошивки для невероятного количества платформ и микропроцессоров со всеми возможными удобствами для разработчика.
PlatformIO поддерживает наверное все популярные платы, какие только могут быть. Поддерживается все это дело частной компанией и многочисленным комьюнити. И действительно, попробовав написать хоть небольшой проект на PlatformIO обратно на Arduino IDE возвращаться уже не захочется. Эффективность написания сложного кода для встроенных систем на PlatformIO, пожалуй, самая высокая, среди всех доступных пользователям средств. Да и IDE, став Open Source и опираясь на такие же продукты, позволяет без опаски и не пиратствуя писать свой код свободно. Прям утопия.
Но есть у всего этого малинового многообразия и отрицательная сторона, чем больше поддерживается плат и микропроцессоров в PlatformIO, тем сложнее и дольше происходит интеграция новых версий всего программного обеспечения. На такую проблему напоролся и я. Возникла необходимость написать прошивку для устройства на чипе STM32F103RE. Чип вполне актуальный, распространен, его поддерживает версия Arduino для архитектуры STM32 (STM32Duino) начиная с версии 1.7.0. Но вот беда. В PlatformIO самой актуальной версии хоть и интегрирована Arduino для STM32 от STM32Duino, но вот сам чип STM32F103RE поддерживается только устаревшей версией Arduino для STM32 (Maple). И использовать STM32Duino с PlatfromIO я не могу, хотя тот же процессор отлично прошивается через Arduino IDE с установленной поддержкой SMT32Duino. Вопиющая несправедливость, с которой следует разобраться.
Звучит сложно? Именно по этой причине, прежде чем приступать к подключению STM32F103RE к Arduino STM32Duino под PlatformIO мне пришлось на протяжении нескольких дней усиленной изучать документацию, исходные коды и сообщения на форумах. Пришлось даже вспоминать как писать на Python.
Читать далее ...