Как стать автором
Обновить
134
25.9

Embedded SW/Firmware Engineer

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

Диктофон и медицина

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.2K

Мы занимаемся разработкой  и производством диктофонов для безопасности Edic-mini и аудиобейджей “Свидетель” для улучшения качества работы с клиентами (запись общения с клиентами, далее перевод записи в текст и речевая аналитика). 

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

Читать далее

Путешествия и диктофон

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

Я люблю путешествовать в бэкпэк формате и люблю фотографировать природу и жизнь, вот примерно так: Кавказ Осетия Ингушетия Чечня Дагестан 10_2023

И у меня есть 2 проблемы с этим.

Первая — отсутствие на рынке удобного камерофона для путешествий. Эту проблему я уже описывал в статье на Хабре.

Вторая — отсутствие удобного тулза для создания отчета по путешествию. Писать отчеты — это очень правильно, иначе по прошествии 10–15 лет коллекции фото превращаются просто в наборы красивых картинок так как фактические детали, эмоции стираются из памяти. Я сильно жалею, что частенько ленился писать отчеты.

Читать далее

Миландр + GCC + VSCode. Пробуем мигать светодиодом на отечественном ARM32 микроконтроллере

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

Год назад я написал статью об отладке STM32 микроконтроллеров из под VSCode, с компиляцией в GCC и сборкой с помощью CMake. А в декабре мне в руки попали две тестовые единицы отечественных микроконтроллеров К1986ВЕ92FI (MDR1211FI1). Производитель имеет свою библиотеку SPL на C, а также неплохую базу примеров инициализации и применения различной периферии в Keil и IAR; однако я, average C++20+ enjoyer , решил попробовать перенести свой тулчейн на новое железо.

Читать далее

Исполняемые PNG: запускаем изображения как программы

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

Это изображение и одновременно программа

Несколько недель назад я читал о PICO-8, выдуманной игровой консоли, обладающей большими ограничениями. Особо мой интерес привлёк новаторский способ распространения её игр — кодирование их изображение PNG. В него включается всё — код игры, ресурсы, вообще всё. Изображение может быть любым: скриншоты из игры, крутой арт или просто текст. Чтобы загрузить игру, нужно передать изображение на вход программы PICO-8, и можно начинать играть.

Это заставило меня задуматься: наверно, будет круто, если получится сделать то же самое с программами в Linux? Нет! Я понимаю, вы скажете, что это тупая идея, но я всё равно ею занялся, и ниже представлено описание одного из тупейших проектов, над которыми я работал в этом году.
Читать дальше →

STM32. Процесс компиляции и сборки прошивки

Уровень сложностиПростой
Время на прочтение30 мин
Количество просмотров32K
Многие из начинающих разработчиков софта для микроконтроллеров реализуют свои проекты исключительно в средствах разработки, которые предоставляются производителем. Многое скрыто от пользователя и очень хорошо скрыто, из-за чего некоторые воспринимают эти процессы сродни настоящей магии. Я, в свою очередь, как человек в пытливым умом и природной любознательностью, решил попробовать собрать проект без использования IDE и различного рода автоматизаций.

Так родилась идея для этой статьи: не используя ничего, кроме текстового редактора и командной строки, собрать проект мигания светодиодом на отладочной плате STM32F0-Discovery. Поскольку я не до конца понимал, как происходит процесс компиляции и сборки проекта, мне пришлось восполнять пробелы в знаниях. Разобравшись с этим вопросом, я подумал — а почему бы не рассказать другим об этом?

Всем кому интересно — добро пожаловать под кат! 🙂

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

Издатель/подписчик для распределённых отказоустойчивых бортовых систем реального времени в 1500 строк кода

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

Сап, котятки.


Я пришёл рассказать о проекте UAVCAN — новом сетевом стандарте для организации взаимодействия узлов и компонентов современных транспортных средств с высоким уровнем автономности/автоматизации. Название является акронимом от Uncomplicated Application-level Vehicular Computing And Networking (несложные бортовые сети и коммуникации уровня приложения).


В этой публикации объясняется текущее положение дел и тренды в области сложных бортовых систем, существующие и грядущие проблемы, как мы их решаем и каких успехов добились. Во второй части наши коллеги из Университета Иннополис подробно осветят практическую сторону внедрения UAVCAN на примере конкретных проектов.



Конъюнктура


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


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

Ну и что?

Дилберт по-русски: ежедневный архив с 2006 года, 670 выпусков!

Время на прочтение1 мин
Количество просмотров2.3K
Находка. Всего пару слов о проекте: Дилберт Скотта Адамса, на русском, ежедневный архив с 2006 года, 670 комиксов.

