By Jack Ganssle

Real-time Firmware Upgrades for the Dishwasher

Published 7/29/04

This week The Register ran an article (http://www.theregister.co.uk/2004/07/27/esmertec_acquires_oovm/) touting Esmertec's recent acquisition of OOVM. OOVM produces a virtual machine that upgrades small embedded systems while they run, with no reboot required.

Not quite an ultra-cool technology, though surely some applications can benefit from real-time software patches. But I was struck by a quote from chief guru Lars Bak: ""If you have say, a small router or a dishwasher you can upgrade the code while it's running."

A dishwasher? How many upgrades does the old Maytag need? Will some dramatic new feature beamed into the appliance suddenly make plates sparkle like the detergent ads promise? (We use ours to store canned goods. By the time you muck off the grime and pre-wash flatware and bowls you're almost done cleaning up anyway.)

I suppose most appliances of the future will be on the `net for a variety of reasons. Aren't toasters (https://www.ganssle.com/articles/toastallessons.htm) already connected?

When real-time firmware updates are the norm the world will be a very different place. The thought of a code change to ABS brakes while a panicked teenager stands on the pedal, skidding around a gaggle of kids at the bus stop, gives me shudders.

No doubt Boeing's upcoming 7E7 will exploit satellite software downloads to fix avionics problems. But this technology brings other threats. Is that kid in row 46 with a wireless laptop doing his homework. or hacking the inertial navigation system?

Or maybe the VM could provide a two way connection that signals failures to vendors, rather like how Windows XP transmits crash results to Microsoft.

upgradedishw

Of course, now "crash" has multiple meanings.

The Register article breathlessly explains how the VM needs a paltry 128kb of memory. That is, of course, greater than the entire address space of 60% of all microprocessors sold. Why not focus on flushing out the bugs in the first place instead of adding an extra eighth of a meg of memory to manage upgrades to our 16k app?

Call me cranky but I'm frustrated enough with installing endless Windows upgrades. When all of my consumer products start clamoring for new code I'll dump the car, climb into that black buggy, and move to Amish-land in Pennsylvania.

Perhaps the virtual machine is meant as a gateway into products so vendors can enhance features. Yet for consumer products feature upgrades are rare; vendors prefer to replace products with the Next New Thing. OOVM's virtual machine appears to be a bug swatter, a way to ship faster by shortcutting development.

Once upon a time embedded systems were those devices using an 8051. Today many are stuffed with Pentiums, PowerPCs or other processors originally destined for the desktop, often booting Windows or Linux variants. So how do we distinguish an embedded system from a PC?

Quality might be a pretty good indicator. If your PC crashes a couple of times a week tempers flare but there's little real problem. If your car's engine controller needs a manual reset at every traffic light, customers will flock to purveyors of higher-quality code.

Are firmware upgrades to consumer appliances a good thing? Or are they a back door that compensates for shoddy programming?