Specialist Department: Embedded & Firmware. Activated when project targets MCU, RTOS, bare-metal, or hardware-coupled code. Injects additional requirements into ALL roles. Trigger for "firmware", "embedded", "MCU", "RTOS", "bare-metal", "STM32", "ESP32", "nRF", "FreeRTOS", "Zephyr", "interrupt", "DMA", "HAL", "BSP", "register", "MISRA", "watchdog", "linker script", "JTAG", "SWD", "safety-critical", "IEC 61508", "ISO 26262", "DO-178C", or any HW topic.
This department activates when ANY of these are detected: cross-compilation toolchain, linker scripts (.ld), RTOS headers, register access (volatile uint32_t *), HAL/BSP directories, MCU-specific configs (.ioc, sdkconfig, .dts), MISRA flags, or user explicitly states embedded target.
Capture additional requirements:
Additional design requirements:
Additional coding rules:
malloc/new) in real-time or safety-critical paths. Use static
allocation, memory pools, or pre-allocated buffers.#define UART_CR1_TXEIE (1U << 7)
USART1->CR1 |= UART_CR1_TXEIE; // Named mask, not magic 0x80
int for HW interface.-fno-exceptions). No RTTI
(-fno-rtti). No new/delete in RT paths. Use RAII, constexpr, templates, enum class.
Allowed: classes, references, namespaces, std::array, std::span. Restricted: virtual
functions (measure vtable cost), std::function (heap), STL containers (heap).-Wall -Wextra -Werror -Wconversion -Wsign-conversion -Wdouble-promotion -ffunction-sections -fdata-sections (dead code elimination). -Wl,--gc-sections -Wl,--print-memory-usage.Additional test strategy:
Additional test cases:
Additional firmware security checks:
-fstack-protector-strong).Additional release artifacts:
.elf — Debug binary with symbols (for JTAG debugging)..bin or .hex — Flashable binary image..map — Linker map file for memory usage analysis.__attribute__((section(".build_info")))
const build_info_t info = {
.magic = 0xDEADBEEFU,
.version = { FW_MAJOR, FW_MINOR, FW_PATCH },
.git_hash = GIT_HASH,
.build_date = BUILD_DATE,
.compiler = __VERSION__
};
| Framework/RTOS | Target | Key Concepts |
|---|---|---|
| FreeRTOS | Cortex-M, ESP32 | Tasks, queues, semaphores, timers |
| Zephyr | Multi-arch | Device tree, Kconfig, west build system |
| ESP-IDF | ESP32 family | FreeRTOS-based, menuconfig, partitions |
| STM32 HAL/LL | STM32 | HAL (portable) / LL (performance/direct) |
| nRF SDK/Connect | Nordic nRF52/53 | Zephyr-based, BLE/Thread/Zigbee stacks |
| Arduino | AVR, ESP, SAMD, RP2040 | setup()/loop(), library ecosystem |
| Mbed OS | Cortex-M | RTOS + drivers + connectivity |
| CMSIS | ARM Cortex | Core access, DSP library, RTOS API |
| ThreadX (Azure) | Multi-arch | Tasks, queues, certified for safety |
| QNX | Safety-critical auto | Microkernel, POSIX, ISO 26262 |
| VxWorks | Aerospace/defense | DO-178C certified, ARINC 653 |
| RTEMS | Space/science | POSIX, multi-arch, open source |
references/misra-guidelines.md — MISRA-C:2012 critical rules, deviation process, static analysis tools.references/rtos-patterns.md — FreeRTOS task/queue/mutex, ring buffers, watchdog, DMA, HAL interface, power management, build info embedding.