Дилберт на русском!

Каждый день по выпуску. Автору всеобщее «КУ!»

Дилберт по русски!

Просто о make

Время на прочтение6 мин
Количество просмотров479K
Меня всегда привлекал минимализм. Идея о том, что одна вещь должна выполнять одну функцию, но при этом выполнять ее как можно лучше, вылилась в создание UNIX. И хотя UNIX давно уже нельзя назвать простой системой, да и минимализм в ней узреть не так то просто, ее можно считать наглядным примером количество- качественной трансформации множества простых и понятных вещей в одну весьма непростую и не прозрачную. В своем развитии make прошел примерно такой же путь: простота и ясность, с ростом масштабов, превратилась в жуткого монстра (вспомните свои ощущения, когда впервые открыли мэйкфайл).

Мое упорное игнорирование make в течении долгого времени, было обусловлено удобством используемых IDE, и нежеланием разбираться в этом 'пережитке прошлого' (по сути — ленью). Однако, все эти надоедливые кнопочки, менюшки ит.п. атрибуты всевозможных студий, заставили меня искать альтернативу тому методу работы, который я практиковал до сих пор. Нет, я не стал гуру make, но полученных мною знаний вполне достаточно для моих небольших проектов. Данная статья предназначена для тех, кто так же как и я еще совсем недавно, желают вырваться из уютного оконного рабства в аскетичный, но свободный мир шелла.
Читать дальше →

Введение в ПЛИС: 1. Что такое ПЛИС

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров9.8K

Первая глава из цикла "Введение в ПЛИС". В ней мы попытаемся разобраться в том, что вообще из себя представляют программируемые логические интегральные схемы, какие бывают типы, вспомним историю развития ПЛИС. Также попробуем понять, чем они отличаются от других интегральных схем, в чем преимущества и недостатки. Обсудим в общих чертах, как с ними работать, кто является основными игроками на рынке программируемой логики. Данная статья носит обзорный характер и не требует специфических знаний.

Читать далее

Немного о многозадачности в микроконтроллерах

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

Немного о многозадачности


Каждый, кто день за днем или от случая к случаю, занимается программированием микроконтроллеров, рано или поздно столкнется с вопросом: а не использовать ли многозадачную операционную систему? Их в сети предлагается довольно много, при этом немало – бесплатных (или почти бесплатных). Только выбирай.


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


Это, скорее, не вопрос количества, а вопрос качественного различия задач по отношению к скорости выполнения, или еще каким-то требованиям. Такие мысли могут возникнуть, например, когда в проекте требуется регулярно отслеживать напряжение питания (не пропало ли?), довольно часто считывать и сохранять значения входных величин (покоя не дают), изредка следить за температурой и управлять вентилятором (дышать нечем), сверять свои часы с тем, кому доверяешь (вам хорошо там командовать), поддерживать связь с оператором (стараться не нервировать его), проверять контрольную сумму постоянной памяти программ на предмет деменции (при включении, или раз в неделю, или с утра).

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

Стоимость операций в тактах ЦП

Время на прочтение17 мин
Количество просмотров77K
Всем доброго! Вот мы и добрались до тематики С++ на наших курсах и по нашей старой доброй традиции делимся тем, что мы нашли достаточно интересным при подготовке программы и то, что будем затрагивать во время обучения.

Инфографика:



Когда нам нужно оптимизировать код, мы должны отпрофилировать его и упростить. Однако, иногда имеет смысл просто узнать приблизительную стоимость некоторых популярных операций, чтобы не делать с самого начала неэффективных вещей (и, надеюсь, не профилировать программу позже).
Читать дальше →

Проектирование архитектуры embedded-приложения

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


Добрый день! Хотелось бы поговорить на тему архитектуры embedded приложений. К сожалению, книг по этой теме очень мало, а в связи с тем, что, в последнее время, интерес к embedded и IoT растет, хочется уделить внимание этому вопросу. В этой статье, я бы хотел описать один из возможных вариантов того, как можно проектировать такие приложения.
Читать дальше →

Какие бывают Cortex-M7 ARM-ы, периферия, шины, память, … DMA

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров7.5K

На рисунке приведена структурная схема современного, одного из самых навороченных (я подозреваю) 32-битного ARM процессора или микроконтроллера-microcontroller, в документации используются оба термина: high-performance Flash microcontroller (MCU) based on the 32-bit ARM Cortex-M7 RISC (х.хх CoreMark/MHz) processor.

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

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

Читать далее

Программируем Arduino на чистом Си

