All streams
Search
Write a publication
Pull to refresh
179
110.8

Embedded SW/Firmware Engineer

Send message

Как Чинить Программные Ошибки?

Level of difficultyEasy
Reading time6 min
Views5.3K

В программировании микроконтроллеров регулярно приходится занимаются починкой bug(ов).

При этом все bug(и) уникальные. Поиск причины каждой конкретной осечки это скорее искусство. Починка программ сродни работы детектива.

Есть ли универсальные приемы того как искать причину программных ошибок?

Считаю, что да. Подробности в тексте...

Читать далее

Разбор примера BLE Audio от Nordic Semiconductor (или переходник I2S->BLE-Audio)

Level of difficultyMedium
Reading time16 min
Views3.6K

Обзор технологии беспроводной передачи данных BLE 5.3.
Представлен разбор примера Ble Audio от Nordic Semiconductor для микроконтроллера nRF5340. Это пример передачи звука по Bluetooth 5.3.

Читать далее

Зачем Программисту Микроконтроллеров Математическая Статистика? (или так ли хороши UWB трансиверы?)

Level of difficultyEasy
Reading time5 min
Views7.7K

Настал день, когда мне для работы программистом микроконтроллеров наконец пригодилась математическая статистика из ВУЗ(овского) курса по теории вероятностей.

Есть очень интересная технология для автоматического радиоизмерения расстояния. Технология основана на UWB трансиверах. Позволяет измерять время пролёта радиоволны.

В этом тексте написал как я исследовал измерения расстояния, при помощи ASICа UWB трансивера DWM1000.

Читать далее

Как собрать Си программу в OS Windows

Level of difficultyEasy
Reading time9 min
Views18K

Иногда возникает ситуация, когда надо что-то посчитать согласно сложному алгоритму прямо на LapTop PC. При этом сам алгоритм написан на Си.

Это может быть цифровой фильтр, дискретное преобразование Фурье, генератор QR кода, кусок линейной алгебры с векторами, какое-то тригонометрическое вычисление, программный модулятор, статистическая обработка случайной величины.

Да всё, что угодно! То есть Вы хотите использовать язык Си как гибкий и быстрый калькулятор в Windows.

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

Читать далее

Сортировка Конфигов для Make Сборок

Level of difficultyEasy
Reading time5 min
Views2.4K

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

Все передают конфиги по-разному.

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

Читать далее

Зачем программисту микроконтроллеров тригонометрия? (или Обзор Усилителя Звука из Apple AirTag)

Level of difficultyEasy
Reading time7 min
Views11K

На 12ом году опыта программирования микроконтроллеров мне наконец-то пригодилась школьная тригонометрия (6-класс).
Это настолько специфический случай, что я решил накропать про это заметку.

Когда Вам надо добавить в устройство звук, то можно воспользоваться микросхемой MAX98357A. Это по сути DAC у которого на входе I2S на выходе PWM.

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

Читать далее

Обзор Чипа Внешней I2C Памяти AT24Cхх

Level of difficultyEasy
Reading time7 min
Views13K

AT24C02M5/TR это EEPROM на 256 байт с доступом по двухпроводному синхронному последовательному интерфейсу I2C.

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

Внешние чипы памяти особенно важны так как прошивку могут полностью стереть. В связи с этим хранить серийный номер на микроконтроллере внутри on-chip NOR-Flash самого микроконтроллера ненадежно.

Читать далее

Диспетчер Задач для Микроконтроллера

Level of difficultyEasy
Reading time7 min
Views13K

В программировании микроконтроллеров часто нужно написать простые тестировочные прошивки. При этом надо некоторые функции вызывать чаще, а некоторые реже. Для этого, конечно, можно запустить FreeRTOS, однако тогда этот код не будет переносим на другие RTOS например Zephyr RTOS или TI-RTOS. Поэтому надо держать наготове какой-нибудь простенький NoRTOS планировщик.

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

Читать далее

Полезные Заготовки Вызова Утилит Командной Строки

Level of difficultyEasy
Reading time7 min
Views16K

Не для кого не секрет, что некоторые типичные действия на компьютере проще быстрее и эффективнее выполнить из-под командной строки.

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

Читать далее

Синтаксический разбор CSV строчек

Level of difficultyEasy
Reading time9 min
Views5.2K

