These blog posts are about development tools of relevance to embedded software designers.

KVM: A Small Java Virtual Machine for J2ME

Sun's K Virtual Machine gives embedded developers a virtual kick in the pants. KVM makes it possible to, for the first time, run Java programs on any 16-bit processor with 128KB of available memory.

How to Use Lint for Static Code Analysis

Language specifications, including those for C and C++, are often loosely written. A static analysis tool called lint can help you find dangerous and non-portable constructs in your code before your compiler turns them into run-time bugs.

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.

A Glossary of Open Source Legal Terms

 Printable PDF

If you are considering using software developed by others, such as Linux, within your embedded system, you'll likely need an intellectual property lawyer to read the license agreements such as GPL. Here's a brief glossary of the licensing terminology that's enough to get you started.

How to Use the C Preprocessor's #error Directive

 Printable PDF

One of the least used but potentially most useful features of the C preprocessor is the ANSI-specified #error directive. Here's a look at a couple of clever uses for #error that have proven invaluable in embedded software development.

The syntax of #error is very straightforward:

How to Choose an C Compiler for Embedded Systems

 Printable PDF

Let's face it, there's nothing sexy about the topic of cross compilers. Embedded programmers couldn't get the job done without one, but spend very little time thinking about how they work or how they could make our work easier.

Java Compilers for Embedded Systems

Java compilers (also known as ahead-of-time or AOT compilers) may be the breakthrough needed to propagate widespread use of Java throughout the embedded industry.

Kaffe: A Compact Open Source Java Virtual Machine

Quite a few embedded programmers are considering adopting the Java programming language. But it's not as easy to run Java programs in an embedded environment as you might think.