Как стать автором
Обновить
109
20.8

Embedded SW/Firmware Engineer

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

Дымовая Завеса в Eclipse IDE

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

Прошивки часто пишут в Eclipse.

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

В этом тексте я написал как активировать эту опцию даже при сборке сторонними скриптами.

Читать далее
Всего голосов 7: ↑3 и ↓4+3
Комментарии19

Нельзя Просто Так Пойти и Купить Овцу

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

В этом тексте я собрал самые странные правила и рекомендации оформления исходных кодов, которые только попадались мне на работе в разных реальных компаниях.

Вот буквально несколько настоящих примеров из жизни. Парад нелепости.

Читать далее
Всего голосов 18: ↑8 и ↓10+1
Комментарии77

Запуск I2S Трансивера на Artery [часть 2] (DMA, FSM, PipeLine)

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

В этом тексте вы узнаете, что общего между I2S трансивером и оладьями.

Да... Именно так. А также зачем программисту микроконтроллеров конвейеры и цифровые фильтры.

В тексте изложено про то, как источать звук при помощи I2S + DMA.

Читать далее
Всего голосов 13: ↑12 и ↓1+15
Комментарии23

Интеграция clang-format в Процесс Сборки

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

Есть такая тема, как автоматическое выравнивание отступов в исходных текстах программ на Си или С++. Притом для этого есть специальные утилиты. Например clang-format или GNU indent.

В этом тексте я написал, как встроить процесс выравнивания исходных кодов прямо в систему сборки проекта.

Цель данного текста- показать, как интегрировать clang-format в процесс сборки прошивки. Просто в одно касание и выровнять код, и собрать бинари.

Читать далее
Всего голосов 14: ↑5 и ↓9+2
Комментарии25

Запуск I2S трансивера на Artery

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

В этом тексте я написал про то, как самому написать System Software уровня HAL для ARM Cortex-M4 совместимого микроконтроллера.

Как отлаживать такую работу и на что обратить внимание при запуске I2S на Artery MCU.

Читать далее
Всего голосов 10: ↑7 и ↓3+8
Комментарии13

Как Проинициализировать Микроконтроллер [часть 2]

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

Программа это реализация алгоритма. А алгоритм это упорядоченная последовательность действий. Поэтому очень большое значение имеет правильный порядок исполнения программы.

В этом тексте я написал как автоматически выявить правильную последовательность инициализации

Читать далее
Всего голосов 11: ↑7 и ↓4+8
Комментарии27

Решатель Игры Set на Микроконтроллере

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

Существует одна остроумная настольная игра, называется Set. Это игра на внимание.

В этом тексте я показал, как я сконструировал автоматический решатель, чтобы всегда выигрывать в игру Set!

Читать далее
Всего голосов 12: ↑11 и ↓1+16
Комментарии18

Техникум: Автоматическое Aрхивирование Aртефактов

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

В программировании микроконтроллеров на выходе получается довольно много артефактов. Всё это надо как-то связать и заточить в архив, чтобы всегда можно было ассоциировать *.hex с нужным для него *.map и *.elf.

Логичным шагом является архивация всех этих файликов в *.tar архив. Один архив очень удобен при транспортировке программного обеспечения.

В этом тексте я написал как это можно провернуть средствами утилиты GNU Make.

Читать далее
Всего голосов 11: ↑5 и ↓6+3
Комментарии38

Управление напряжением PWM сигналом (PWM+RC=DAC)

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

В очередной тестировочной электронной плате появилась нужда выставлять напряжения на клеммах.

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

В этом тексте я написал как мне это удалось.

Читать далее
Всего голосов 15: ↑13 и ↓2+18
Комментарии181

Как составить функцию инициализации микроконтроллера (Топологическая сортировка графов утилитой Make)

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

В программировании микроконтроллеров приходится определять порядок инициализации прошивки. Порядок тут всегда имеет значение.

Дело в том, что прошивка состоит из набора программных компонентов. Каждый компонент вызывает функции из других программных компонентов. Так происходит пере использование кодовой базы.

Чтобы всё это работало надо соблюдать правильный порядок инициализации.

В этом тексте я представил формальный алгоритм определения этого порядка.

По сути это топологическая сортировка ориентированного графа зависимостей программных компонентов.

Читать далее
Всего голосов 14: ↑13 и ↓1+19
Комментарии50

Архитектура Xорошего Кода Прошивки (Массив-Наше Всё)

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

В этом тексте я написал о некоторых подходах к организации кода для микроконтроллеров.

Основная идея - массив наша основная скрепа.

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

