Рубрика «программирование микроконтроллеров» - 33

Считывание защищенной прошивки из флеш-памяти STM32F1xx с использованием ChipWhisperer - 1

В предыдущей статье мы разбирались с Vcc-glitch-атаками при помощи ChipWhisperer. Нашей дальнейшей целью стало поэтапное изучение процесса считывания защищенной прошивки микроконтроллеров. С помощью подобных атак злоумышленник может получить доступ ко всем паролям устройства и программным алгоритмам. Яркий пример – взлом аппаратного криптокошелька Ledger Nano S с платой МК STM32F042 при помощи Vcc-glitch-атак.

Интересно? Давайте смотреть под кат.

Читать полностью »

Знакома ситуация, когда место на флэше закончилось, и требуется впихнуть невпихуемое, пожертвовав чем то нужным? Попробуем вместо этого пожертвовать ненужным, оно прячется в довольно неожиданных местах.
Читать полностью »

Всегда работа с CAN была простой, но что-то пошло не так (в устройстве на КДПВ)…
image
В последнее время мне часто удается использовать микроконтроллер STM32H750VB, и вот в одном устройстве понадобилось задействовать шину CAN, но первая же попытка, которую я предпринял показала всю мою самоуверенность дала странный результат. Ниже описана история

Читать полностью »

Всем доброго времени суток. В этой статье мы разберём подключение TFT дисплея ER-TFT101-1 (10 дюймов, RA8876 драйвер) к плате STM32F429L Discovery по 16-битному параллельному интерфейсу 8080 используя модуль FMC (flexible memory controller).

О дисплейной сборке

ER-TFT101-1 от компании EastRising представляет собой сборку из 10 дюймовой TFT матрицы с разрешением 1024х600 и платы с драйвером RA8876. На плате с драйвером разведено всё нужное питание, стоит SD-RAM память на 16 мегабайт (шина 16 бит, максимальная частота 166 мГц, максимальный объём 64 мб), есть стандартный слот под microSD карту. Присутствуют пустые посадочные места под EEPROM с внешними шрифтами и под flash память для изображений с выведенными разъёмами для программирования оных. Так-же на сборке опционально может стоять резистивная или емкостная тач-панель.
Читать полностью »

С++, благодаря своей строгой типизации, может помочь программисту на этапе компиляции. На хабре уже довольно много статьей, описывающих как, используя типы, добиться этого, и это прекрасно. Но во всех, что я читал, есть один изъян. Сравним с++ подход и си подход с использованием CMSIS, привычный в мире программирования микроконтроллеров:

some_stream.set (Direction::to_periph)    SOME_STREAM->CR |= DMA_SxCR_DIR_0
   .inc_memory()                                          |  DMA_SxCR_MINC_Msk
   .size_memory (DataSize::word16)                        |  DMA_SxCR_MSIZE_0
   .size_periph (DataSize::word16)                        |  DMA_SxCR_PSIZE_0
   .enable_transfer_complete_interrupt();                 |  DMA_SxCR_TCIE_Msk;

Сразу видно, что с++ подход более читаем, и, поскольку каждая функция принимает конкретный тип, нельзя ошибиться. Си подход не проверяет валидность данных, это ложится на плечи программиста. Как правило, об ошибке узнают только при отладке. Но с++ подход не бесплатен. Фактически, каждая функция имеет своё обращение к регистру, в то время как на си сначала собирается маска из всех параметров на этапе компиляции, так как это всё константы, и записывается в регистр разом. Далее я расскажу, как попытался совместить типобезопасность с++ с минимизацией обращений к регистру. Вы увидите, это значительно проще, чем кажется.

Читать полностью »

ESP32 и файловая система SPIFFS - 1

SPIFFS – (Serial Peripheral Interface Flash File System) файловая система флеш-памяти, подключаемой по последовательному периферийному интерфейсу. Простыми словами: есть микроконтроллер ESP32 (рисунок 1), у него есть встроенная перезаписываемая энергонезависимая NOR-память, в которой хранятся: настройки (Preferences), загрузчик (Bootloader), микропрограмма (скомпилированный скетч), файловая система (SPIFFS) и ещё что-нибудь, типа обновления "по воздуху" (OTA).

