All streams
Search
Write a publication
Pull to refresh
179
143.9

Embedded SW/Firmware Engineer

Send message

Настройка ToolChain-a для программирования MCU FlagChip FC7300F8MDT

Level of difficultyEasy
Reading time20 min
Views1.9K

FC7300F8MDT — это микроконтроллер компании FlagChip as FlagShip.

В этом тексте я показал, как можно запрограммировать микроконтроллер FC7300F8MDT, буквально на пустом компьютере.

Читать далее

EEPROM Загрузчик для MIK32 (K1948BK018)

Level of difficultyEasy
Reading time9 min
Views4.2K

В данном тексте я написал про то, как я написал загрузчик для российского микроконтроллера MIK32 (K1948BK018).

Это, пожалуй, первый случай, когда столько функционала мне пришлось утрамбовать всего в 8kByte ROM памяти.

Читать далее

Proxy MCAL для Микроконтроллера

Level of difficultyEasy
Reading time9 min
Views2.3K

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

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

Получается, что приходится заново писать всю прошивку, всё приложение, драйвера всех ASIC-ов. Драйвер светодиодов, драйвер кнопок, драйвер ASICов c I2C SPI управлением. В общем всё переписывать. Поменяли MCU и пришлось переписать все файлы в репозитории. Нормально так да?

В этом тексте я написал, как можно обойти эту проблему.

Читать далее

Задача про рукопожатия

Level of difficultyEasy
Reading time2 min
Views5.8K

Существует классическая задача:

«Каждый гость на встрече обменивается рукопожатием с другим. Всего было 78 рукопожатий. Сколько гостей пришло на встречу?»

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

Читать далее

Задача про мышей и отраву

Level of difficultyEasy
Reading time6 min
Views12K

Есть 1000 одинаковых колб с прозрачной жидкостью.

В 999 колбах вода, а в одной случайной - отрава.

Если мышь попробует отраву, то она погибнет через 1 час.

Как найти отравленную колбу за минимальное время?

Читать далее

Основы по GNU Make

Level of difficultyEasy
Reading time12 min
Views7.9K

GNU Make - это консольная утилита, которая запускает другие консольные утилиты в желаемой последовательности согласно скрипту. Только и всего.

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

Читать далее

Атрибуты Хорошего Loader-a

Level of difficultyEasy
Reading time7 min
Views3.2K

В программировании микроконтроллеров периодически приходится писать клиентские PC программы для загрузки *.hex файлов в микроконтроллер через загрузчик.

Обычно в названии этих утилит присутствует слово loader.

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

Читать далее

Статический Анализ С-кода

Level of difficultyEasy
Reading time4 min
Views2.9K

Существуют бесплатные статические анализаторы для Си кода. Среди них splint и cppcheck.

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

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

Суть этой короткой заметки в том, чтобы показать, как просто и лаконично происходит подключение разнообразных статических анализаторов к проекту, который собран скриптами сборки GNU Make.

Читать далее

Настройка ToolChain-а Cборки Прошивок для MIK32 (K1948BK018 + C + GCC + GNU Make + OpenOCD)

Level of difficultyEasy
Reading time17 min
Views3.8K

В этом тексте я написал про то, как настроить рабочее окружение для разработки на российском микроконтроллере MIK32 (K1948BK018).

Читать далее

NVRAM из EEPROM

Level of difficultyEasy
Reading time3 min
Views3K

Дана функция чтения и записи EEPROM dword.

Запись и стирание возможно только по выровненному адресу и пословно.

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

Простыми словами надо состыковать Dword API с Byte API.

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

Читать далее

«Лучшие» Образцы Си Кода

Level of difficultyEasy
Reading time11 min
Views16K

Я долгое время негодовал по поводу того, что часто приходится копаться в плохо оформленном коде .

Но теперь я решил сделать рефрейминг. Отныне я коллекционирую такие куски кода! Да. Теперь каждая причудливая функция приносит мне искреннюю радость так, как пополняет ценнейшую коллекцию того, как не надо делать.

Читать далее

