Не упустите лучшие вакансии!
Подключите наш Telegram-бот и получайте мгновенные уведомления о новых предложениях из 10+ источников. Будьте первым, кто откликнется!
Подключить ботаИнженер-разработчик ПО (C++ / RTOS / Custom Drivers)
О нас:
Мы разрабатываем ПО для [вставьте: промышленных контроллеров, медицинской аппаратуры, авионики, IoT-устройств]. Наш код работает без операционной системы или на жестком Real-Time уровне. Здесь нет места "перезагрузи и поможет". Ошибка в тайминге или в гонке за ресурсы (race condition) стоит дорого. Мы ищем человека, который мыслят архитектурой процессора и состояниями машинных циклов.
Что мы ожидаем (Профиль кандидата):
1. Глубокое понимание C++ «под капотом» (Не просто знание синтаксиса)
- Модель памяти железа: Вы понимаете разницу между кэшем L1/L2 и основной памятью (RAM). Знаете, что такое volatile (и когда его использовать, а когда — нет), memory barriers, cache coherence при работе с DMA.
- Управление ресурсами без исключений: Понимание RAII в embedded-контексте (где исключения отключены -fno-exceptions). Умение работать с placement new, кастомными аллокаторами и статической инициализацией (Static Initialization Order Fiasco).
- Размер имеет значение: Понимание выравнивания структур (struct padding), packed-структур, endianness (big/little endian) при сериализации данных для передачи по сети или в регистры железа.
2. Мастерство RTOS (FreeRTOS / RTEMS)
- Детерминизм: Вы понимаете, что такое jitter, latency и worst-case execution time (WCET). Умеете оценивать, почему задача не успевает выполниться за свой слот.
- Синхронизация и IPC: Глубокое понимание приоритетов, инверсии приоритетов (priority inversion) и способов её решения (priority inheritance, priority ceiling). Разница между бинарным семафором, счетным семафором и мьютексом в контексте конкретного планировщика.
- Обработка прерываний (ISR): Железное правило: в ISR делается минимум (только флаг/семафор). Вы умеете писать deferred interrupt handling (обработку прерываний в контексте задачи).
- Управление памятью ОС: Понимание фрагментации кучи (heap fragmentation) в RTOS и умение обходиться без динамической аллокации (static allocation / memory pools).
3. Написание Custom Drivers (Смекалка и работа с железом)
- Чтение даташитов (Datasheet Mining): Главная навык. Вы умеете извлекать смысл из запутанных таблиц регистров, тайминговых диаграмм и block diagram'ов, даже если документация написана с ошибками.
- MMIO и регистры: Уверенная работа с memory-mapped I/O. Понимание, как компилятор оптимизирует доступ к регистрам, и умение предотвратить "схлопывание" записей.
- DMA (Direct Memory Access): Понимание работы контроллера DMA, настройку дескрипторов, разницу между Scatter-Gather и линейным DMA. Умение решать проблему когерентности кэшей при использовании DMA.
4. Toolchain (GCC и кросс-компиляция)
- Сборка из исходников: Понимание параметров кросс-компилятора (-ffreestanding, -nostdlib, -mcpu, -mfloat-abi). Умение писать и читать Linker Scripts (скрипты компоновщика) для размещения секций (.text, .data, .bss) в конкретные банки памяти (Flash vs RAM).
- Startup код: Понимание того, что происходит до вызова main(): инициализация секций, обнуление BSS, настройка стека, вызов конструкторов глобальных объектов.
- Отладка без отладчика: Умение диагностировать падения (Hard Fault, panic) по дампу регистров и стоп-фрейму, если JTAG/SWD подключить невозможно.
Условия:
- пятидневка 8-17
Адрес вакансии:
Г. Красноярск, ул. Тамбовская 5
Ваше резюме увидят первым!
Автоматическое поднятие на HeadHunter каждые 4 часа. Увеличьте свои шансы на успех в 10 раз!
Подключить автоподнятие