What's Embedded?At the 2004 ESC Wind River's Jerry Fiddler claimed that there is no real embedded systems market. He felt that it was all about "the device," and in fact the company about that time adopted the tagline "Device Software Optimization" as a replacement for "embedded systems development." Other vendors followed suit and for a while there was a DSO booth at the show.
I poked a little fun at them at the time, but Wind River did identify an interesting conundrum: despite the fact that we engineers spend our careers building embedded systems, no one really seems to be able to define "embedded system."
In the olden days it was pretty easy. Anything with a microcontroller was pretty clearly an embedded system. Yet a few quirky examples, like the keyboard controller in a PC, made a precise definition difficult.
Now things are obscured when we find processors derived from PCs in an what are clearly embedded systems, like an instrument. Then there's Windows and Linux, which can run on a desktop or buried in some dedicated system.
In our Embedded Systems Dictionary Mike Barr and I claimed that an embedded system is "A combination of computer hardware and software, and perhaps additional mechanical or other parts, designed to perform a dedicated function. In some cases, embedded systems are part of a larger system or product, as in the case of an antilock braking system in a car." But I'm not sure even that definition is definitive.
Is a PDA an embedded system? I'd argue not. What about a cell phone? It certainly does a lot more than place phone calls. Games, for instance, are totally unrelated to telephony. Some run downloadable Java apps. The way my kids use theirs looks a lot like someone working on a PC. Yet, for reasons I can't decide, I'd peg any phone as embedded.
But then there's Skype. A phone, sure. A PC app, yep. I guess a USB Skype handset is an embedded system, but Skype is much more than just the handset.
No one would doubt that an instrument that merely collects scientific data is embedded. Ditto for one that includes a web server to transmit data from remote locations. Slip in Linux to support a filesystem, and it's still embedded.
What about a blade server? It sits inside a gigantic datacenter and does nothing but serve web pages. It looks like a PC, it shares all of the PC's internals with the exception of keyboard and video, and probably has a Pentium-class processor running Linux or Windows. But it's running a single, dedicated application, just like that web-serving temperature sensor at the North Pole. Is the blade a PC or an embedded system? I deeply want to exclude it from the realm of embedded, but can't come up with a logical reason.
Though this is surely not an important issue, it sure seems odd we can't define what we do. Any suggestions?
Jack G. Ganssle is a lecturer and consultant on embedded development issues. He conducts seminars on embedded systems and helps companies with their embedded challenges. Contact him at firstname.lastname@example.org. His website is www.ganssle.com.