EmbeddedRelated.com
The 2026 Embedded Online Conference

Coding - Step 0: Setting Up a Development Environment

Stephen FriederichsStephen Friederichs November 25, 20145 comments

Stephen Friederichs walks through setting up a minimal C development environment without an IDE, focusing on Windows. He explains why learning command-line toolchains matters, recommends GCC and Make as a durable base, and gives step-by-step MinGW installation and PATH configuration plus editor suggestions. The guide gets you compiling with mingw32-make and gcc so you can move on to makefiles and project structure.


Important Programming Concepts (Even on Embedded Systems) Part IV: Singletons

Jason SachsJason Sachs November 11, 20142 comments

Singletons are convenient but often a modularity killer, especially in embedded firmware. Jason Sachs walks through the many faces of singletons, from static members and globals to hardware registers and user-visible application singletons, and shows practical ways to avoid tight coupling. Read this for concrete embedded examples and pragmatic fixes like passing state explicitly, using interfaces or factories, and isolating unavoidable globals in a HAL.


The CRC Wild Goose Chase: PPP Does What?!?!?!

Jason SachsJason Sachs October 23, 20142 comments

Jason Sachs walks through a CRC rabbit hole and explains why ambiguous CRC names and incomplete specs lead to subtle protocol bugs. He demonstrates how XMODEM and KERMIT variants with a zero initial value can miss dropped leading-zero bytes, praises the X.25 standard for providing test vectors and a clear CRC16 definition, and warns that RFCs that ship only sample code are a poor substitute for a proper specification.


Important Programming Concepts (Even on Embedded Systems) Part III: Volatility

Jason SachsJason Sachs October 10, 2014

Jason Sachs takes volatility out of the basement and into practical embedded programming. He shows why data that can change outside your thread of control breaks assumptions, how the volatile qualifier in C/C++ and Java affects compiler and CPU behavior, and when to prefer shadow registers, locks, or proper concurrency libraries instead of ad hoc volatile usage.


You Will Make Mistakes

Jason SachsJason Sachs September 28, 20141 comment

Mistakes are inevitable in engineering, and they grow worse when teams are distributed and communication has long round-trip delays. Jason Sachs lays out practical, low-friction tactics to keep small errors from becoming project stoppers, from applying FMEA thinking to using issue trackers, event logging, clear interface specs, and better meeting habits. The post focuses on habits you can start using today to raise team reliability.


Introduction to Microcontrollers - Ada - 7 Segments and Catching Errors

Mike SilvaMike Silva September 22, 20145 comments

Mike demos an Ada implementation of a multiplexed 7-segment driver on the STM32F407 Discovery board, highlighting Ada idioms like protected objects for ISRs and packed-boolean GPIO mapping. The post shows practical timer setup for Timer 6, how to avoid ARR/CNT races, and how Ada's runtime range checks plus a last-chance handler surface out-of-range errors with file and line diagnostics.


Important Programming Concepts (Even on Embedded Systems) Part II: Immutability

Jason SachsJason Sachs September 14, 2014

Immutable data can make embedded code easier to reason about, reduce concurrency bugs, and eliminate defensive copies. Jason Sachs walks through practical techniques that work in resource-constrained systems, from using const and pseudo-immutability to separating old and new state, to the limits of fully persistent data structures when you lack dynamic memory. The article also compares register-level state flow and advocates message passing as a concurrency alternative.


Important Programming Concepts (Even on Embedded Systems) Part I: Idempotence

Jason SachsJason Sachs August 26, 20145 comments

Idempotence is a simple design principle that prevents duplicate effects when operations are retried or repeated. Jason Sachs shows why it matters in embedded systems, from HTTP submit buttons and capacitive touch inputs to garage-door remotes and SPI DAC writes. Read this post to learn three practical idempotent techniques and when redundant writes are a sensible reliability trade-off.


Project Directory Organization

Stephen FriederichsStephen Friederichs August 20, 20142 comments

