Архив за месяц: Январь 2020

Как прошить чип STM32

В своей недавней статье я подробно разобрал каким образом можно прошивать программным кодом чипы семейства AVR. Сегодня же я рассмотрю способы, которыми можно прошить чипы семейства STM32. Но, я не буду приводить примеры того, как можно «залить» прошивку в микроконтроллер при помощи шнура от утюга или же варианты сопряжения CentOS установленного на Chromebook и программатора от STMicroelectronics. Пойдем по пути наименьшего сопротивления и используем современный ПК с установленной на него Windows 10 64-х битной редакции. В качестве подопытной, которую будем прошивать, возьмем фирменную плату NUCLEO-F103RB. Плата относится к серии Nucleo-64, хотя сами микроконтроллеры 32-х битные. Вероятно, что цифра 64 используется по количеству выводов чипа микроконтроллера, так как для плат серии Nucleo-64 обычно используются LQFP64 корпуса микросхем.

деревья, лес, жуть

Тот самый случай, когда за деревьями не видно леса

В платы Nucleo производитель заботливо уместил средство подключения, программирования и отладки, ST-Link. Плата просто подключается USB-кабелем к компьютеру, и если установлены драйвера, то ее можно прошивать новой прошивкой, связаться по последовательному порту и протоколу, а также начать процедуру отладки. И все по одному кабелю. Однако, ST-Link, вместе с USB-портом, выполнены на куске платы, который можно с легкостью удалить, попросту его отломав. Именно так и поступим, дабы приблизить ситуацию к наиболее распространенной, когда у нас нет встроенного программатора. Ведь нам с вами так или иначе приходится сталкиваться с чипами STM32 без каких- либо дополнительных интегрированных инструментов вообще. Но прежде, чем переходить к практике по прошивке необходимо разобраться в теории, точнее в теории управлением чипами семейства STM32.

Читать далее ...



Добавляем свою плату в PlatformIO в разрезе проекта на конкретном примере

platformio ide pio homeВот в старое время, бывало, откроешь текстовой редактор, накидаешь несколько сот строк на ассемблере, откомпилируешь одной программой, затем отлинкуешь другой и все, программа готова. А нынче? А нынче вычислительные мощности подросли настолько, что даже мои часы мощнее компьютера на котором я обучался алгоритмизации. А труд программиста почти не изменился. Разработчики все так же пишут код руками, вводят его в текстовом редакторе, затем компилируют, да линкуют. Только вот со времен Кобола, Алгола, да чистого ассемблера много чего изменилось. Сейчас никому и в голову не придет писать программу на ассемблере даже для микропроцессора. Это не только не эффективно, но и игра не стоит свечей, которые сгорят, пока программист будет выдавливать из себя инструкции для конкретного процессора. «Железо» нынче стоит куда дешевле труда человека.

Вот и появляются на свет разного рода фреймворки для облегчения труда разработчика, ускорения и упрощения написания программ. В среде микроконтроллеров настоящую революцию произвела 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.

Читать далее ...