NuttX First Impressions: A POSIX RTOS With Real Trade-offs
NuttX is the only embedded RTOS I know that takes POSIX seriously. That fidelity has a cost in footprint and build complexity.
Microcontroller programming, real-time systems, IoT development, and firmware engineering
Two CAN nodes with 1% crystal tolerance behaved fine at room temperature. At -40°C the bit timing diverged enough to produce intermittent frame errors. The diagnosis took a temperature chamber and a logic analyzer.
NuttX is the only embedded RTOS I know that takes POSIX seriously. That fidelity has a cost in footprint and build complexity.
West workspaces are powerful and under-documented. A setup that works across macOS, Linux, and a CI container with pinned tool versions.
Thread uses IPv6 over 802.15.4 and integrates cleanly with IP networks. Zigbee has a larger device ecosystem. Z-Wave's dedicated 915 MHz band avoids 2.4 GHz congestion. The trade-offs for a new deployment.
We migrated a mid-complexity sensor hub from FreeRTOS 10 to Zephyr 3.4. The scheduler semantics differ more than the docs admit.
An out-of-range ADC reading from a damaged sensor was locking up our state machine every few days. The STM32 analog watchdog caught it before the next field visit.

Comprehensive comparison of FreeRTOS and Zephyr RTOS for embedded applications, including memory usage, real-time performance, and development ecosystem analysis.

Complete guide to designing IoT sensors that run for years on a single battery using advanced power management techniques and energy harvesting.
Zephyr's interrupt handling adds overhead over bare-metal. Measuring that overhead on nRF5340 with a GPIO toggle and a scope reveals the real numbers.

Learn to develop a secure bootloader for ARM Cortex-M microcontrollers with encrypted firmware updates, rollback protection, and fail-safe recovery mechanisms.
CAN FD doubles the data phase bitrate and extends the payload to 64 bytes. The transceiver choice and EMC implications follow from those two facts in non-obvious ways.
Getting DMA transfers working in a no_std Rust environment on Cortex-M is straightforward until it isn't. Memory ownership and interrupt safety are the hard parts.