EmbeddedRelated.com
The 2026 Embedded Online Conference

C to C++: Bridging the Gap from C Structures to Classes

Jacob BeningoJacob Beningo May 23, 20238 comments

Jacob Beningo walks through a practical, beginner-friendly path from C structures to C++ classes for embedded systems, using an LED example to make the ideas concrete. You will see how function pointers in C approximate methods, how C++ structs and classes let you place methods with data, and how access specifiers and constructors improve encapsulation and initialization. This gives a low-risk way to start adopting C++ features.


The Missing Agile Conversation

Steve BranamSteve Branam May 15, 2023

In this article, we learn about Agile practices and how they use stories as units of development. Stories consist of a brief description, one to a few sentences. They don’t contain details sufficient to allow a developer to implement them. The Agile practice is to defer details as long as possible because conditions may change. When a developer takes on a story to implement, that’s the time for them to perform the work that has been deferred. They do this by having a conversation, a series of specific discussions working closely with the various SME’s (Subject Matter Experts) who have information relevant to the story.


STM32 VS Code Extension Under The Hood

Peter McLaughlinPeter McLaughlin April 21, 2023

ST's STM32 VS Code extension hides useful CMake projects and VS Code tasks behind a friendly UI, but understanding what it generates lets you bend it to your needs. This video peels back the layers to show the generated CMake files, how to modify them, how to add a VS Code-invokable flash task, and how to enable C++ support alongside C. The STM32 F0 example and flash task are available on GitHub.


Getting Started With Zephyr: West Manifest Customization

Mohammed BillooMohammed Billoo April 4, 2023

Create a reproducible Zephyr development baseline by customizing a West manifest, so your team avoids surprises from upstream changes. This post walks through forking Zephyr and MCUBoot when you need local changes, adapting Nordic Semiconductor's west.yml as a template, and updating remotes and defaults to point at your forks. Finish by running west init -m --mr to fetch exact revisions.


Review: Embedded Software Design: A Practical Approach to Architecture, Processes, and Coding Techniques

Steve BranamSteve Branam February 28, 2023

Jacob Beningo's Embedded Software Design is a practical, discipline-first guide to building reliable embedded systems. It frames development around a software triad: architecture, Agile/DevOps processes, and coding techniques, with security integrated from the start. The book mixes principles with hands-on recipes and includes appendices that walk through GitLab CI/CD and TDD examples you can reuse on real projects.


C to C++: 3 Proven Techniques for Embedded Systems Transformation

Jacob BeningoJacob Beningo February 7, 20234 comments

Jacob Beningo lays out a pragmatic, low-risk path for embedded teams to start using C++ without adding bloat or runtime cost. He recommends beginning by treating C++ as a cleaner C with namespaces, constexpr, and smart pointers, then adopting object-oriented design with composition, and finally introducing templates for static polymorphism where it makes sense. The post focuses on practical guardrails for resource-constrained firmware.


Libgpiod - Toggling GPIOs The Right Way In Embedded Linux

Mohammed BillooMohammed Billoo January 24, 2023

Accessing GPIOs through sysfs is simple but fragile, causing race conditions when multiple userspace processes touch the same line. This post explains libgpiod, introduced in Linux 4.8, and shows concise Python examples on a Toradex Verdin iMX8M Plus for requesting lines, tagging the consumer, using active_low flags, and reading or driving values. Learn why libgpiod provides safer, atomic GPIO handling.


In Memoriam: Frederick P. Brooks, Jr. and The Mythical Man-Month

Jason SachsJason Sachs November 20, 2022

Fred Brooks’ The Mythical Man-Month is still a surprisingly sharp guide to software projects, and Jason Sachs shows why it matters even more than its old mainframe setting suggests. He revisits Brooks’ ideas on surgical teams, conceptual integrity, throwaway prototypes, and schedule estimation, then maps them to modern embedded and software engineering realities. The result is a tribute, a book review, and a practical reminder that roles, architecture, and testing still make or break delivery.


Soft Skills For Embedded Systems Software Developers

Steve BranamSteve Branam October 18, 20222 comments

Soft skills often determine whether an embedded project ships on time as much as technical chops do. This post lays out practical, engineer-friendly guidance on interpersonal skills, communication, time management, deep focus, asking for help, learning, and resilience. It mixes concrete tips like the documentation system, pomodoro and quiet hours with habits such as engineering notebooks and role-playing to make collaboration and productivity more reliable.


Skills For Embedded Systems Software Developers

Steve BranamSteve Branam August 9, 2022

Embedded development demands a broad, practical skillset, and this post lays out the core knowledge employers expect across software, hardware, and tooling. It highlights essential languages like C, low-level concepts such as interrupts and RTOS, plus hardware skills like debugging with JTAG and using oscilloscopes. You also get realistic timelines, hands on study advice, and resource pointers to build a portfolio that proves you can ship reliable firmware.