ЛикБез: Тепловой Насос

Level of difficultyEasy
Reading time5 min
Views23K

Высокие технологии могут быть не только в IT индустрии среди программирования и микроэлектроники, но и, на удивление, в сантехнике. Да.. Именно так. Сейчас объясню почему.

Существует контр-интуитивное приспособление под названием тепловой насос. Это устройство переносит энергию от более холодного тела к более горячему телу.

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

Читать далее

Самые Эпичные Баги при Программировании Микроконтроллеров

Level of difficultyEasy
Reading time14 min
Views24K

У каждого программиста микроконтроллеров с годами кристаллизируется коллекция золотых багов. Некоторые из них весьма эпичные.

Самый типичный баг - это зависание прошивки.

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

Читать далее

Как перекинуть файлы на смартфон по WiFi

Level of difficultyEasy
Reading time3 min
Views11K

Допустим Вы скачали на свой NetTop PC аудио книгу и теперь хотите её перекинуть на Android телефон.

Как же это можно провернуть?

Предположим, что вас на телефоне нет SD карты, да и USB кабель тоже пропал куда-то.

Как же перекинуть огромный файл с LapTop-а на PalmTop?

В этом тексте я напиcал, как посылать файлы по WiFi.

Читать далее

ЛикБез по CAN-FD

Level of difficultyEasy
Reading time17 min
Views17K

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

Образно выражаясь CAN - это труба для чисел. Можно метафорично сказать, что CAN - это нервная система автомобиля. Именно по САN передаются сигналы от датчиков и к исполнительным механизмам.

Читать далее

Настройка ToolChain-нa для Разработки на Микроконтроллерах YTM32x

Level of difficultyEasy
Reading time18 min
Views3.6K

Абсолютно все микроконтроллеры программируются одинаково, если собирать код из make файлов.

Настало время освоить очередное семейство ARM-совместимых микроконтроллеров. За плечами уже AVR, MSP430x, LPC21x, STM32x, MDR32x, ESP32x, SPC58x, CC26x2, NRF53x, AT32Fx. Теперь вот YTM32x от компании YUN TU (Suzhou YTM Semiconductor Co Ltd).

С какой же стороны следует подходить к микроконтроллерам YTM32x?
Давайте разбираться...

Читать далее

Сонар из Диктофона

Level of difficultyEasy
Reading time5 min
Views4.3K

Что если из диктофона сделать акустический локатор?

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

Все вычисления осуществлены в пост обработке.

Читать далее

Стилистический-Анализатор: Проверка Наличия Комментария в Конце Фигурной Скобки

Level of difficultyEasy
Reading time9 min
Views2.1K

Настал тот первый день, когда в программировании микроконтроллеров наконец пригодилась такая абстрактная структура данных как стек LIFO.

У нас в организации существует обязательное внутреннее требование к оформлению исходных кодов на языке программирования Си для микроконтроллеров, которое звучит так:

В конце каждого блока if(...) {...} ; switch(...) {...} ; for(...) {...} и т.п. необходимо пиcать комментарий // end of if(...). end of switch(...) end of for(...) соответственно.

Я написал утилиту-локатор, которая автоматически находит аномалии в коде согласно этому странному правилу.

Читать далее

Вёрстка Учебника (LaTeX + CPP + GNU Make + Jenkins = Учебник)

Level of difficultyEasy
Reading time12 min
Views3.8K

Вы, наверное удивитесь, но чтобы написать учебник, надо знать системы сборки из софтверного БигТеха и, как ни странно, старый добрый сишный препроцессор (cpp).

Да, господа... Именно так...

В этой заметке я покажу несколько трюков по работе с LaTeX.

Читать далее

Пуск ПасТильды на Плате Olimex-H407

Level of difficultyEasy
Reading time12 min
Views2.8K

Существует одна очень замечательная учебно-треннировочная электронная плата Olimex-STM32-H407.

В этом тексте я покажу как на этой PCB можно запустить прошивку культового российского аппаратного хранителя паролей Пастильда (Pas~).

Читать далее

Information

Rating
47-th
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