How-to articles about programming embedded systems in C++.

Firmware Update v19.09

  • Getting Started with C++ for Firmware Developers
  • Further Develop Your Embedded Programming Skills this Fall
  • Modern Embedded Software Architecture: Beyond the RTOS
  • Retake Control of Your Embedded Project Schedule
  • Industry News That's Not Boring

Firmware Update v18.11

  • How to Get Started with C++ in Embedded Systems
  • Budget Now for 2019 Firmware Skills Training
  • How to Prioritize RTOS Tasks (and Why it Matters)
  • Industry News That's Not Boring

How to Prioritize RTOS Tasks (and Why It Matters)

This webinar examines best practices for assigning fixed priorities to a set of real-time operating systems (RTOS) tasks and interrupt service routines (ISRs). Viewers will learn how and why to use optimal methods to allow a critical set of tasks and interrupt service routines to meet all of their deadlines – even during transient overload periods. Lessons learned can be applied to the development of any priority-based preemptive RTOS, including real-time Linux.

How to Get Started with C++ in Embedded Systems

C++ compilers are available for most modern embedded processors, yet the adoption rate remains low. Here we provide very practical advice to help you can get started with C++ immediately. The discussion moves quickly from dispelling common C++ myths and identifying key C++ benefits to a set of practical tips and tricks to help you put C++ to the most effective use in your "first month" and "first year."

Top 10 Causes of Nasty Embedded Software Bugs

Too often engineers give up trying to discover the cause of infrequent anomalies--because they can't be easily reproduced in the lab--dismissing them as "user errors" or "glitches." Yet these ghosts in the machine live on. So here's a guide to the most frequent root causes of difficult-to-reproduce firmware bugs.

Top 5 Causes of Nasty Embedded Software Bugs

Too often engineers give up trying to discover the cause of infrequent anomalies--because they can't be easily reproduced in the lab--dismissing them as "user errors" or "glitches." Yet these ghosts in the machine live on. So here's a guide to the most frequent root causes of difficult-to-reproduce firmware bugs.

How to Code a State Machine in C or C++

A state machine is any object that behaves different based on its history and current inputs.  Many embedded systems consist of a collection of state machines at various levels of the electronics or software.

How to Have Polymorphism Without a Heap

Rethinking basic programming techniques can avoid many of the problems that heap-based memory management poses for embedded real-time system designs.

A Framework for Safe Motion Control Firmware

An object-oriented framework can be used to create safe, testable and tunable motion control systems.

Mutexes and Semaphores Demystified

What's the difference between a mutex and a semaphore? Misuse of these two distinct types of synchronization primitives can lead to difficult to debug defects with potentially severe consequences in safety-critical devices.

Pages