Jaywalking Around the Compiler

Jason SachsJason Sachs December 9, 20193 comments

Messing with inline assembly can feel powerful until the compiler silently undoes you. Jason Sachs walks through a real bug on a Microchip dsPIC33E where pushing CORCON and writing a fixed value corrupts compiler-managed state and produces wrong results when the compiler reorders code. The post shows why the stack and certain registers are off-limits to raw inline asm, and gives practical, safe patterns to save and restore mode bits.


How to make a heap profiler

Yossi KreininYossi Kreinin May 23, 20141 comment

A heap profiler is surprisingly simple to build, and Yossi Kreinin walks through a compact working example called heapprof. The post shows how to intercept malloc/free, stash per-allocation metadata and call stacks into heap chunks, dump memory on crash or via JTAG, and map return addresses to source lines with addr2line or gdb. It also covers practical bootstrapping tricks for platforms without standard libc support.


Linux Kernel Development - Part 1: Hello Kernel!

Denis CavalliDenis Cavalli June 2, 20192 comments

Skip userland and run code inside the kernel with a tiny "Hello Kernel" module that prints messages on load and unload. This introduction walks through required headers, the init and exit hooks, MODULE_* metadata, a kernel-friendly Makefile, and the basic workflow to build, insmod, rmmod and inspect messages with dmesg. It’s a hands-on first step into Linux kernel module development.


7 Essential Steps for Reducing Power Consumption in Embedded Devices

Jacob BeningoJacob Beningo June 26, 20241 comment

Reducing the amount of power your embedded device is consuming is not trivial. With so many devices moving to battery operations today, maximizing battery life can be the difference between a happy, raving customer and an unhappy one that ruins your company's reputation. This post explores seven steps for optimizing your embedded systems' power consumption. You'll gain insights into the steps and techniques necessary along with receiving a few resources to help you on your journey.


A wireless door monitor based on the BANO framework

Fabien Le MentecFabien Le Mentec June 10, 20145 comments

Fabien Le Mentec built a battery-powered wireless door monitor and a reusable node framework called BANO to monitor doors across seven floors without wired links. The post highlights BANO's 17-byte key,value protocol, the node runtime that enables wake-on-interrupt low-power operation, and practical RF choices like the NRF905 plus a 330 µF cap to handle coin-cell transmission peaks. It includes source, PCB, and base station notes.


Important Programming Concepts (Even on Embedded Systems) Part VI : Abstraction

Jason SachsJason Sachs June 16, 20153 comments

Abstraction is essential, but it is not free. Jason Sachs walks through the many faces of abstraction—pattern recognition, generalization, simplification, and indirection—and shows how each helps and hurts real projects. Using examples from math, API design, UI toolkits, schematics, and embedded C, he gives practical context so firmware engineers can apply abstractions without causing maintenance or debugging headaches.


Finite State Machines (FSM) in Embedded Systems (Part 4) - Let 'em talk

Massimiliano PaganiMassimiliano Pagani May 22, 20247 comments

No state machine is an island. State machines do not exist in a vacuum, they need to "talk" to their environment and each other to share information and provide synchronization to perform the system functions. In this conclusive article, you will find what kind of problems and which critical areas you need to pay attention to when designing a concurrent system. Although the focus is on state machines, the consideration applies to every system that involves more than one execution thread.


Reverse engineering wireless wall outlets

Fabien Le MentecFabien Le Mentec July 19, 2014

Fabien Le Mentec reverse engineers a cheap set of wireless wall outlets to add them to his BANO home automation while avoiding uncertified mains hardware. He uses PCB inspection to identify a Holtek MCU and RF83C, captures 433.92 MHz OOK signals with an RTL-SDR and ookdump, then replays commands using an RFM22 in direct mode controlled by an ATmega328P. The post explains frame structure and links to a working GitHub implementation.


In TCL FPGA Wizards Trust

GLENN KirilowGLENN Kirilow October 16, 20241 comment

In TCL FPGA wizards trust. The best way to learn TCL is exposure therapy which we will be doing here using two examples: One for creation of a project with synthesis and implementation steps and another for simulation.


How to Achieve Deterministic Behavior in Real-Time Embedded Systems

Lance HarvieLance Harvie April 21, 20253 comments

Ensuring deterministic behavior in real-time embedded systems is paramount for their reliability and performance. The ability to predict precisely how a system will respond to various inputs at any given time is crucial in critical applications such as medical devices, aerospace systems, and automotive safety mechanisms. Achieving deterministic behavior involves meticulous design, stringent testing, and adherence to strict timing constraints.


The 2026 Embedded Online Conference