EmbeddedRelated.com
The 2026 Embedded Online Conference

Lightweight hardware abstraction

Gene BrenimanGene Breniman January 31, 2012

Hardware pin reassignments turned a small firmware tweak into a tangled mess of #ifdefs and scattered port references. Gene Breniman shows how a lightweight hardware abstraction, implemented with per-board include headers and meaningful macros like MODE_LED and LED_ON, cleans up the code and makes it easy to target multiple prototypes. The post emphasizes keeping changes local to configuration headers to reduce validation scope and maintenance.


Embedded Software Creation II - European Normative & Legislation

Dr. Maykel AlonsoDr. Maykel Alonso December 20, 20116 comments

In this post I will explain the European Normative. I will answer the main questions and I will be open to answer all the doubts any of you could have. Please leave a comment and I will answer if i could.

Why I need to look and accomplish some standards? 

The main reason is if you want to comercialize the product in the European Union, if exists any European Directive that cover the product, the product must be marked with the CE mark. For USA it work in the same way by the...


C++ on microcontrollers 4 – input pins, and decoding a rotary switch

Wouter van OoijenWouter van Ooijen November 12, 20112 comments

Wouter van Ooijen shows how to extend a small C++ I/O library for microcontrollers to support input pins and mixed I/O, and how to decode a rotary switch reliably. The post walks through a safe class hierarchy for input, output, and bidirectional pins, then builds a quadrature decoder with a saturating counter and an HC595 seven-segment demo you can run on LPCXpresso hardware.


Modulation Alternatives for the Software Engineer

Jason SachsJason Sachs November 8, 20111 comment

Jason starts with a hardware curiosity, the 7497 synchronous rate multiplier, and turns it into a practical lesson for firmware engineers. He contrasts conventional PWM with a simple accumulator-based method called "synthetic division," showing how it implements first-order delta-sigma behavior in software. The post explains when to pick PWM or delta-sigma and why the accumulator trick can give higher effective resolution at low update rates.


C++ on microcontrollers 3 – a first shot at an hc595 class with 8 output pins

Wouter van OoijenWouter van Ooijen November 2, 2011

 previous parts: 1, 2

This blog series is about the use of C++ for modern microcontrollers. My plan is to show the gradual development of a basic I/O library. I will introduce the object-oriented C++ features that are used step by step, to provide a gentle yet practical introduction into C++ for C programmers.  Reader input is very much appreciated, you might even steer me in the direction you find most interesting.

In the first part of...


A true pioneer passes away... A farewell to Ritchie.

Gene BrenimanGene Breniman October 15, 20115 comments

Dennis Ritchie's work on C and UNIX quietly shaped the tools we use every day. Gene Breniman recalls becoming a convert after reading Kernighan and Ritchie's The C Programming Language and how C replaced assembly in his embedded projects. This personal farewell explains why K&R remains a near-biblical reference for many engineers and why Ritchie's influence still matters.


Using XML to describe embedded devices (and speak to them)

Martin StrubelMartin Strubel October 12, 20111 comment

Make embedded devices tell you what they can do. Martin Strubel shows how to use XML and XSLT with the DClib/netpp framework to describe hardware, map registers into abstract properties, and auto-generate compact C, documentation, and VHDL. The netpp property protocol then lets you probe, query, and control those properties over TCP, UDP, or other transports, simplifying test benches and multi-device families.


C++ on microcontrollers 1 - introduction, and an output pin class

Wouter van OoijenWouter van Ooijen October 9, 20117 comments

Wouter van Ooijen shows how small C++ abstractions make GPIO code portable and reusable. Starting from a simple output_pin interface he implements concrete pins for an LPC2148 GPIO and a 74HC595 shift register, then composes behaviors with wrappers like tee and invert. The post demonstrates virtual methods, references, and constructor initialization lists to build drivers you can reuse across boards.


Kind of Buggy! The state machine fantastic//

Richard DorfnerRichard Dorfner August 31, 20112 comments

Richard Dorfner shows a compact way to debug an intermittent homing failure in a Pan/Tilt camera by logging the last 30 state transitions in a circular buffer. He tags each entry with a function identifier and uses breakpoints to walk the recorded sequence backwards. That reveals a timing interaction between a 100 ms periodic flag and the homing code that stopped the motor state machine. The method is low-overhead and ideal for single-threaded embedded systems.


