Современные микроконтроллеры имеют достаточно большую производительность и это дает многим программистом возможность думать в примерно следующем ключе: — «Ничего страшного, если 1-5% производительности уйдут на обслуживание операционной системы. Зато мой код будет легко отлаживаемый и явный!». Эти мысли подкрепляются большим количеством энергонезависимой (flash) памяти для хранения кода операционной системы и оперативной (RAM/SRAM) памяти для выделения под каждую задачу своего стека. Однако в большинстве случаев эта мысль ошибочна. И в данной статье я расскажу, почему.Читать полностью »
Рубрика «микроконтроллеры» - 13
О злоупотреблении использования операционной системы в проектах под микроконтроллеры
2019-07-25 в 11:21, admin, рубрики: freertos, nvic, личный опыт, микроконтроллеры, микроконтроллеры stm, операционные системы, прерывания, программирование микроконтроллеров, эффективное использованиеПять лет использования C++ под проекты для микроконтроллеров в продакшене
2019-07-24 в 3:41, admin, рубрики: C, c++, личный опыт, микроконтроллеры, программирование микроконтроллеровВ данной статье я расскажу, как я в течение пяти лет переводил предприятия, на которых работал, с ведения проектов под микроконтроллеры на C на C++ и что из этого вышло (спойлер: все плохо).
Читать полностью »
Как поговорить с микроконтроллером из JS
2019-07-23 в 10:44, admin, рубрики: arduino, diy или сделай сам, espruino, frontendconf, javascript, paspberry pi, Блог компании Конференции Олега Бунина (Онтико), Интернет вещей, микроконтроллеры, программирование микроконтроллеровЗачем нужен микроконтроллер? Например, чтобы устроить дома пивоварню. Если своего пивного заводика мало, то можно и что-то масштабнее: построить квест-комнату, оформить презентацию, интерактивный фонтан, который рисует картину каплями, или выставочный стенд для большой компании. С микроконтроллером можно сделать что угодно — все зависит от фантазии.
Есть заблуждение, что для создания своих железок требуется знать ассемблер, C/C++, уметь управлять памятью и глубоко понимать электричество. Когда-то так и было, но технологии развиваются и сейчас для полноценной реализации своего проекта достаточно только JS!
Ок, JavaScript мы знаем, а как соединить его с железом? Какое вообще бывает железо и что умеет? Как настроить всю систему? В расшифровке доклада Виктор Накорякова на FrontendConf узнаем: как, с помощью одного лишь JS, управлять сервоприводами, как физически объединить систему с PC, и о вариантах коммуникации приложения на JS. Обсудим пакеты serialport и Firmata, serialport с самописной прошивкой на C++, Espruino и программирование контроллера прямо на JS, Raspberry Pi, HTTP в локальной сети и HTTP и MQTT через облако.
Читать полностью »
Как передать данные между микроконтроллерами на 100 Mbps
2019-07-21 в 6:32, admin, рубрики: stm32f407, микроконтроллеры, пересылка данных, периферия, программирование микроконтроллеровВстала передо мной такая вот проблема — надо передавать данные между двумя микроконтроллерами STM32F407 хотя бы на скорости 100 Mbps. Можно было бы использовать Ethernet (MAC-to-MAC), но вот беда — он занят, именно из него и берутся эти данные…
Из незадействованной периферии есть разве что SPI — но он только 42 Mbps.
Ардуино и клавиатуры (полный гайд)
2019-07-17 в 12:43, admin, рубрики: arduino, гайд, клавиатуры, микроконтроллеры, программирование микроконтроллеров, Разработка под Arduino, Разработка робототехники, разработка электроники, Электроника для начинающихПривет! Сегодня я решил сделать полный гайд по клавиатурам для Arduino.
Внимание! Статья ориентирована преимущественно на новичков!
Во многих проектах появляется необходимость создания возможности ввода данных пользователем. Если вам нужно реализовать большое количество кнопок(относительно), то подключать их по-отдельности становится и долго, и нерационально. Для этой цели лучше выбрать какую-нибудь клавиатуру, но как и к любому выбору, к нему нужно подходить осознано. Какие же бывают виды клавиатур и как с ними взаимодействовать?
Читать полностью »
Встраиваем Lua интерпретатор в проект для микроконтроллера (stm32)
2019-07-16 в 10:42, admin, рубрики: C, cmake, Lua, stm32, микроконтроллеры, отладка, программирование микроконтроллеров, системные вызовы
В достаточно крупных приложениях немалую часть проекта составляет бизнес-логика. Эту часть программы удобно отлаживать на компьютере, после чего встраивать в состав проекта для микроконтроллера, ожидая, что эта часть будет выполняться в точности так, как было задумано без какой-либо отладки (идеальный случай).
Так как большинство программ для микроконтроллеров пишется на С/C++, то для этих целей обычно используют абстрактные классы, предоставляющие интерфейсы к низкоуровневым сущностям (в случае, если проект пишется только с использованием C, то зачастую используются структуры указателей на функции). Данный подход предоставляет требуемый уровень абстракции над железом, однако чреват надобностью в постоянной повторной компиляции проекта с последующим программированием энергонезависимой памяти микроконтроллера бинарным файлом прошивки большого объема.
Однако есть и другой путь — использование скриптового языка, позволяющего производить отладку бизнес-логики в реальном времени на самом устройстве или загружать сценарии работы прямо с внешней памяти, не включая данного кода в состав прошивки микроконтроллера.
В качестве скриптового языка я выбрал Lua.Читать полностью »
Самые частые грабли при использовании printf в программах под микроконтроллеры
2019-07-10 в 10:45, admin, рубрики: C, c++, Cpp, debug, gcc, ld script, linker, stm, Компиляторы, компоновщик, микроконтроллеры, отладка, программирование микроконтроллеров, системы сборкиВремя от времени в моих проектах приходится применять printf в связке с последовательным портом (UART или абстракция над USB, имитирующая последовательный порт). И, как обычно, времени между его применениями проходит много и я успеваю напрочь забыть все нюансы, которые требуется учитывать, чтобы он нормально работал в крупном проекте.
В данной статье я собрал свой собственный топ нюансов, которые возникают при использовании printf в программах под микроконтроллеры, сортированный по очевидности от самых очевидных к полностью неочевидным.
Читать полностью »
10++ способов работать с аппаратными регистрами на С++ (на примере IAR и Cortex M)
2019-07-08 в 13:55, admin, рубрики: c++, cortex-m, cortex-m4, templates, микроконтроллеры, микроконтроллеры stm, Программирование, программирование микроконтроллеров, С++
Рис. И. Кийко
Всем доброго здравия!
Помните наверное бородатый анекдот, а может быть и правдивую историю про то, как студента спрашивали о способе измерить высоту здания с помощью барометра. Студент привел, по-моему около 20 или 30 способов, при этом не назвав прямого(через разницу давления), которого ожидал преподаватель.
Примерно в том же ключе я хочу продолжить обсуждение использования С++ для микроконтроллеров и рассмотреть способы как можно работать с регистрами используя С++. И хочу заметить, что для достижения безопасного обращения к регистрам простого пути не будет. Попытаюсь показать все плюсы и минусы способов. Если вы знаете еще способы, кидайте их в комментарии. Итак начнем:
Читать полностью »
Делаем процесс разработки тяжеловесного программного обеспечения под микроконтроллеры более удобным (нет)
2019-07-08 в 13:24, admin, рубрики: C, c++, CLion, cmake, debug, flash, gcc, ld, ld script, linker, makefile, st-link v2, Компиляторы, компоновщик, микроконтроллеры, микроконтроллеры stm, отладка, программирование микроконтроллеров, системы сборкиСейчас уже никого не удивить микроконтроллерами с энергонезависимой (чаще всего Flash) памятью объемом 512 килобайт и более. Их стоимость постепенно снижается, а доступность напротив, растет. Наличие такого объема энергонезависимой памяти дает возможность писать «тяжелые» по объему занимаемой памяти приложения, облегчая при этом последующее сопровождение кода за счет использования готовых решений из различных стандартных библиотек. Однако это ведет к росту объема файла прошивки целевого устройства, который требуется каждый раз целиком заново загружать в энергонезависимую память микроконтроллера при малейшем изменении в коде.
Цель статьи — рассказать о методе построения проекта на C и/или C++, при котором, в случае изменения участка кода, отладка которого производится чаще всего, большая часть проекта не нуждалась в повторной перезаписи. А так же показать, почему данный метод не всегда является эффективным решением.
Читать полностью »
Поддельная «голубая пилюля»
2019-07-08 в 9:21, admin, рубрики: Компьютерное железо, микроконтроллеры, программирование микроконтроллеров, системное программированиеЯ являюсь большим любителем макетных плат «голубая пилюля». Они очень хороши по соотношению цена/возможности. Собственно, моя любовь к ним заметна из первоапрельской статьи про педальную прошивку для игры на балалайке.
Открыть коробочку с такими платами и быстро взять одну для решения каких-то задач — в порядке вещей. Именно так, недавно я взял очередную плату, прошил уже хорошо отлаженной и проверенной «прошивкой» и… получил неопознанное USB-устройство. Взял другую плату, «прошил» её, там устройство заработало. Тут бы делу и конец, но интересно же, в чём дело. Поэтому, как пришли выходные, я занялся детальным исследованием, почему же она не работает.
Читать полностью »