A volatile tempest

Regular readers will know that I often comment on the use of volatile in embedded systems. As a result I am occasionally contacted about my opinion on whether a compiler is generating correct code – particularly when hardware is being accessed. Well I was contacted last week by Ratish Punoose who had a classic problem […]

Read More

Tools to Detect Software Copyright Infringement

An emerging class of tools makes it easy to automatically detect copying of copyrighted software source code, even if it came from one of the hundreds of thousands of open source packages. I am presently providing litigation support in a case of alleged software copyright infringement.  In a nutshell, the plaintiff brought suit against the […]

Read More

The Sad State of Embedded Software Process

Today VDC is sharing their 2010 Embedded System Engineering Survey Results.  I’m sad to say that the collective immaturity of the embedded software community continues to be on display. Consider these two depressing statistics from the survey results: Only 1 out of 5 embedded software developers are using a static analysis tool on their current project.  That’s about […]

Read More

Cut And Paste Engineering

Several years ago I was involved in a project that expected to have a large production volume.  The development group was working with a few prototypes but the manufacturing team was not yet fully engaged.  Part of my work required a unique device serial number for security and other purposes.  Unfortunately, our prototypes had no […]

Read More

#include “includes.h”

I am sure that the title of this blog posting is familiar to most of the readers of this blog, in that you have opened up a C source file and found a single #include statement that references a file that is typically called ‘includes.h’. On opening ‘includes.h’ one invariably finds an enormous list of […]

Read More

Accommodating Product Changes

Late in the development of a new printer, a third-party print engine that interfaced with a block on the ASIC changed its interface behavior. The print engine would quit sending pulses before the block was done with its job, causing the block to hang waiting for more pulses. This behavior existed in other printer models; […]

Read More