Читать далее
Всего голосов 13: ↑11 и ↓2+14
Комментарии33

КодоГенератор Линейных Отображений (как ускорить создание ASIC драйвера)

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

В программировании микроконтроллеров на Си часто приходится писать драйверы для умных и навороченных ASIC чипов с управлением по I2C/SPI/MDIO интерфейсам.

Обычно перед запуском эти чипы надо правильным образом сконфигурировать.

Такие чипы всегда оперируют с реальными физическими величинами. Одновременно с этим ячейки памяти этих ASIC чипов - дискретные, двоичные. Поэтому все производители микросхем кодируют эти переменные бинарными кодами разной разрядности.

В этом тексте я показал как можно делать интерпретаторы этих величин.

Читать далее
Всего голосов 7: ↑4 и ↓3+1
Комментарии31

Обзор AудиоКодека NAU8814YG

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

Аудио кодек по сути это цифро-аналоговое устройство, где есть пара ADC + DAC. На входе обычно есть сумматор на операционных усилителях для подмешивания аналогово сигнала с разных проводов, есть еще аналоговые усилители. Высокоскоростной многоканальный интерфейс: I2S или TDM. И интерфейс I2C для того чтобы всем этим добром управлять.

В этой заметке я написал о своём опыте работы с ASIC аудиокодеком NAU8814.

Читать далее
Всего голосов 18: ↑15 и ↓3+17
Комментарии19

Гидротаранный Насос

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

Существует такое остроумное приспособление как гидротаранный насос. Его ещё называют гидро ударный насос или hydraulic ram.

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

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

В этом тексте я расскажу о своём опыте конструирования экземпляра этого прибора.

Читать далее
Всего голосов 23: ↑22 и ↓1+29
Комментарии22

Зачем Программисту Микроконтроллеров Линейная Алгебра (или Как Найти Угол Между Векторами?)

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

В программировании микроконтроллеров часто возникает задача найти угол между векторами.

Это всяческие встраиваемые системы, где есть подвижные, вращающиеся детали: PTZ камеры, поворотные платформы для радаров, турели, ветрогенераторы, солнечные панели, SDR обработка и прочее.

В данном тексте я приведу простое и понятное решение задачи вычисления угла между векторами на языке программирования Си.

Читать далее
Всего голосов 21: ↑18 и ↓3+21
Комментарии105

Зачем Программисту Микроконтроллеров Диофантовы Уравнения

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

Школьные уроки математика не прошли даром.

Вот, настал день, когда впервые пришлось решить на работе Диофантовое уравнение.

Читать далее
Всего голосов 21: ↑20 и ↓1+23
Комментарии60

Почему Сборка с Помощью Есlipse ARM GCC Плагинов это Тупиковый Путь

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

В программировании микроконтроллеров часто используют Eclipse с плагинами.
Главным образом от незнания языков скриптов сборки (Make, Cmake, Ninjia и т п).

В этом тексте я напишут почему способ сборки из Eclipse c ARM плагинами — это тупиковый путь в разработке больших промышленных командных проектов.

И как можно частично компенсировать недостатки Eclipse с плагинами.

Читать далее
Всего голосов 10: ↑5 и ↓5+3
Комментарии21

Автоматическая Генерация Конфигураций для Make Сборок (или Лучшее Программирование — Конфигурирование)

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

При разработке программного обеспечения придется столкнуться с тем, что надо как-то передавать конфигурации для данного проекта.

Проблема в том, что конфигов становится так много, что можно нечаянно забыть какой-то важный конфиг.

В этом тексте представлен механизм автоматической конфигурации сборки.

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии13

Обзор Протокола ISO-TP [ISO 15765-2]

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

Как известно канальные CAN пакеты могут быть размером максимум 8 байт. Одновременно с этим, с более высоких уровней модели OSI могут поступить запросы передать огромные пакеты  [ jumbo frame(ы) ]. Как же разрешить это противоречие?

Эту ситуацию призван распетлять протокол ISO-15765-2 (или попросту ISO-TP ).

В этом тексте я выполнил обзор протокола ISO-TP.

Читать далее
Всего голосов 9: ↑7 и ↓2+8
Комментарии23

Обзор Переходника USB-CAN (SYS TEC USB-CANmodul1)

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

Как известно, в широкой продаже не существует компьютеров с интерфейсов CAN. Зато во всех настольных компьютерах и LapTop(ах) есть USB. В связи с этим для отладки оборудования с CAN нужны всяческие переходники USB-CAN.

В этом тексте я покажу как можно проверить это изделие.

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Комментарии23

Информация

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

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

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