Usability for Non-Graphical User Interfaces

The placement of knobs, buttons, and switches is as essential as the firmware to making a usable embedded system.

How to Design Software-Friendly FPGAs and ASICs

Designing firmware-accessible debugging resources into embedded systems provides a valuable supplement to hardware test and analysis tools.

How to Design a Software-Friendly DMA Module

These built-in troubleshooting resources for direct memory access (DMA) controllers can pave the way for smoother embedded software integration.

State Machines for Event-Driven Systems

State machines are perhaps the most effective method for developing robust event-driven code for embedded systems.

Introduction to Hierarchical State Machines (HSMs)

The formalism of Hierarchical State Machines (aka statecharts) makes the state machine approach truly applicable to real-life embedded systems.

Design by Contract (DbC) for Embedded Software

What is the Design by Contract programming philosophy, what can it do for you, and why should all embedded software developers care?

Patterns of Thinking in Software Development

 Printable PDF

Metaphors and analogies can be valuable tools for learning new software concepts and tapping subject matter expertise during embedded software development.

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.

Introduction to the SAE J1939 Protocol

SAE J1939 is the standard communications network for sharing control and diagnostic information between electronic control units (ECUs) which reside on heavy duty and commercial vehicles. Examples of such vehicles are school busses, cement mixers, military vehicles, and semi-tractors.

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.

Pages