One of the perennial questions I keep getting asked is, “What is an embedded system?” Strange as it may seem, the problem isn’t that we lack a definition, but rather that we have too many – many of which subtly or overtly contradict each other. For example, some people would state that an embedded system is one that doesn’t have a user interface, while others would declare that a smartphone — which boasts an extremely sophisticated user interface — is the epitome of an embedded system.
As far back as 2012, here on EEJournal, Bryon Moyer asked the question, “Are Mobile Devices Embedded Systems?” The answer, according to Margaret Rouse, is, “yes.” As Margaret says in this definition, “Embedded systems are computing systems, but they can range from having no user interface (UI) — for example, on devices in which the system is designed to perform a single task — to complex graphical user interfaces (GUIs), such as in mobile devices.” Personally, I disagree that mobile devices are embedded systems per se, but we will get to that in a moment.
There’s also the fact that people’s views of what comprises an embedded system have evolved over time, as have the various technologies that may, or may not, fall into the embedded system category. As Justice Potter Stewart famously said in Jacobellis v. Ohio (1964), “I can’t define pornography, but I know it when I see it.” This is not dissimilar to the way in which engineers define embedded systems — the problem is that they all “know” different things when they see them. If I were to be on stage at the Embedded Systems Conference (ESC) and hold up a gizmo and ask, “Is this an embedded system?” It wouldn’t surprise me if one half of the audience answered, “Yes,” while the other half said, “No.” If I then waved a doodad around and asked the same question, exactly the same thing would happen, except that it would be a completely different mix of people on either side of the fence.
One thing I find strange is that no one seems to know when the “embedded system” moniker first appeared on the scene. Unlike terms such as the “Internet of Things (IoT),” whose origins are unambiguous (it was coined by Kevin Ashton in a presentation to Proctor & Gamble in 1999), the “embedded system” designation seems to have slipped onto the scene unnoticed.
The Wikipedia entry for embedded systems states, “One of the very first recognizably modern embedded systems was the Apollo Guidance Computer, developed ca. 1965 by Charles Stark Draper at the MIT Instrumentation Laboratory,” but this is a retrospective view. Not that there’s anything wrong with that, of course. For example, although — as noted above — the term IoT wasn’t defined until 1999, the first IoT “thing” came much earlier. Circa 1982, a group of students at Carnegie Mellon University embedded sensors in a coke machine and used ARPANET (the network that eventually evolved into the internet) to remotely check the availability and temperature of its contents.
My friend, retired engineer Crusty (a.k.a. Michael Mannering), is the proud owner of Crusty Mansions and the cowering spouse of the fearsome Mrs. Crusty. After a career working on the London Underground railway system, Crusty tells me that, “the term ‘embedded’ seemed to creep up on me without my being aware that it had entered my lexicon of usage.” Similarly, Jack Ganssle, who is a legend in the embedded systems space (where no one can hear you scream), tells me that he has no firm recollection as to when the term “embedded systems” came into usage. Jack says, “We never used the term in the 1970s — it was all ‘microprocessor systems’ back then.”
I’ve heard many definitions of embedded systems in my time. One version says that an embedded system is a computer without a keyboard or a screen, but — by this definition — a blade server would be an embedded system. One of my favorite definitions several decades ago was, “An embedded system is one you don’t even know is there… until it stops working.” The issue here is that we now swim through life in a sea of embedded systems (I never met a metaphor I didn’t like), many of whose existence we are definitely aware.
Some people would say that an embedded system has to be electronic, will contain at least one processor in the form of a microprocessor (MPU) or microcontroller (MCU), and must employ predominantly digital techniques, to which I would reply, “Bah humbug!”
The more I noodle on this, the more I realize that the Bard knew what he was talking about when he had Hamlet exclaim, “There are more things in heaven and earth, Horatio, than are dreamt of in your philosophy.” Let me share some of my musings, after which it would be great if you could comment, saying whether you agree or disagree.
Embedded: In this context, I take the term “embedded” to mean enveloped or enclosed. Further, my high-level view of an embedded system is that it forms part of a larger system.
Fixed vs. Programmable: I have no axe to grind here. I’m happy to acknowledge that some embedded systems may have fixed (hard-coded) functions, which others may be amenable to being reconfigured or reprogrammed.
Monitoring vs. Control: I’m happy to accept that some embedded systems perform only monitoring functions, while others also provide control functionality.
Analog vs. Digital: I can easily envisage a small embedded system, based on an op-amp and a handful of discrete components, whose task it is to monitor a signal and perform some form of feedback-based control.
Processor vs. Non-Processor: As per my previous point, if we accept that a simple embedded system could be created using only analog components, then the “processor vs. non-processor” question becomes moot. However, if you are adamant that a processor must be involved, then my next question would be, “How do you define a processor?” Are we talking about MPUs or MCUs that are based on a traditional von Neumann (or Princeton) architecture, or might we also accept processors based on cellular automata? How about dedicated artificial intelligence (AI) chips employing artificial neural networks (ANNs)?
Connected vs. Non-Connected: Once again, I have no axe to grind here. I can happily accept an embedded system that is monitoring and controlling something and that also communicates with the outside world via wired or wireless connections. I can also accept some little isolated data-logging unit buried deep in the bowels of a monster system, quietly recording sensor readings in the hope that someone will one day come to see what it’s been doing.
Electronic vs. Non-Electronic
We are so used to using electronic systems these days that we tend to forget that there are other alternatives. Would you accept an embedded system formed from electromechanical relays, for example? What about the fact that some of the logic functions in radiation-intensive environments like the heart of a nuclear reactor might be implemented using pneumatic techniques?
Consider an MCU-based subsystem ensconced in a washing machine, where this subsystem is used to control the water coming in and going out and the timing of the cycles. I think we could all accept this controller as being an embedded system. Now suppose we replace the original controller with a clockwork equivalent — is this any less of an embedded system?
I accept that most people today would claim that an embedded system is electronic- and processor-based and largely digital, but possibly boasting some analog capabilities in the form of sensors, actuators, inputs, and outputs — but I also reserve the right to disagree.
I quite like the Wikipedia definition that, “An embedded system is a controller with a dedicated function within a larger mechanical or electrical system, often with real-time computing constraints,” but I would extend this to say that, “The controller itself may be implemented using a variety — possibly a mixture — of different engineering disciplines and technologies, including analog, digital, electronic, mechanical, electro-mechanical, pneumatic, etc.”
Is a microwave oven an embedded system? I would say not. I would say that a microwave oven is an appliance that employs a microprocessor-based embedded system as its controller. Is a smartphone an embedded system? I would say not. I would say that a smartphone is a multi-function device that contains a suite of embedded systems, each targeted at performing a different task.
Great Balls of Centrifuge
As a closing thought: a centrifugal governor is a specific type of governor with a feedback system that controls the speed of an engine by regulating the flow of fuel or working fluid so as to maintain a near-constant speed. In the case of a centrifugal “fly-ball” governor, the balls swing out or in as their rotational speed increases or decreases, thereby controlling a valve, until the desired balance is achieved.
The first such governors were invented by Dutch physicist, mathematician, astronomer, and inventor, Christiaan Huygens, who used them to regulate the distance and pressure between millstones in windmills in the 17th century. In 1788, James Watt adapted this idea to control his steam engines, where it regulated the admission of steam into the cylinder(s).
Watt-type centrifugal governor (1788) on a Boulton and Watt steam engine at the Science Museum, London (Image source: Dr. Mirko Junge).
A centrifugal “fly-ball” governor actually performs a very sophisticated form of proportional-integral-derivative (PID) control. In fact, James Clerk Maxwell wrote a famous paper, “On governors,” in 1868 that is widely considered a classic in feedback control theory. The bottom line is that, since such a governor performs a sophisticated control function and resides in a much larger system, I personally would have no problem classifying it as an embedded system. What say you?