It's a valid question that is becoming even harder to answer with the emergence of mobile computing. Here at VDC Research we define it as any non general-purpose + non personal computing machine (desktop PCs, laptops, consumer tablets, and similar). No matter how you say it, you will usually need to qualify exceptions for particular computing form factors or vertical applications, as a single embedded system could be leveraged for potentially multiple applications.
@Max: Very true. Here is the long version of our def:
Embedded System - A specialized or dedicated computer used to control devices (such as automobiles, home and office appliances, handheld units of all kinds, etc.) where the operating system and application functions are often combined in the same program. An embedded system implies a fixed set of functions programmed into a non-volatile memory (ROM, flash memory, etc.) in contrast to a general-purpose computing machine. However, sometimes single board computers and rack-mounted computers are called "embedded computers" if used to control a terminal interface, machine, motor, etc. An embedded device or system may contain more than one operating system and/or processors (microprocessor, microcontroller, etc.). Specifically excluded from this definition are all types of enterprise computing machines deployed as general-purpose computers (i.e., desktop PCs, standard laptop PCs, etc.). VDC's definition of embedded system/device is intended to give a good indication of the potential operating system and run-time software royalty opportunity within the embedded systems market.
Max asked: Is a smartphone an embedded system? It's not exactly dedicated to anything, but it's also not a PC...
Actually, IMO a smart phone is a PC. Yes, it has a ridiculously tiny screen (though better resolution and more colors than an Osborne 1) and limits what devices it lets you talk to, but those are details. Take a look at the Motorola Atrix smart phone, which you could plug into an Atrix Lapdock which then converted your phone into a laptop computer, using the phone to provide cellular data networking.
A "feature phone" that does not allow you to add your own programs is an embedded system. As soon as you can start running your own programs (or those purchased from 3rd parties), it's pretty much the same functionality as a PC.
Is a tablet a PC? Aren't most tablets just smart phones in a larger, easier-to-design package, with the voice communications module deleted?
Phones are definitely general purpose computers first. They happen to have a bit of phone hardware added on, and can run a "phone" application, but they're totally general purpose computing platforms.
Based on computing power, there really isn't any reason why we can't have a wireless docking station at our desks to connect up to the phone in our pocket.
I'm not sure what level of intel/AMD CPU would be equivalent to what's in my phone, but I don't think you'd need to go back too many years to see that same level of compute power that we were perfectly happy with as a desktop.
How about this? "An embedded system is a product that uses a computer to provide its functionality by running a single program loaded into it by the manufacturer. Even though an embedded system contains a computer, you can't run your own program on it."
Unless your want to hack it, of course... whoops, this is my floor.
I forget who said this: "Designing embedded systems is a profession that's impossible to explain to your mother."
My former employer sold embedded computers that were intended to be programmed by the user, in C or Ladder Logic. The user interfaces were all external, some dedicated and some general purpose HMI. The company only developed and sold one application that ran on the platforms.
You dont need a processor MCU/MPC to have an embedded system.
A nice reliable old school analog computer meets the definition. There is also a large amount of old-school military equipment which preferres to use huge numbers of desrete logic just to avoid having any firmware/software in the machine.
Give me a bunch of op-amps, flip flops and glue logic and I can make an embedded system without any code at all.
More likely I would just use a very small CPLD and with a basic state machine, no MCU/MPU needed.
I have seen a guy who mounted an entire tower into the bottom of a cabinet running Windows, with the printer port used as GPIO to control the lighting effects for a stage. I believe that also counts as an embedded system.
My definition: Any electronics which perform as an integral part of a larger system.
I purposly disqualified mechanical computers/control systems as they do not fit in the generally accepted description of what we mean by the term embedded system.
What about the history part -- when did people start using the term "embedded" -- I know you were there at the time LOL
Since I was in South Africa at the time, trends travelled slowy (As the pilots used to say: "Ladies and Gentlemen- we are about to land at Johannesburg Airport, please set you watches back ten years...")
I was trying to think of when I first heard the expression. Could it be the first "Embedded Systems Conference"? Was it ever used in Byte magazine? I am afraid my memory is very hazy on this.
@Antedeluvian... "Since I was in South Africa at the time, trends travelled slowy (As the pilots used to say: "Ladies and Gentlemen- we are about to land at Johannesburg Airport, please set you watches back ten years..."
Do you know what they used to say when they landed at Bulawayo?? :-)
(for non-Zimbabwean readers - Bulawayo is Zimbabwe's second city after Harare. Harare has always been known as "Bamba Zonke" - local pidgin for "Gets everything". However I always liked going to Bulawayo. It wasn't as rushed as Harare. The streets were, allegedly by edict of Cecil Rhodes, wide enough to turn a wagon with a span of oxen. I remember once I was parked near a customer and kept going out to check and refill my parking meter. The third time I was too late and had a fine - all of $3. In Harare at the time it would have been $20. So I have a fairly soft spot for "Bullies"!)
I've always understood "Embedded" to mean a computer in something whose primary purpose is not being a computer. So a phone, a washing machine, an electricity meter, etc. Which pretty much tallies with the Wikipedia definition?
I don't know what an embedded system is these days. I think the term comes from embedded programming and I think the term embedded programming was meant to distinguish programming a microprocessor/microcontroller (Do you remember the difference there?) from programming a computer. An embedded programmer had to deal with the hardware, while a computer programmer dealt with the an operating system which managed the hardware for you. Of course the line has really blurred, but do you think there is a difference between these:
1. Someone who writes the operating system for a pc or smart phone.
2. Someone who writes a program for a PC or an app for a cellphone.
3. Someone writes the code that controls a garage door opener.
The embedded programmer has to read the datasheet for the microcontroller. Of course today we have embedded PCs and all the lines are blurred.
Wnderer wonders: do you think there is a difference between...
2. Application-level programming is indeed very different. You get to use a high-level programming model and you get seatbelts and airbags. If you write inefficient code hardware manufacturers wil love you because everybody then has to upgrade their hardware.
1. Writing device-level code for a complex SoC is very nasty these days. A complex SoC is not a "PC on a chip". It's a mainframe on a chip. You'll need to write (or adapt) hundreds of pages of initialization code before the processor begins to do anything that resembles useful work. To write this code you'll need to grok multi-thousand-page technical reference manuals, assuming the SoC manufacturer doesn't hide them behind NDAs. Have fun!
["This is obviously some strange use of the word fun that I wasn't previously aware of."]
3. This can be very clean and simple indeed. Unless, of course, you believe the adverts that say you have to build your dirt-simple application on top of a mainframe operating system, in which case see (1) and (2) above :-)
@Wnderer...could it be that it comes from the first microcontroller chips with the program memory (and hence the program itself) embedded in the microprocessor chip) So not the old 8080 / 6800 systems that had a seperate EPROM, but the first 8051 / 8049 type chips that had built in (ie embedded) EPROMs?
@David Ashton...could it be that it comes from the first microcontroller chips with the program memory (and hence the program itself) embedded in the microprocessor chip
I don't think so. The first projects I worked on that I would have called an embedded system all had 8051's with external RAM and ROM. I would have called it embedded programming on my resume to indicate that I wasn't writing application programs on a computer. I was dealing with ports, peripherals, busses, interupts, etc.
@David I see your point. TI has embedded analog in some of its chips. Micro- controllers are microprocessers with embedded memory and as others have said here an embedded system is a system with some sort of computer embedded in it. I guess the debate revolves around at what point does the functionality of the computer go beyond just the operating requirements of the system and make it a system with a computer instead of an emebedded computer system.
@Sranje... "I thought than anything embedded has no keyboard (or its equivalent)"
In most cases this is true, anything with a keyboard is usually a computer in its own right. But what about (for example) the old Blackberry? it is pretty well certainly embedded, as it's a phone, but it has a keyboard, and not just a numeric one.
I think the functionality is more important than what is used for I/O??
I'm trying to remember when I first heard the term. I think it was around 1990 or so. I remember thinking that it was nice to have a short name for what I'd been doing for years instead of having to explain that I designed things with microprocessors - but I didn't design computers.
I gave up on trying to explain to mom what it is that I do....
The Wikipedia page credits the Apollo Guidance Computer and Minuteman guidance computer as early embedded systems from the 1960s. However, it doesn't indicate whether they were called "embedded computers" back then. I guess in either case, if the rocket crashes -- deliberately or otherwise -- the computer is embedded pretty deeply before it vaporizes along with the rest of the system.
I wish I had a dollar for everytime someone asked the question: What is an embedded system? Embedded.com is riddled with debates like this, and that publication coined the term (supposed from some Intel engineers in the 1980s).
Embedded.com is riddled with debates like this, and that publication coined the term (supposed from some Intel engineers in the 1980s).
The earliest Intel databook in my scanned collection that uses the word "embedded processor" is a 1988 catalog. I played around on google and the earliest refernce I could find was here in 1986. Presumably the use developed prior to that.
As the test guy around here I don't care what embedded systems do. I only want to know how to test them.
One step further.
Reminds me of one time I was at the Measurement Science conference. Some sales guy in a booth wanted to some someone his latest oscilloscope. The booth visitor only cared about how to calibrate it the scope, not what it did.
Until recently (20 years ago?) I would have defined "embedded system" as any electronically controlled system having no (discernible as such) user interface.
In the age of copying machines with hard disks, washing machines and dish washers under processor control I'd level it to "no discernible or a fixed (static) user interface".
Thinking of set-top boxes, modems etc. - nowadays typically running under Linux control - the user interface is the property still differentiating the - per se general purpose - control unit in the set-top box from the similar control unit in your smart phone. Even this border is blurring when thinking about smart TVs. Though not offering "full" general purpose capabilities, web browser and other apps are stretching the above definition of "embedded system" to the point where the smart TV control unit is no longer classified as a such.
Simple were the times where you could differentiate by asking "which processor (resp. controller) ?".
As one whose computer experience goes back to the (vacuum tube) IBM 709 s/n 1 and DEC PDP-1 (also s/n 1), here's my perspective. A really simple version (that few would even understand today)is "embedded systems run firmware, not software." It's a little more high-level view similar to the memory type debate already flogged above. The original "embedded systems" folks were almost exclusively EEs by training, who worked "both sides of the fence" (HW and FW) with equal ease. IMHO, the best still are!
mhrackin AKA "s/n 1" suggested: "embedded systems run firmware, not software."
First, I'm very impressed with 709 and PDP-1.
Now regarding firmware: that's a reasonable distinction for some kinds of embedded systems, such as a mouse MCU which runs a program that will never be replaced. However, "firmware" [*] now includes the contents of a PC's boot ROM [**], and we all agree PCs usually aren't embedded systems. Plus, a complex embedded system such as a data communications box generally has both a boot ROM (firmware) and a download image (somewhere between firmware and software). Since it generally takes quite a few releases before the download image of a complex embedded system gets stable enough to call it "firmware", maybe we should call it "Jelloware".
[*] In my experience, the word "firmware" never really caught on and as such Humpty Dumpty's scornful use of words applies.
[**] Yes, I realize that a PC's boot ROM is usually Flash nowadays. Personally, I like the term "read-mostly memory" (RMM) for non-volatile storage that is writable, but it's so slow that you don't want to do it very often. The term "RMM" never caught on either :-)
I always heard an embedded system described as an object that uses a microprocessor (or microcontroller) but you don't immediately identify it as a computer or even a computing device. Hence, a router is an embedded system just as the IP phone sitting on my desk. A smartphone doesn't qualify since many would identify them as computing devices.
That's an excellent point. The embedded computer provides (most of) the functionality for the product, but the product manufacturer would be perfectly happy to use something cheaper to get that functionality. So the fact that the product contains a computer is an implementation detail, not a requirement.
I always thought of a Embedded System as "a computational system dedicated to a fixed set of functions", where "computational system" is used to separate it from machines (electronic or mechanical), but I am also findind it harder and harder to sustain, as lately am thinking more and more of state machines and programmable logic as controllers for simple functions, due to the evolution level of these. It seems everybody think that a fan or oven must have a 32-bit processor running Linux... Maybe you have to connect your oven to an App Store and run Candy Crush on it.
Seems like the discussion about the definition of hardware and software, where, up to now, the best definition I found was "software is what you blame, hardware is what you kick", but this is also blurring...