Обновить
43
0

Software Developer

Отправить сообщение

C++20 в bare-metal программировании, работа с регистрами микроконтроллеров Cortex-M

Уровень сложностиСредний
Время на прочтение43 мин
Количество просмотров16K

Сегодня я хотел бы обсудить тему, с которой так или иначе сталкивался почти каждый программист встраиваемых устройств без использования настоящих операционных систем, а именно прямое управление периферийными узлами микроконтроллера. A конкретнее, я хотел бы обсудить повышение безопасности при управлении периферийными модулями без потери эффективности, гибкости и читаемости.

Статья предполагает, что читатель имеет базовые знания программирования bare-metal систем и языка С++, в том числе и современных стандартов. Это означает, что совсем базовые пояснения выходят за рамки этой статьи.

Читать далее

Попытка использовать современный C++ и паттерны проектирования для программирования микроконтроллеров

Время на прочтение8 мин
Количество просмотров9.3K
Всем привет!

Проблема использования С++ в микроконтроллерах терзала меня довольно долгое время. Дело было в том, что я искренне не понимал, как этот объектно ориентированный язык может быть применим к встраиваем системам. Я имею ввиду, как выделять классы и на базе чего составлять объекты, то есть как именно применять этот язык правильно. Спустя некоторое время и прочтения n-ого количества литературы, я пришёл к кое каким результатам, о чем и хочу поведать в этой статье. Имеют ли какую либо ценность эти результаты или нет — остается на суд читателя. Мне будет очень интересно почитать критику к моему подходу, чтобы наконец ответить себе на вопрос: «Как же правильно использовать C++ при программировании микроконтроллеров?».

Предупреждаю, в статье будет много исходного кода.
Читать дальше →

Что делать, если ты уже научился программировать микроконтроллеры?

Время на прочтение3 мин
Количество просмотров9.3K
Привет, Хабровчанин.

В данной статье я хочу порассуждать на тему, как развиваться программисту микроконтроллеров. Данная статья — это небольшое чтиво для тех, кто как и я когда-то, не знал, куда дальше развиваться в своей профессии. Возможно, ты сможешь тут подчерпнуть что-нибудь интересное.

На данный момент я работаю программистом уже 3 года, и до недавнего времени, я не видел, что делать дальше. Однако, тогда я повстречал человека с 20+ лет стажем программирования встраиваемых систем, и общаясь с ним, я выделил некоторые аспекты, в которых можно развиваться. Здесь я и хочу поделиться ими, а также свои личным опытом. Я ни в коем случае не хочу никого учить, я просто поделюсь своими наработками, а ты уже сам решай, полезны эти советы или нет.
Читать дальше →

Что делать, если поймал HardFault?

Время на прочтение6 мин
Количество просмотров40K
Что делать, если поймал HardFault? Как понять, каким событием он был вызван? Как определить строчку кода, которая привела к этому? Давайте разбираться.

Всем привет! Сложно найти программиста микроконтроллеров, который ни разу не сталкивался с тяжелым отказом. Очень часто он никак не обрабатывается, а просто остаётся висеть в бесконечном цикле обработчика, предусмотренном в startup файле производителя. В то же время программист пытается интуитивно найти причину отказа. На мой взгляд это не самый оптимальный путь решения проблемы.

В данной статье я хочу описать методику анализа тяжелых отказов популярных микроконтроллеров с ядром Cortex M3/M4. Хотя, пожалуй, «методика» — слишком громкое слово. Скорее, я просто разберу на примере то, как я анализирую возникновение тяжелых отказов, и покажу, что можно сделать в подобной ситуации. Я буду использовать программное обеспечение от IAR и отладочную плату STM32F4DISCOVERY, так как эти инструменты есть у многих начинающих программистов. Однако это совершенно не принципиально, данный пример можно адаптировать под любой процессор семейства и любую среду разработки.


Читать дальше →

Моя USB визитка

Время на прочтение3 мин
Количество просмотров50K
Всем привет!

Помимо основной работы я делаю достаточно много пет-проектов, но никогда о них не писал. Сейчас я решил исправить ситуацию и написать о проекте, который только что завершил. На его создание меня вдохновила вот эта работа Джорджа Хиллиарда.


Читать дальше →

Запускаем трансфлективный TFT дисплей на SSD1283A с помощью STM32

Время на прочтение9 мин
Количество просмотров13K

Введение


Модель дисплея называется H016IT01. Данный дисплей интересен прежде всего тем, что он является трансфлективным(transflective). Это означает, что изображение на нем должно быть видно даже под ярким солнцем. А также это чуть ли не единственная доступная модель с этой особенностью на известном китайском сайте.

Статья же увидела свет потому, что информации по контроллеру SSD1283A очень мало(как в русском, так и западном сегменте сети), и руководства я нигде не встречал. В сети можно найти даташит, однако там нет информации по инициализации и работе с дисплеем, а из полезного только описания регистров.

Хочу подчеркнуть, что данный материал конечно же не является истиной последней инстанции. Я привожу лишь свой опыт взаимодействия с устройством. Основная цель статьи проста — помочь всем тем, кто решил, хочет или захочет поработать с данным дисплеем, не более.

image
Читать дальше →

Аппаратный bit banding CortexM3/M4(ARM), архитектура ядра, ассемблер, С/C++14 и капля метапрограммирования

Время на прочтение9 мин
Количество просмотров25K

Введение


Внимание, это не очередная «Hello world»статья о том как помигать светодиодом или попасть в свое первое прерывание на STM32. Однако, я постарался дать исчерпывающие объяснения по всем затрагиваемым вопросам, поэтому статья будет полезна не только многим профессиональным и мечтающим стать таковыми разработчикам (как я надеюсь), но и начинающим программистам микроконтроллеров, так как тема эта почему-то обходится стороной на бесчисленных сайтах/блогах «учителей программирования МК».

image
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Baden-Württemberg, Германия
Зарегистрирован
Активность