Программист встраиваемых систем (middle)
Описание
Обязанности: Разработка прошивок для микроконтроллеров (STM32, GD32, AVR, ESP32). Настройка и отладка периферии, подключение цифровых и аналоговых датчиков и узлов. Работа с логическими микросхемами: сдвиговые регистры, расширители портов и т.п. Работа с дисплеями: 7-сегментные, символьные и графические ЖК. Проектирование логики устройств любой сложности в рамках МК. Разработка собственных протоколов обмена верхнего уровня (кадры, проверка целостности, защищённый канал) для общения разрабатываемых устройств между собой Разработка несложного ПО под Windows как интерфейса к устройствам на МК. Разработка ПО для одноплатных компьютеров (Raspberry Pi и аналоги) как верхнего уровня систем, в которых МК отвечают за работу с «железом» в реальном времени. Интеграция одноплатников с микроконтроллерами и периферией (UART, SPI, I2C, USB, GPIO). Интеграция одноплатных компьютеров с микроконтроллерами и периферией через UART, SPI, I²C, USB, GPIO и другие интерфейсы. Отладка программно-аппаратного взаимодействия совместно со схемотехником. Настройка стабильной работы устройств в реальных условиях эксплуатации. Требования: Микроконтроллеры Уверенное программирование МК семейств STM32, GD32, AVR, ESP32. Работа со всей периферией: GPIO, таймеры, UART, SPI, I2C, ADC/DAC, DMA, прерывания и т.п. Отладка с помощью отладчика, осциллографа, логического анализатора. Умение использовать готовые библиотеки и разбираться в чужом коде. Умение строить архитектуру со сложной логикой: конечные автоматы, неблокирующие алгоритмы, планировщики или RTOS. Опыт разработки собственных прикладных протоколов: формат пакета, CRC, подтверждения, повторные передачи, защита канала. Знание Git. Одноплатные компьютеры Уверенные навыки работы с Linux: терминал, SSH, systemd-сервисы, права доступа, сеть, автозапуск приложений, диагностика проблем. Умение писать приложения под одноплатники на Python и/или C/C++, работать с GPIO, шинами и интерфейсами (libgpiod, spidev, i2c-tools, pyserial и т. п.). Понимание разделения задач: что отдавать микроконтроллеру (реальное время, быстрая реакция), а что одноплатнику (сеть, интерфейс, база данных, тяжёлая обработка), и умение выстроить обмен между ними по собственному протоколу. Windows Опыт разработки несложного desktop-ПО под Windows. C#/.NET, Python, C++/Qt или аналогичные технологии. Создание GUI. Работа с COM-портами, USB и сетевыми интерфейсами. Визуализация данных и телеметрии. Приложения могут использоваться как конфигураторы, сервисные программы, диагностические инструменты, интерфейсы управления и средства обновления прошивки. Общее Умение настраивать надёжную работу устройства «в поле»: автозапуск, watchdog, защита от повреждения SD-карты и сбоев питания. Умение строить системы со сложной логикой и несколькими одновременно выполняемыми задачами. Понимание неблокирующей архитектуры программ. Умение использовать конечные автоматы, событийную логику, программные таймеры, планировщики и RTOS там, где это необходимо. Умение разделять проект на логические модули и поддерживать достаточно крупную кодовую базу embedded-проекта. Личные качества Самостоятельность и ответственность за результат. Умение работать в связке со схемотехником. Будет плюсом Понимание принципов работы нейросетей, обучения моделей, запуска ML на МК (TinyML), Опыт работы с RTOS (FreeRTOS, Zephyr). Умение читать схемы и базово разбираться в аппаратной части. Опыт запуска моделей машинного обучения на одноплатниках (TensorFlow Lite, ONNX Runtime, OpenCV, Jetson), в том числе с камерой. Опыт использования Docker и контейнеризации на встраиваемых платформах. Опыт сборки кастомных образов Linux (Buildroot, Yocto) и настройки Device Tree. Условия: Работа в развивающейся R&D-компании; Оформление в соответствии с ТК РФ; Конкурентный уровень заработной платы; Премиальные выплаты; ДМС после испытательного срока; Испытательный срок - 3 месяца; Комфортный офис в шаговой доступности от метро Сокол График работы пн-пт 10:00-19:00; Возможность профессионального и карьерного роста.