Is the Embedded Industry Dead?
An analogy, SAT-style: The Embedded Systems Conference (ESC) is to Embedded Engineers what EclipseCon is to Eclipse Developers. At ESC, you will see hardware and software engineers wandering from booth to booth, typically drawn to anything that lights up. (Booth babes? Nah, give me blue LED's!) The love of this stuff goes way back. For me, it started when I was around 11 years old and armed with a soldering iron, a 100-in-one project kit from Radio Shack, a Commodore 64, and a workbench in the basement. So began my career path.
I've been in the embedded world professionally for 15 years now. My first official embedded design—an assignment in an EE undergraduate course—was a microprocessor-controlled (8086) hot/cold plate that used a thermoelectric module. If you've never played with a thermoelectric module, you must get one. Stick it to a big heat sink and put a decent current through it, and you get heat transfer through the module, which makes one side very hot and the other side very cold. Change the direction of the current, and the hot and cold sides switch. These devices are used in some drink coolers today, although this is far less efficient than a compressor. Anyway, in our design the user entered a desired temperature on a keypad. The microprocessor then read the temperature on the plate by sampling a thermistor. While displaying the current temperature on an LED display, the processor began driving the plate to the set temperature with rudimentary pulse-width modulation. The software also controlled current direction (heat/cool mode) and a cooling fan attached to the heat sink. To demonstrate our invention, we would put a drop of water on the plate and attempt to either freeze it or boil it. Freezing was more difficult, because we weren't able to dissipate enough heat on the hot side, despite the massive heat sink and cooling fan. Boiling was much easier. We even managed to melt the solder on the module once by intentionally overdriving the current (read: "hey, I wonder what would happen if…").
After dabbling in AI during grad school, my embedded journey resumed in the professional world where I built 3D modeling/measurement products on based on the 68332 and PPC505/509 processors. This was followed by my current employment at Wind River building debuggers for all manner of microprocessors. I will spare you further details, but for me, attending ESC last week was like talking a walk down memory lane, given that my embedded education and career began coincidentally with the emergence of a distinct space called "embedded".
And yet, something didn't feel right at ESC. For one thing, I'm tired of the term "embedded", because like so much else in my professional life, no one in my family (or the general populace) knows what the hell it means. "Device Software" is a bit better because it's at least self-descriptive and inclusive of technology mysteriously absent at ESC, like mobile java development. But it's more than just the term that bugs me. Embedded used to represent that feeling of engineering superiority over the application developer who had the whole computer at his or her disposal, when we had to deal with 8 or 16 bit microprocessors, hard real time, virtually no memory, no displays, and lousy tools. It's true that many designs still have to deal with precisely those limitations, and I don't want to diminish that. But it's also true that today's silicon contains so much stuff that you can often build an entire product out of one chip. Full-color, hi-res screens are now much more common, as are extensive GUI's available via a web server on the device. Now, instead of most embedded devices stoically performing some lonely forgotten task, they are more frequently connected to everything else by any number of communication mechanisms and protocols. And tools, thanks in part to Eclipse, are rock solid.
Software running on one or more microprocessors inside a physical product is just one part of a large, connected software application. End-user products now employ a range of software that may include a traditional embedded application and RTOS, a mobile device, a server application, and a host-based rich client app. The distinction between enterprise and embedded software is artificial and blurring ever more rapidly. Here's a simple example: a collection of heart/respiratory monitors attached to patients in a hospital ICU that transmit patient vitals via WiFi to a server, which in turn logs vitals history while relaying those stats to a PC at the nurses' station and to a hand held device in the on-call doctor's pocket, all with security enabled. Here's another for amateur car mechanics: compare the engine computer I had in my 90's Ford (it blinked error codes!) to the dozens of connected processors in a typical vehicle today. To design today's modern products, systems engineers have to know about a lot of types of software: embedded, device, server, network, rich client, web client, reporting, etc. Traditional embedded is just one part of the bigger picture. It's no longer an island. Today you see just as much if not more cool embedded technology at industry-focused conferences in networking, automotive, industrial automation, telecom, etc. This is great news.
So no, the embedded industry is not dead; it's just transformed. As I walked around ESC, I saw some vendors that truly understand this transformation and others that didn't. Yet, it still felt like the same old ESC, and I found myself wanting more…more real-world products on display, more vertically-focused applications, and more buzz around the embedded/enterprise connection. I think ESC as a conference needs to acknowledge and embrace this transformation. Perhaps the ESC of the future should be "Engineering Systems Conference". Perhaps what I'm longing for is an engineer-centric CES. I'll still be drawn to things that light up.