РОЙ-АЭРО

Разработчик C\C++, Qt (Senior)

От 200 000 RUR
  • Ростов-на-Дону
  • От 3 до 6 лет
  • C++
  • Git
  • Linux
  • Qt
  • GitHub
Ищем разработчика для работы с прошивками микроконтроллеров и устройствами под 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 резюме обязательно.