All streams
Search
Write a publication
Pull to refresh
179
110.8

Embedded SW/Firmware Engineer

Send message

Сколько Надо Строк Кода Для Того Чтобы Подписать Артефакты?

Level of difficultyMedium
Reading time3 min
Views2.3K

Бывает ситуация, когда надо чтобы прошивка или любой другой артефакт сам сказал в каком состоянии был GIT репозиторий с кодовой базой, когда эту прошивку собирали. Надо как-то добавить в text/rodata сегмент памяти такие метаданные как "из какой ветки собрали прошивку", "какой была контрольная сумма последнего коммита".

Данная подсказка может существенно помочь при сопровождении ПО.

В тексте представлен скрипт, который делает эту работу.

Как вы думаете сколько строк кода надо для подписи прошивки?

Читать далее

Принцип Определения Дальности Между UWB Трансиверами (Конечный Автомат Для DS-TWR)

Level of difficultyMedium
Reading time6 min
Views6.4K

Существуют UWB радио трансиверы, которые умеют измерять точное время отправки и приема радио пакетов. Под словом "точно" подразумевается, что с дискретизацией 15ps. В качестве примера можно привести микросхему DW1000. TimeStamp(ы) очень полезная функция так как открывает дорогу для измерения расстояния между трансиверами.

Однако сам по себе чип DW1000 на аппаратном уровне не умеет вычислять TOF, которое фигурирует в формуле вычисления расстояние между трансиверами.

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

#Decawave

Читать далее

Обзор технологии Ultra-Wideband на основе трансивера DW1000 (переходник с SPI на UWB)

Level of difficultyEasy
Reading time12 min
Views14K

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

Обзор технологии Ultra-Wideband (или переходник с SPI на UWB) на примере модуля DWM1000 с DW1000 внутри.

Тут будет перевод ключевых мест из datasheet(а) и набольшие комментарии по чипу в частности.

Читать далее

Сборка firmware для CC2652 из Makefile

Level of difficultyHard
Reading time37 min
Views6.1K

В этом тексте представлена инструкция настройки ToolChain(а) для работы с микроконтроллером CC26x2 при помощи языка программирования С и компилятора GCC. Сборка осуществляется прямо из Makefile(ов).

Тут же представлена инструкция для настройки пошаговой отладки в консоли Windows.

В принципе, если вы собираете из Makefile, то вам всё равно какой там микроконтроллер и какого он вендора. Для добавления поддержки очередного MCU достаточно написать всего один *.ld и один *.mk файлик.

Во многом по этому сборка из Makefile является предпочтительнее, когда в организации много разнообразного оборудования на разных МК (или просто много сборок) и одна переносимая кодовая база на всё.

Читать далее

Градация Навыков в Embedded Программировании

Level of difficultyEasy
Reading time21 min
Views21K

В программировании микроконтроллеров нет как таковой общепринятой градации на Junior->Middle->Senior. Не сложилось.

Давайте попробуем вместе разобраться, где же проходит водораздел между Junior->Middle->Senior программистом МК и что справедливо требовать от каждого из них?

Далее речь пойдет в основном про программирование микроконтроллеров. Тут не будет затронут Embedded Linux, FPGA разработка.

Читать далее

Настройка Пошаговой Отладки JLink+Eclipse

Level of difficultyMedium
Reading time4 min
Views7.7K

Записали прошивку через интерфейс SWD/JTAG и... ничего не происходит. HeartBeat LED не мигает. Логи в UART(е) не появляются. CLI не отвечает. Очевидно, что прошивка где-то зависла.

Что же делать? Как понять, где ошибка?

Тут выручит пошаговая GDB отладка с подсветкой в eclipse.

Читать далее

Вывод формулы для двустороннего определения дальности между UWB трансиверами

Level of difficultyHard
Reading time4 min
Views1.8K

Настал третий за 12 лет случай, когда в профессии программист-микроконтроллеров понадобилось вспомнить школьную математику. В этом тексте я представил перевод AppNote(а) "The mathematics of two-way ranging". Также добавил свои комментарии в те места, которые неочевидны при первом прочтении.

Тема нужна для определения расстояния между двумя UWB радио трансиверами, которые могут определять моменты времени прихода и отправки радиоволны. Такое умеют делать UWB трансиверы, например чип DW1000 и DW3000.

Читать далее

Почему важно собирать код из скриптов

