CI/CD 1
▼
Понимает концепции CI/CD для встраиваемой разработки: сборка, тестирование, деплой для прошивки. Использует существующие воркфлоу для кросс-компиляции и hardware-in-the-loop тестов. Может добавить шаг для валидации прошивки. Читает логи неудачных сборок для проблем тулчейна.
Проектирует CI/CD pipelines с нуля. Настраивает caching для ускорения builds. Использует matrix builds для тестирования на разных версиях. Настраивает deployment pipelines (staging → production). Работает с secrets и environment variables.
Проектирует CI/CD платформу для нескольких проектов. Создаёт reusable workflows/templates. Оптимизирует время build на уровне организации. Настраивает security scanning в pipeline. Внедряет deployment strategies (blue-green, canary). Интегрирует с ArgoCD/FluxCD.
Code Review 1
▼
Участвует в code review: проверяет форматирование, именование. Учится давать конструктивную обратную связь по embedded-коду.
Проводит review embedded-кода: проверяет memory safety, interrupt correctness, peripheral configuration. Даёт аргументированную обратную связь.
Ведёт глубокий review: timing analysis, resource usage, safety implications. Менторит junior/middle через review, создаёт review checklist.
Определяет code review стандарты для команды. Формирует review checklist для safety-critical embedded, проводит architecture reviews.
Embedded-инструменты 1
▼
Использует базовые инструменты отладки: JTAG/SWD через ST-Link, breakpoints в IDE, printf-отладку через UART. Анализирует простые баги.
Применяет продвинутую отладку: ITM trace, SWO viewer, Segger RTT, watchpoint на memory access. Использует осциллограф для timing-анализа.
Проектирует debug-инфраструктуру: custom fault handlers, core dump extraction, post-mortem analysis. Применяет Segger SystemView для RTOS profiling.
Определяет debug-стратегию для продуктовой линейки. Формирует стандарты fault handling, logging, remote diagnostics для field-устройств.
Embedded-программирование 2
▼
Знает основы C для встраиваемых систем: типы данных, указатели, работа с регистрами. Пишет простые драйверы под руководством наставника на STM32/ESP32.
Самостоятельно пишет драйверы периферии на C для STM32/nRF52. Использует volatile, битовые маски, прямой доступ к регистрам через CMSIS.
Проектирует HAL-уровень на C для семейств MCU. Оптимизирует код под ограничения Flash/RAM, применяет DMA и прерывания для высокопроизводительных задач.
Определяет C coding standards для embedded-команды. Внедряет статический анализ (PC-lint, Polyspace), формирует стратегию портирования между платформами.
Понимает основы управления памятью C++ для микроконтроллеров. Пишет простые драйверы и код доступа к периферии. Следует стандартам кодирования для встраиваемых safety-critical систем.
Применяет C++17 для embedded: constexpr-вычисления, type-safe обёртки над регистрами, CRTP для HAL. Избегает dynamic allocation и exceptions.
Проектирует zero-cost abstraction HAL на C++ с шаблонами. Применяет compile-time полиморфизм, оптимизирует размер бинарника через LTO и -fno-rtti.
Определяет C++ subset для embedded-команды. Формирует guidelines по использованию STL, templates, memory management на ресурсоограниченных платформах.
Git и workflow 1
▼
Использует Git для embedded: commit, push, pull, базовое branching. Понимает .gitignore для build artifacts и IDE-файлов.
Применяет Git workflow: feature branches, interactive rebase, cherry-pick для hotfix. Использует git submodules для HAL/SDK зависимостей.
Управляет сложными Git-сценариями: monorepo для firmware + tools, git-bisect для regression hunting, Git LFS для бинарных assets.
Определяет Git-стратегию для embedded-команды. Формирует branching model, release tagging, submodule management guidelines.
IoT-платформы 1
▼
Понимает основы MQTT: publish/subscribe, topics, QoS levels. Подключает устройство к брокеру (Mosquitto) с простыми топиками.
Реализует MQTT-коммуникации: QoS 1/2, retained messages, last will, topic hierarchy design. Оптимизирует reconnect и keep-alive для нестабильных сетей.
Проектирует MQTT-архитектуру для IoT-флота: shared subscriptions, bridge между брокерами, MQTT 5.0 features. Обеспечивает TLS и client certificates.
Определяет MQTT-стратегию для IoT-платформы. Формирует topic naming conventions, QoS policy, security standards для device fleet.
RTOS и реальное время 3
▼
Понимает bare-metal разработку: startup-код, linker script, таблица векторов прерываний. Пишет простые программы без ОС на STM32.
Самостоятельно разрабатывает bare-metal firmware: настройка PLL, конфигурация периферии через регистры, реализация boot sequence на Cortex-M.
Проектирует bare-metal архитектуру для production-устройств. Реализует собственный scheduler, power management, watchdog recovery, OTA-обновления.
Определяет bare-metal стандарты для линейки продуктов. Формирует подходы к boot security, hardware abstraction, портированию между MCU семействами.
Понимает разницу между hard/soft real-time. Знает основы планирования задач, deadline-ов и jitter. Измеряет latency с помощью осциллографа.
Проектирует soft real-time системы с предсказуемым поведением. Анализирует worst-case execution time, применяет Rate Monotonic Scheduling.
Проектирует hard real-time системы с гарантированными deadline. Применяет formal timing analysis, оптимизирует interrupt latency, использует hardware timers.
Определяет real-time требования для продуктовой линейки. Формирует методологию верификации timing constraints, ведёт review критичных по времени систем.
Понимает концепции RTOS: задачи, приоритеты, семафоры, очереди. Создаёт простые multi-task приложения на FreeRTOS под руководством наставника.
Самостоятельно проектирует multi-task системы на FreeRTOS/Zephyr. Применяет mutex, event groups, software timers. Отлаживает race conditions через трассировку.
Проектирует архитектуру RTOS-приложений с гарантированным response time. Оптимизирует stack allocation, применяет priority inversion protection, настраивает tickless idle.
Определяет RTOS-стратегию для продуктовой линейки. Формирует стандарты task decomposition, межзадачного взаимодействия, проводит review архитектуры.
Unit-тестирование 1
▼
Понимает основы юнит-тестирования встраиваемого кода: основы фреймворков CUnit/Unity, мокирование уровня аппаратной абстракции, простые assertions значений регистров. Следует командным паттернам тестирования модулей прошивки на хосте перед прошивкой на целевое устройство.
Пишет unit-тесты для embedded-модулей: mocking HAL через function pointers, тестирование state machines, protocol parsers. Достигает > 60% coverage.
Проектирует test architecture для firmware: hardware abstraction для testability, test doubles для peripherals, property-based тесты.
Определяет testing стратегию для embedded-команды. Формирует coverage requirements, test pyramid для firmware, CI integration.
Алгоритмы и структуры данных 2
▼
Понимает O-нотацию и базовые алгоритмы в контексте embedded: сортировка, поиск с учётом ограничений памяти MCU. Выбирает подходящие алгоритмы.
Применяет алгоритмы для embedded: ring buffers, state machines, CRC-расчёты. Оценивает сложность с учётом тактов процессора и cache miss.
Реализует оптимизированные алгоритмы для MCU: fixed-point math, lookup tables, branch-free код. Профилирует через cycle counter (DWT).
Определяет алгоритмические стандарты для embedded-платформы. Формирует библиотеку оптимизированных алгоритмов, ведёт review критичных путей.
Знает базовые структуры данных для embedded: массивы, связные списки, очереди. Понимает ограничения динамической памяти на MCU.
Применяет embedded-специфичные структуры: static pool allocators, circular buffers, fixed-size hash maps. Избегает heap fragmentation.
Проектирует custom data structures для embedded: lock-free queues для ISR, memory-mapped structures, packed structs для протоколов.
Определяет стандарты структур данных для embedded-платформы. Формирует библиотеку statically-allocated контейнеров, ведёт review.
Аппаратные интерфейсы 3
▼
Понимает основы BLE: advertising, connection, GATT profile. Использует nRF Connect для отладки. Реализует простой BLE peripheral на nRF52.
Самостоятельно разрабатывает BLE-устройства: custom GATT services, bonding/pairing, connection parameter optimization. Анализирует пакеты через sniffer.
Проектирует BLE mesh-сети и multi-connection архитектуры. Оптимизирует power consumption в BLE, реализует OTA DFU, интегрирует с BLE 5.3 features.
Определяет BLE-стратегию для продуктовой линейки. Формирует стандарты GATT-профилей, security model, ведёт review BLE-архитектуры устройств.
Понимает работу GPIO, ADC, DAC на MCU. Настраивает пины через HAL, считывает аналоговые значения. Использует мультиметр для проверки сигналов.
Самостоятельно конфигурирует GPIO alternate functions, ADC с DMA multi-channel scan, DAC с timer trigger. Калибрует ADC для точных измерений.
Проектирует системы сбора аналоговых данных: oversampling, digital filtering, ADC calibration pipeline. Оптимизирует power consumption через GPIO configuration.
Определяет стандарты работы с аналоговой периферией для платформы. Формирует калибровочные процедуры, ведёт review аналоговых подсистем.
Понимает основы SPI, I2C, UART протоколов. Использует готовые HAL-драйверы для общения с периферией на STM32. Анализирует сигналы логическим анализатором.
Самостоятельно конфигурирует SPI/I2C/UART на уровне регистров. Реализует DMA-передачу, обрабатывает ошибки bus collision, настраивает baud rate.
Проектирует высокопроизводительные коммуникации: multi-slave SPI с chip select mux, I2C bus recovery, UART с custom protocol и CRC.
Определяет стандарты коммуникационных протоколов для платформы. Формирует unified driver architecture для SPI/I2C/UART, ведёт review драйверов.
Многопоточность и конкурентность 2
▼
Понимает асинхронную модель в embedded: прерывания, callback-и, event-driven архитектура. Реализует простые ISR-обработчики на STM32.
Применяет асинхронные паттерны: DMA completion callbacks, timer-driven state machines, event-driven архитектура с очередями сообщений.
Проектирует async-архитектуру firmware: coroutine-based подход, cooperative scheduling, zero-copy DMA pipelines. Минимизирует ISR latency.
Определяет async-паттерны для embedded-команды. Формирует стандарты обработки прерываний, event-driven design, DMA strategy.
Понимает основы многопоточности для встраиваемых систем: создание и планирование задач RTOS, базовое использование семафоров и мьютексов для защиты ресурсов, прерывания и взаимодействие с потоками. Следует командным конвенциям паттернов конкурентного проектирования прошивки.
Применяет продвинутую многозадачность: priority inheritance, event groups, task notifications в FreeRTOS. Отлаживает deadlock через трассировку.
Проектирует concurrent-архитектуру firmware: lock-free алгоритмы, ISR-safe коммуникации, priority ceiling protocol. Минимизирует critical sections.
Определяет concurrency стандарты для embedded-команды. Формирует паттерны межзадачного взаимодействия, ведёт review concurrency-критичного кода.
Оптимизация 2
▼
Понимает источники latency в embedded: interrupt latency, context switch, bus wait states. Измеряет response time осциллографом.
Оптимизирует latency: приоритизация прерываний, размещение кода в RAM (ITCM), tail-chaining прерываний, cache configuration.
Проектирует ultra-low latency системы: deterministic ISR, zero-wait-state memory access, DMA chaining, предсказуемый scheduling.
Определяет latency optimization стандарты. Формирует timing budgets для critical paths, worst-case latency analysis methodology.
Понимает ресурсные ограничения MCU: Flash, RAM, CPU cycles, power. Оптимизирует размер бинарника через compiler flags (-Os, LTO).
Оптимизирует ресурсы: code size через dead code elimination, RAM через static allocation, power через sleep modes и peripheral clock gating.
Проектирует resource-efficient firmware: function-level power management, adaptive clock scaling, memory overlay techniques.
Определяет resource optimization стратегию. Формирует resource budgets (Flash/RAM/power) для embedded-продуктов, ведёт review.
Профилирование 1
▼
Использует базовое CPU профилирование: DWT cycle counter, GPIO toggle + осциллограф для измерения времени выполнения функций на MCU.
Применяет продвинутое профилирование: Segger SystemView для task profiling, ETM trace для instruction-level analysis, hotspot detection.
Проектирует CPU profiling инфраструктуру: continuous performance monitoring, automated regression benchmarks, power/performance correlation.
Определяет CPU profiling стандарты для embedded-команды. Формирует performance budgets, automated alerting при regression.
Управление памятью 1
▼
Понимает модель памяти MCU: Flash, RAM, stack, heap. Знает linker script секции (.text, .data, .bss). Мониторит использование памяти.
Управляет памятью на embedded: custom allocators, memory pools, stack watermark monitoring. Избегает fragmentation, анализирует map-файл.
Проектирует memory management стратегию: MPU configuration, memory-mapped I/O, scatter-loading, placement в специфичных RAM секциях (CCM, DTCM).
Определяет memory management стандарты для платформы. Формирует подходы к memory budgeting, leak detection, защите через MPU.
Чистый код и рефакторинг 1
▼
Следует coding standards: именование переменных, форматирование, комментирование в embedded C/C++. Использует clang-format для единообразия.
Применяет статический анализ (cppcheck, PC-lint), пишет doxygen-документацию. Проводит self-review, следует MISRA C guidelines.
Внедряет инструменты качества: MISRA compliance checking, code coverage для firmware, automated code review. Формирует quality gates для CI.
Определяет code quality стратегию для embedded-команды. Формирует MISRA compliance process, ведёт architecture reviews.