How-to articles about the design of safe and reliable embedded systems.

How to Detect Memory Leaks

Memory leaks can be particularly risky for long-running embedded systems. Here are some tools to identify, track, and analyze memory leaks in embedded C and C++ programs.

Introduction to Watchdog Timers

For those embedded systems that can't be constantly watched by a human, watchdog timers may be the solution.

How to Use C's volatile Keyword

The proper use of C's volatile keyword is poorly understood by many programmers. This article will teach you the proper way to do it.


How to Define Your Own assert() Macro for Embedded Systems

Embedded systems programmers often value the assert() macro. This article explores the underlying definition of this handy macro, to show you how to roll your own.

How and When to Use C's assert() Macro

The assert() macro is one of those simple tools that would not seem to merit an entire article, but I have come across an alarming number of engineers who have not heard of it or do not use it.

How to Design Safety into the Electro-Mechanical System Around Software

When it comes to safety-critical applications, sometimes you have to protect users from the software. And sometimes you have to protect users from themselves.

How to Use Watchdog Timers Properly when Multitasking

To keep a watchdog timer from resetting your system, you've got to kick it regularly. But that's not all there is to watchdog science. We will examine the use and testing of a watchdog, as well as the integration of a watchdog into a multitasking environment.

Fast Accurate Memory Test Code in C

If ever there was a piece of embedded software ripe for reuse it's the memory test. This article shows how to test for the most common memory problems with a set of three efficient, portable, public-domain memory test functions.

CRC Series, Part 3: CRC Implementation Code in C/C++

CRCs are among the best checksums available to detect and/or correct errors in communications transmissions. This article shows how to implement an efficient CRC in C or C++.

CRC Series, Part 2: CRC Mathematics and Theory

Many common types of data transmission errors cannot be detected by additive checksums. This article describes a stronger type of checksum known as a CRC.