How to Detect Memory Leaks

 Printable PDF

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.

How Endianness Works: Big-Endian vs. Little Endian

Some human languages are read and written from left to right; others from right to left. A similar issue arises in the field of computers, involving the representation of numbers.

Introduction to Watchdog Timers

 Printable PDF

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

Introduction to Pulse Width Modulation (PWM)

Pulse width modulation (PWM) is a powerful technique for controlling analog circuits with a processor's digital outputs. PWM is employed in a wide variety of applications, ranging from measurement and communications to power control and conversion.

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 Preserve Non-Volatile Data Across Software Versions

 Printable PDF

The format of non-volatile data may change with a new version of software. Carefully planning data layouts and using data version numbers can make these upgrades easier.

Types of Memory in Embedded Systems

SRAM or DRAM? EEPROM or flash? What types of memory will you use in your next embedded systems design?

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

 Printable PDF

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 Use Strings to Internationalize C Programs

 Printable PDF

Products destined for use in multiple countries often require user interfaces that support several human languages. Sloppy string management in your programs could result in unintelligible babble.