Ищем разработчика для работы с прошивками микроконтроллеров и устройствами под Embedded Linux. Основными задачами будут взаимодействие ПО с аппаратной частью, работа с системными
сервисами, сборка программной платформы и диагностика на реальном оборудовании.
📌 Мы предлагаем:
- Оплата труда – 200.000 (на руки) + премия за завершенные задачи
- Оформление по ТК РФ.
- График работы 5\2 с понедельника по пятницу (начало и конец рабочего дня варьируются при необходимости и обсуждается с каждым кандидатом индивидуально).
- Комфортное место работы в центре города в районе площади Химиков (удаленный формат работы в том числе гибридный не возможен).
- Предоставляется парковка и комплексное корпоративное питание.
📌 Обязанности
- Разрабатывать и поддерживать прошивки микроконтроллеров на C/C++.
- Разрабатывать системные приложения и фоновые сервисы для Embedded Linux.
- Реализовывать взаимодействие между Linux-устройством, микроконтроллерами и периферией.
- Настраивать кросс-компиляцию и сборку образов системы.
- Адаптировать существующую программную платформу под изменения оборудования.
- Диагностировать проблемы загрузки, обмена данными, памяти и производительности.
- Проверять работу ПО на целевых платах, автоматизировать сборку и испытания.
- Документировать архитектуру, конфигурацию устройства и порядок обновления ПО.
📌 Обязательные требования
▪️ C/C++ и низкоуровневая разработка
- Уверенное владение C и практический опыт C++.
- Понимание указателей, времени жизни объектов, размещения данных в памяти, выравнивания и порядка байтов.
- Работа с битовыми полями регистров, буферами и бинарными протоколами.
- Понимание undefined behavior, назначения volatile и его отличия от атомарности и синхронизации.
- Контроль использования стека, динамической памяти и времени выполнения.
▪️ Микроконтроллеры
- Практический опыт разработки bare-metal-прошивок или прошивок под RTOS.
- Работа с прерываниями, таймерами, DMA и watchdog.
- Опыт работы с UART, SPI, I²C; умение самостоятельно освоить периферию по документации.
- Использование SDK/HAL производителя и понимание происходящего на уровне регистров.
- Отладка через SWD/JTAG или аналогичный интерфейс.
- Чтение datasheet, reference manual и схем подключения.
▪️ Embedded Linux
- Понимание цепочки загрузки: загрузчик → ядро → root filesystem → init → сервисы.
- Практический опыт Buildroot или Yocto/OpenEmbedded: собрать образ для поддерживаемой платы, добавить приложение или пакет, изменить конфигурацию и воспроизвести сборку.
- Кросс-компиляция: toolchain, sysroot, архитектура процессора, зависимости и библиотеки целевой системы.
- Базовая работа с конфигурацией ядра и Device Tree: включить существующий драйвер, настроить периферию поддерживаемой платы, проверить результат.
- Настройка запуска сервисов через systemd или другую init-систему, применяемую на устройстве.
- Диагностика через serial console, SSH, dmesg и системные журналы.
▪️ Системное программирование в Linux
- Файловые дескрипторы, процессы, потоки, mutex и межпроцессное взаимодействие.
- РOSIX API, последовательные порты, TCP/UDP-сокеты.
- Неблокирующий ввод-вывод и ожидание событий через poll/epoll.
- Корректная обработка частичного чтения/записи, тайм-аутов и ошибок системных вызовов.
▪️ Инструменты и проверка
- Git, CMake и понимание существующих Makefile.
- GDB/gdbserver, strace, анализ дампов и стеков вызовов.
- Использование логического анализатора или осциллографа для диагностики обмена.
- Python и shell для автоматизации сборки, развёртывания и проверок.
- Автоматические тесты логики на компьютере разработчика и интеграционные проверки на устройстве.
- Чтение англоязычной технической документации.
📌 Будет преимуществом
- FreeRTOS или Zephyr: приоритеты задач, очереди, синхронизация, взаимодействие с ISR.
- Разработка и сопровождение BSP, перенос на новые платы.
- Доработка U-Boot и написание драйверов ядра Linux.
- CAN, RS-485/Modbus, USB или Ethernet на уровне интеграции оборудования.
- Безопасное обновление прошивок и Linux-образов, откат и восстановление после потери питания.
- Secure boot, проверка подписи обновлений.
- Автоматизированные аппаратные стенды и длительные испытания.
В отклике опишите устройство, с которым работали: микроконтроллер или SoC, используемую ОС, свою зону ответственности и сложную неисправность, которую удалось
диагностировать. Github резюме обязательно.