В программировании микроконтроллеров часто надо производить синтаксический разбор (парсинг) CSV строчек. CSV это просто последовательность символов, которые разделены запятой (или любым другим одиночным символом: ; | /). CSV строчки можно, например, повстречать в NMEA протоколе от навигационных GNSS приемников. Любой URL это в сущности та же самая CSV строчка.

В этом тексте я написал как производить синтаксический разбор CSV строчек.

Читать далее

Генерация зависимостей внутри программы

Level of difficultyEasy
Reading time7 min
Views5.1K

В программировании программы часто строятся иерархично. Один программный компонент вызывает функции из другого программного компонента. Как бы представить эту взаимосвязь в законченной программе?

Эту задачу можно решить прибегнув к языку Graphviz и утилитам cpp, dot, make, chrome.

Читать далее

Опрос для Программистов Микроконтроллеров (32 вопроса)

Level of difficultyEasy
Reading time1 min
Views8.9K

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

Цель данного опроса - это попытка выяснить как «правильно» поступать через усреднение.

Читать далее

Зачем программисту микроконтроллеров комплексные числа (или обзор MEMS микрофона MP23DB01HPTR)

Level of difficultyEasy
Reading time6 min
Views8.4K


На 12ом году работы программистом-микроконтроллеров мне наконец-то пригодились комплексные числа из школьной математики. Где они тут нужны? Пояснение в тексте.

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

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

Читать далее

Задача про игральные кубики и треугольники

Level of difficultyEasy
Reading time7 min
Views4.8K

Есть одна очень красивая задача из теории вероятности, которая обычно преподносится в двух формулировках.

Бросают один кубик три раза. Какова вероятность, что выпавшие значения образуют треугольник?

Бросают три кубика одним броском. Какова вероятность, что выпавшие значения образуют треугольник?

Есть ли различия в решении? Попробуем разобраться.

Читать далее

Cross-Detect для Проверки Качества Пайки в Электронных Цепях

Level of difficultyMedium
Reading time27 min
Views6.5K

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

Вот пришла электронная плата с производства. Как убедиться, что на этой конкретной плате всё корректно с контактами?

Для этого нужна какая-то технология. Назовем её Cross-Detect.

Читать далее

Техникум: Конечный Aвтомат Обработки Сигнала с Кнопки

Level of difficultyEasy
Reading time13 min
Views8K

В электронных устройствах часто бывают тактовые кнопки. Например в Bluetooth колонке пять кнопок: увеличение/уменьшения громкости, перехода в режим загрузчика, остановки звука и прочего.

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

Очевидно, что firmware должно как‑то однозначно распознавать тип нажатия на кнопку; короткое долгое.

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

Читать далее

Препарируем Bluetooth Колонку JBL Clip 3

Level of difficultyEasy
Reading time3 min
Views6K

Как известно чтобы стать хорошим архитектором надо изучать чертежи выдающихся архитектурных сооружений: плотина Гувера, Бруклинский мост, Эмпайр Стейт Билдинг.

Этот принцип применим в любой другой области. Например в электронике. Чтобы стать хорошим инженером-электроником надо изучать выдающиеся электронные платы. Вот например есть у меня Bluetooth колонка Clip 3. Всё в ней кажется здорово.

Надо понять как это устроено внутри.

Читать далее

ISO 26262-6 разбор документа (или как писать безопасный софт)

Level of difficultyEasy
Reading time9 min
Views8.7K

ISO26262 это международный текст, который объясняет как создавать безопасный и высоконадежный встраиваемый софт для мотоциклов, автомобилей, грузовиков и автобусов.

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

-----

Читать далее

Разбор I2S трафика в программе Logic 2

Level of difficultyEasy
Reading time1 min
Views4.6K

В этом тексте я написал инструкцию того как настроить логический анализатор Saleae производить автоматический синтаксический разбор трафика на шине I2S.

Читать далее

Обзор Aппаратного Aудио кодека MAX9860 (2x ADC+DAC)

Level of difficultyEasy
Reading time12 min
Views4.6K

Обзор аудиокодека MAX9860.

MAX9860 это 24 пиновый ASIC американской компании Maxim Integrated у которого внутри один 16ти битный sigma delta ЦАП, и два AЦП с управлением по I2C. Данные загружаются и выгребаются по I2S.

В тексте я написал свои впечатления от работы с этим чипом. Перечислил достоинства и недостатки микросхемы MAX9860.

Читать далее

Information

Rating
63-rd
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

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