A nail for a fuse

If I were to search my soul, I’d have to admit that the use of assertions has helped me more than any other single technique, even more than my favorite state machines. But, the use of assertions, simple as they are, is surrounded by so many misconceptions and misunderstandings that it’s difficult to know where […]

Read More

Keeping your EEPROM data valid through firmware updates

Back when embedded systems used EPROM (no that is not a typo for my younger readers) rather than Flash, the likelihood of the code being updated in the field was close to nil. Today however, it is common for embedded systems to contain mechanisms to allow the code to be updated easily. Like most people, […]

Read More

Embedded Programmers Worldwide Earn Failing Grades in C and C++

In industry surveys, over 80% of embedded software developers report using C or C++ as their primary programming language. Yet as a group, these programmers earned a failing grade on a multiple-choice quiz testing firmware-related C programming skills. A scary result, considering that embedded software inside medical devices, industrial controls, anti-lock brakes, and cockpits place human lives […]

Read More

World Usability Day

November the 12th has been designated World Usability Day for 2009. The principle advocated by the Usability Professionals Association is to dedicate one day of the year to promoting some aspect of usability, and to evangelize good usability to the broader engineering and design community. This year’s theme is ‘Designing for a Sustainable World’. Last […]

Read More

Eye, Aye I!

Today’s post should probably be called ‘Thoughts on non-descriptive variable names’, but once in a while I have to let my creative side out! Anyway, the motivation for today’s post, is actually Michael Barr’s latest blog posting concerning analysis of the source code for a breathalyzer. Since I do expert witness work, as well as develop products […]

Read More

Breathalyzer Source Code Analysis

Firmware bugs seem to be everywhere these days. So much so that firmware source code analysis is even entering the courtroom in criminal cases involving data collection devices with software inside. Consider the precedent-setting case of the Alcotest 7110. After a two-year legal fight, seven defendants in New Jersey DUI cases successfully won the right to have […]

Read More

This Code Stinks! The Worst Embedded Code Ever

At the Embedded Systems Conference Boston in September, I gave a popular ESC Theater talk titled “This Code Stinks! The Worst Embedded Code Ever” that used lousy code from real products as a teaching tool. The example code was gathered by a number of engineers from a broad swath of companies over several years. (Minor details, including […]

Read More

TechBites – A Collaborative Community for Engineers

Since at least as far back as January 1999, when I wrote a white paper describing the idea to some colleagues, I’ve wanted to participate in a collaborative community for embedded systems design engineers. I felt then, as I do now, that the collective wisdom spread across the community is largely untapped. This feeling was […]

Read More

Lowering power consumption tip #3 – Using Relays

This is the third in a series of tips on lowering power consumption in embedded systems. Today’s topic concerns relays. It may be just the markets that I operate in, but relays seem to crop up in a very large percentage of the designs that I work on. If this is true for you, then today’s tip […]

Read More