Время на прочтение3 мин
Количество просмотров141K
В жизни ардуинщика рано или поздно наступает момент, когда в штатной среде разработки становится тесно. Если скетчам перестает хватать памяти, требуется жесткий реалтайм и работа с прерываниями или просто хочется быть ближе к железу — значит пришло время переходить на C. Бывалые электронщики при упоминании Arduino презрительно поморщатся и отправят новичка в радиомагазин за паяльником. Возможно, это не самый плохой совет, но мы пока не будем ему следовать. Если отбросить Arduino IDE и язык wiring/processing, у нас в руках останется прекрасная отладочная плата, уже оснащенная всем необходимым для работы микроконтроллера. И, что немаловажно, в память контроллера уже зашит бутлоадер, позволяющий загружать прошивку без использования программатора.
Читать дальше →

Вывод long long чисел в Mingw/Windows

Время на прочтение1 мин
Количество просмотров1.4K
Тип long long появился в стандарте c99. В 32х-битных архитектурах размер этого типа равен 64 бита. В стандарте вводится строка форматирования printf-подобных функций для этого типа: %lld (%llu для беззнаковых).

Но как часто бывает, написанное просто по справочникам не всегда работает. Столкнувшись с необходимостью перекомпилировать свой код при помощи MinGW/GCC, (который как казалось бы должен обеспечивать совместимость и переносимость кода между GNU/Linux и windows платформами) обнаружил, что поведение данного типа существенно отличалось от описанного: число выводилось как 32-битное.

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

Генерация перемещаемого кода для процессоров ARM в компиляторе LLVM

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


Процесс обновления «прошивки» для микроконтроллера – опасная вещь. Раньше при обновлении «прошивки» любой аппаратный сбой приводил к тому, что устройство превращалось в кирпич. В наше время часто имеется начальный загрузчик, который позволит произвести процесс обновления заново, но до того, весь функционал устройства будет потерян. Пока не будет завершено обновление, работать оно уже не будет. Самым красивым способом является использование двух областей для размещения «прошивки» — основной и запасной. На рисунке ниже это красная и синяя области. Исходно активная красная, а обновление будет загружаться в синюю. Сбой загрузки не страшен. Если он произойдёт, управление останется у красной области. При успехе операции, активной станет синяя область, а новое обновление будет загружаться в красную. Ну, и так далее. Каждое обновление будет приводить к рокировке.



К сожалению, в системах Cortex M такой путь напрямую невозможен. Программа привязана к абсолютным адресам и не может исполняться в произвольном месте. С чем это связано и как мы сделали её перемещаемой, подправив компилятор LLVM, рассказано в данной статье.
Читать дальше →

Два подхода к проектированию ПО для embedded

Время на прочтение9 мин
Количество просмотров37K
Хочу немного рассказать о двух подходах проектирования ПО в embedded. Два подхода эти – c использованием суперцикла или же с использованием RTOS (Real-Time Operation System, операционная система реального времени).

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

Надеюсь, будет интересно всем тем, кто хочет заглянуть в мир разработки для встраиваемых систем. Для тех, кто в embedded уже собаку съел, скорее всего, не будет ничего нового.
Читать дальше →

Упрощение отладки с помощью unit-тестов

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

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

Читать далее

Прошиваем программу не только в начало FLASH памяти STM32

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

Знаете ли вы куда попадает ваша программа после того, как вы нажали кнопку RUN или DEBUG в IDE? Если да, то как изменить этот адрес или даже выйти за пределы постоянной памяти и прожигаться сразу в оперативную память? Небольшая статья, которую я сам в свое время не нашел и потратил много часов и нервов на сбор этой не хитрой информации.

Читать далее

Знакомство с GOWIN. Отладочная плата DK-START-GW1N4/GW1N9

Время на прочтение3 мин
Количество просмотров23K
Недавно ко мне в руки попала китайская ПЛИС, а именно отладочная плата GW1N DK-START-GW1N4, на которой по факту стоит чип GW1N-LV9LQ144C6/I5 (Flash-based FPGA, 8640 LUT4, User flash:608Kb,B-SRAM:468Kb, S-SRAM:17280bit). GOWIN предоставляет много разных вариантов комплектации своих FPGA со встроенным Cortex M3, BluetothFPGA, System-in-Package(SoC + RAM), SecureFPGA…

GW1N-9 представитель базового варианта ПЛИС с наименьшим количеством наворотов и по этому привлекательна демократичной ценой в ~3.5$/1kQty.


Читать дальше →
1
23 ...

Информация

В рейтинге
253-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Embedded Software Engineer, DevOps
Senior
Git
Bash
CI/CD
C
Embedded system
Programming microcontrollers
Software development
Algorithms and data structures
System Programming
Development of drivers