A recent question on Reddit’s C Programming sub asked what sort of directory structure people use for their projects. Perhaps not unsurprisingly this didn’t elicit a flood of answers - maybe there are no organizational schemes that people are happy with or perhaps few people consider it a glamorous topic (not that the C Programming subreddit is filled with glamorous people -no offense I love you all). Personally I find it to be a very interesting topic. Organization and process are...


OOKLONE: a cheap RF 433.92MHz OOK frame cloner

Fabien Le MentecFabien Le Mentec August 12, 201417 comments

Fabien Le Mentec built a pocket device that listens to and clones 433.92MHz OOK frames, automating the tedious reverse engineering of cheap wireless outlets. The prototype uses a Moteino with an RFM69 to sample demodulated OOK data, stores pulse durations in SRAM, and replays frames; the code and hardware notes are available on GitHub along with limitations and next steps.


Vintage multi-core and “so long”

Colin WallsColin Walls April 3, 202514 comments

A personal and historical perspective on multi-core system design.


Hidden Gems from the Embedded Online Conference Archives - Part 3

Tim GuiteTim Guite April 4, 20252 comments

Jack Ganssle shows us what we can learn by studying previous failures - and why this is essential for anyone working in embedded systems.


Open-Source Licenses Made Easy with Buildroot and Yocto for Embedded Linux

George EmadGeorge Emad October 2, 2023

In this article I will try to explain what are the copyrights/copyleft, what are the popular opensource software licenses, and how to make sure that your Embedded Linux system complies with them using popular build systems ; Buildroot or YOCTO projec


AI at the Edge - Can I run a neural network in a resource-constrained device?

Stephen MartinStephen Martin March 11, 20192 comments

AI at the edge is no longer science fiction, it can run on tiny, resource-constrained devices like Arm Cortex-M4 and M7 microcontrollers. This post introduces inference-only neural networks on MCUs, explains why edge AI matters for power, latency, and privacy, and points to practical toolchains such as STM32Cube.AI, Arm NN, and AWS Greengrass to get started quickly.


Short Circuit Execution vs. Unit Testing

Stephen FriederichsStephen Friederichs July 7, 20141 comment

Short-circuit evaluation in C can make perfectly logical code behave differently than you expect, especially during unit testing. Stephen Friederichs walks through a simple if statement where a conditional function is never called because of short-circuiting, causing surprising test failures and hidden side effects. He shows why stubs reveal the issue and recommends using a temporary variable to ensure the call always occurs.


More than just a pretty face - a good UI is essential

Colin WallsColin Walls November 30, 20231 comment

A user interface can make or break a device - determining its success in the marketplace. With careful design, the UI can make the product compelling and result in a high level of satisfaction from new and experienced users.


Zephyr: West Manifest For Application Development

Mohammed BillooMohammed Billoo November 25, 2024

In this blog post, I show a simpler way to create custom West manifest files. This technique eliminates the need to duplicate the complex West manifest from upstream Zephyr. I also show how we can use the West manifest to include out-of-tree board and SoC definitions, and include our own out-of-tree drivers.


Embedded Toolbox: Source Code Whitespace Cleanup

Miro SamekMiro Samek August 5, 2017

Trailing whitespace and mixed end-of-line conventions can silently break preprocessing or bloat diffs, yet they are invisible in editors. QClean is a tiny, blazingly fast CLI utility that removes trailing spaces, normalizes EOLs, replaces tabs with spaces, and optionally flags long lines. It runs cross-platform or as a native binary in qtools/bin and is easy to customize and rebuild for your workflow.


Scorchers, Part 2: Unknown Bugs and Popcorn

Jason SachsJason Sachs April 5, 20202 comments

Jason Sachs likens bug hunting to popping popcorn to explain diminishing returns when preparing a release. He argues that the rate of new bug reports is a practical signal for whether to keep testing or ship, and that late fixes incur hidden costs like extra testing, branching, documentation, and lost focus. The piece also warns that embedded firmware needs stricter pre-release testing because updates are rarer.


The three laws of safe embedded systems

Michael J. PontMichael J. Pont November 12, 20151 comment

This short article is part of an ongoing series in which I aim to explore some techniques that may be useful for developers and organisations that are beginning their first safety-related embedded project.


The 2026 Embedded Online Conference