Get your microcontroller and PC to talk

Jayaraman Kiruthi VasanJayaraman Kiruthi Vasan August 15, 20115 comments

Projects often need a quick PC interface for an otherwise standalone microcontroller, but learning VB or Visual C++ can feel like overkill. Jayaraman Kiruthi Vasan shows how Processing, an open source, C like environment with serial and Arduino libraries, gives embedded engineers a fast, low friction way to build GUIs and COM links to chips like the 8051 and Renesas R8C. The post promises a hands on example connecting Processing to a 8051.


Tracing code and checking timings

Richard DorfnerRichard Dorfner May 25, 20115 comments

When you cannot afford logs or to stop the CPU, GPIO toggles become a powerful real-time tracer. Richard shows how driving IO pins and watching them with an oscilloscope or logic analyzer reveals control flow, function timings, and ISR activity with very little overhead. He also explains using direct port writes and conditional compilation to keep measurements noninvasive and easy to enable or disable.


Remember Y2K?

Colin WallsColin Walls December 21, 20231 comment

There was fear that the turn of the century at the end of 1999 would cause problems with many embedded systems. There is evidence that the same issue may occur in 2038.


Building Linux Kernel for Desktops

Kunal SinghKunal Singh August 9, 20084 comments

Kernel building for desktop Linux is less daunting than it used to be. In this short primer Kunal Singh introduces the distribution-specific tools and procedures that simplify compiling a desktop kernel, with focused pointers for Fedora, Ubuntu, and SUSE. Engineers will get a quick overview of where to start and which tools each distribution provides to streamline a custom kernel build.


Embedded Software Creation I - Methodologies

Dr. Maykel AlonsoDr. Maykel Alonso June 20, 20112 comments

Maykel Alonso lays out the principal methodologies used to build embedded software, from cascade and incremental to iterative and spiral. The post walks through common stages, including requirements, analysis, design, implementation, integration, testing and maintenance, and highlights when each model fits firmware projects. Read this for a practical lens on picking a development approach that matches hardware constraints and regulatory demands.


Parlez vous Fortran?

Colin WallsColin Walls June 24, 2024

A look at the variety of programming languages that are [or have been] used for embedded and some thoughts on the future possibilities.


Who needs source code?

Colin WallsColin Walls August 31, 2023

Many developers feel that the supplying source code is essential for licensed software components. There are other perspectives, including the possibility of it being an actual disadvantage. Even the definition of source code has some vagueness.


Software Prototyping

Gene BrenimanGene Breniman August 19, 20081 comment

In my recent blog entry on the product development process (way down, near the end of the entry), I wrote the following:

"I continue these sorts of tests, building more and more complexity, until I am satisfied that my circuit is basically functional. Then, using the test code that I have created as a model, I begin to write the real software for my product. As my software grows, to complete the full functionality of my design, I sometime find it useful to drop back to my 'test software'...


Hello Android

Kunal SinghKunal Singh May 5, 20081 comment

Finally I could get Android Early SDK up and running on my Fedora Core-7 Machine.

The process was quite simple. However I had to struggle for a few days, because Fedora install the gnu version of Java and Android requires Java from Sun.

Here are the steps I had to follow:

(1) Install the eclipse IDE (if you do not have it already) with following command:

$> yum install eclipse-jdt eclipse-jdt-sdk (to be done as super user).

(2) now install the Android SDK and ADT plug-in for Eclipse...


Size matters - System success depends on initial design

Gene BrenimanGene Breniman April 23, 20111 comment

A seemingly small UI choice can reshape an entire embedded system. Gene Breniman uses a real product example to show how picking a graphic touchscreen instead of a character LCD can multiply CPU, memory, OS, and licensing needs. The post explains why capturing requirements early and planning for growth paths keeps complexity and cost under control, and how to size hardware to fit real needs.


“Smarter” cars, unintended acceleration – and unintended consequences

Michael J. PontMichael J. Pont October 20, 2015

In this article, I consider some recent press reports relating to embedded software in the automotive sector.

In The Times newspaper (London, 2015-10-16) the imminent arrival of Tesla cars that “use autopilot technology to park themselves and change lane without intervention from the driver†was noted.

By most definitions, the Tesla design incorporates what is sometimes called “Artificial Intelligence†(AI).Others might label it a “Smart†(or at least...


The 2026 Embedded Online Conference