Читать полностью »

Хочу сделать автономного дрона, который бы сам мог найти дорогу к цели и обратно, при этом обойти все препятствия ни кого не задев. Решил начать с нейросети и вебки. Так и получился этот проектimageЧитать полностью »

«Новый год» это мандарины, оливье, выходные и конечно же подарки.
Как вы, уже наверняка догадались я неожиданно стал обладателем микроконтроллера CANNY 3 Tiny. Правда я особо DIY электроникой не увлекаюсь и последний раз сам пытался что-то подключить к контроллеру почти семь лет назад, когда делал подсветку для петрушки с помощью клона Arduino. Но не пропадать же добру? Надо-таки посмотреть, что же это за зверь такой.

Итак, если верить сайту разработчиков – их продукция широко применяется и даже устанавливается в КАМАЗы, участвующие в ралли «Дакар». При этом основная особенность их контроллеров в том, что для программирования не придется написать ни одной строчки кода. Вся программа разрабатывается в виде блок схемы. Как человек далекий от мира DIY я был весьма заинтригован.

И всё бы хорошо, но есть одна загвоздка. Я в прошлом году честно хотел прикупить себе пару «Дакаровских» КАМАЗов, но не успел взять их со скидкой в «Черную пятницу». Так что нам придется как-то просто и элегантно выкручиваться из этой ситуации.

В данной статье мы подключим к контроллеру кнопку и красный светодиод «пиранья», после чего запрограммируем их так, чтобы светодиод включался и отключался по нажатию на кнопку.

Хотите присоединится к моему безудержному новогоднему веселью? Тогда милости прошу под кат.

«Раз, два, три – ёлочка гори!» или мой первый взгляд на контроллер CANNY 3 tiny - 1
Читать полностью »

Наличие EEPROM дает разработчикам удобный инструмент для сохранения конфигурационных параметров или медленно меняющегося состояния, которое должно переживать выключение питания. В этой статье мы рассмотрим, как это делать максимально безопасно и удобно, чтобы ничего не забывать и не вспоминать того, чего не было.
Читать полностью »

Добрый день, уважаемыее! Несколько лет назад я купился на красочную рекламу zWave и установил себе оконные датчики, базирующиеся на этом протоколе. К домашнему серверу был подключен USB zWave-Stick, который играл роль контроллера, написан небольшой модуль на Java, который получал данные с этого контроллера, а также написано небольшое приложение для Андроида, которое красиво отображало состояние всех датчиков. Батарейки вставлены, датчики зарегистрированы на контроллере, все заработало. Но через пару месяцев наступило жесточайшее разочарование. Во первых, данные zWave датчики работают по принципу «послать сообщение и, не ожидая подтверждения, заснуть». В моем случае это привело к тому, что сигнал от наиболее дальних от контроллера датчиков просто не доходил до контроллера. Не помогла даже установки дополнительного zWave-повторителя. Во-вторых, они настолько быстро садили батарейку, что примерно через шесть месяцев работать переставали все датчики. Причина в том, что они каждый час просыпались, чтобы сообщить контроллеру свое состояние. Отключить или изменить этот параметр не получилось, так как штатное программное обеспечение это сделать категорически не позволяло. Помучавшись два года с этой сырой, ненадежной и недружественной технологией, я решил что с меня хватит. Но вместо того, чтобы все убрать и выкинуть, мне пришла идея оставить корпуса, но поменять в них электронику. Выбор пал на достаточно простой приемопередатчик RFM69 (433 MHz), на базе которого удалось сделать как плату для датчика, так и контроллер, подключаемый через USB к серверу. Новая система в эксплуатации уже 5 месяцев, надежность близка к 100% (но некоторые сбои таки были), батарейки садиться пока не думают. То есть уже сейчас видно, что все недостатки старой системы на базе zWave устранены, и я хочу поделиться техническими подробностями этой моей поделки, см. картинку.

Самодельные беспроводные оконные датчики: STM32L051 + RFM69 + Android - 1

Кому интересно, прошу под кат.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js