Level of difficultyEasy
Reading time17 min
Views14K

В период с 199x по 201x развелось очень много программистов-микроконтроллеров, которые никогда не представляли свою работу без IDE (IAR, KEIL, Code Composer Studio, AtilocTrueStudio).

В этом тексте я написал про недостатки работы в IDE и альтернативный способ сборки и масштабирования кодовой базы. Про MakeFile(ы).

Читать далее

ПасТильда: ещё одна прошивка

Level of difficultyMedium
Reading time7 min
Views7.1K

Существует очень своеобразный прибор Пастильда. Это аппаратный хранитель паролей. Было продано нескольких сотен таких устройств. С 2017 года этот проект стал Open Source(ным). Я составил еще одну прошивку для Пастильды (плата Pas~ r 1.1).

Если у вас есть Пастильда или отладочная плата Olimex-STM32-H407, то я могу прислать вам прошивку аппаратного менеджера паролей с расширенным функционалом.

Читать далее

OutSource оно вам надо?

Level of difficultyEasy
Reading time12 min
Views6.8K

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

Как известно OutSource компании зарабатывают на разнице в заплате инженеров между первым миром (страны западной Европы, блок НАТО, Япония, Австралия, Новая Зеландия), вторым миром (страны СНГ, КНР) и третьим миром (все остальные).

Что из этого получается.

Читать далее

Как устроен электромобиль?

Level of difficultyEasy
Reading time4 min
Views18K

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

Всю инфу пришлось добывать из видеоуроков на YouTube и с флаеров сайтов производителей электро-деталей.

Читать далее

Детали Двигателя на Пропане

Level of difficultyMedium
Reading time6 min
Views4K

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

Читать далее

Принцип определения дальности между радио трансиверами

Level of difficultyEasy
Reading time3 min
Views7.2K

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

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

Читать далее

Doc Food: Какая документация нужна для полноценной работы с электронной платой?

Level of difficultyEasy
Reading time8 min
Views8.4K


В России бытует мнение, что программистам микроконтроллеров не нужна никакая схемотехника. Особенно в таких организациях, которые изначально долго занимались web(ом), а потом вдруг решили прикинуться электрониками.

Что из документации нужно программисту микроконтроллеров для полноценной работы с электронной платой?

Попробуем разобраться.

Читать далее

Изготовление Макета для Прототипа (или Как Буравить Пластмаски)

Level of difficultyEasy
Reading time6 min
Views5.4K

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

Далее следует инструкция как сделать качественное основание для прототипа.

Читать далее

Теория управления шаговым двигателем (или как вертеть PTZ камеру)

Reading time4 min
Views12K

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

При управлении шаговыми двигателями важно решать кинематическую задачу. Правда по уровню сложности её можно отнести к школьной программе 6 класса.

Читать далее

H-мост: Load Detect (или как выявлять вандализм)

Reading time5 min
Views9.2K

В этом тексте я написал как диагностировать и тестировать такую электрическую цепочку как H-мост (спинер моторов).

Как в Run-Time(е) определять Fault(ы) в H-мосте?

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

Читать далее

NVRAM для микроконтроллеров

Level of difficultyEasy
Reading time8 min
Views9K

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

В этом тексте представлено текстовое описание возможной простой реализации компонента энергонезависимой key-value map(ки)

Читать далее

Офисные джунгли (или особенности западной культуры общения на работе)

Level of difficultyEasy
Reading time12 min
Views15K

Это негласные правила этикета среди офисных белых воротничков. Об этом не расскажут ни в школе ни в университете. Как вести себя в офисах IT стартапа или корпорации?

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

Эти правила написаны кровью!

Читать далее

Чип AudioСodec(а) WM8731 (или (ADC/DAC)*2 из iPod(а))

Level of difficultyEasy
Reading time8 min
Views8.2K

Существует чип WM8731. Это стерео аудиокодек или однокристальная звуковая карта. В сущности 2 пары ADC/DAC на 24бит каждый с настройкой по I2C.
Чип знаменит тем, что его в свое время заложили в культовую отладочную плату Altera-DE1 для FPGA  и чип WM8731 стал известен во всех технических вузах мира.

Посмотрим на что на самом деле способен чипок WM8731.

В этом тексте я напишу о своём опыте работы с чипом WM8731, частично восполню нехватку документации на китайскую отладочную плату Alinx и отмечу решения основных сбоев при работе с WM8731.

Читать далее

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