Разработчик C\C++, Qt (Senior)
Коротко
Develops and maintains microcontroller firmware and Embedded Linux system applications; handles hardware interaction, cross-compilation, and diagnostics on · Needs: C/C++ low-level development; bare-metal or RTOS firmware; interrupts, timers, DMA, watchdog; UART, SPI, I2C; on-site work in center (no remote).
Описание от работодателя
Ищем разработчика для работы с прошивками микроконтроллеров и устройствами под 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 резюме обязательно.