tags:

views:

204

answers:

9

ASIDE: Yes, this is can be considered a subjective question, but I hope to draw conclusions from the statistics of the responses.

There is a broad spectrum of computing devices. They range in physical sizes, computational power and electrical power. I would like to know what embedded developers think is the determining factor(s) that makes a system "embedded." I have my own determination that I will withhold for a week so as to not influence the responses.

+1  A: 

Main factors:

  • Installed in a fixed place somewhere (you can't carry the device itself around, only the thing it's built into)

  • The run a long time (often years) with little maintenance

  • They don't get patched often

  • They are small, use little power

  • Small or no display

Aaron Digulla
How about a digital watch? I'd definitely include that as embedded, but it's not exactly installed in a fixed location.
wds
As I said: You carry the thing around which contains the embedded device.
Aaron Digulla
@Aaron: do you carry your car around?
MusiGenesis
+12  A: 

I would say "embedded" is any device on which the end user doesn't normally install custom software of their choice. So PCs, laptops and smartphones are out, while XM radios, robot controllers, alarm clocks, pacemakers, hearing aids, the doohickey in your engine that regulates fuel injection etc. are in.

MusiGenesis
very good and simple definition.
kenny
This answer gets The Green Check because it's a simple definition that covers many cases yet allows a bit of flexibility, it surprised me a bit and it has the community vote.
dwhall
Thanks, `dwhall`. I was actually expecting a flurry of down-votes for this answer when I wrote it, so it's funny how things work out sometimes. I think this definition works because embedded devices are very difficult to access and update, so embedded programmers have a much greater incentive to make sure their code works correctly the first time.
MusiGenesis
A: 

+1 for a great question.

Like many things there is a spectrum.

At the "totally embedded" end you have devices designed for a single purpose. Alarm clocks, radios, cameras. You can't load new software and make it do something else. THere is no support for changing the hardware,

At the "totally non-embedded" end you have your classic PCs where everything, both HW and SW, can be replaced.

There's still a lot in between those extremes. Laptops and netbooks, for example, have minimally expandable HW, typically only memory and hard disk can be upgraded. But, the SW can be whatever you want.

Devon_C_Miller
A: 

Quoting a paragraph I've written before:

An embedded system for our purposes is a computer system that has a specific and deterministic functionality\cite{LamieReal}. Typically, processors for embedded systems contain elements such as onboard RAM, special-purpose processing elements such as a digital signal processor, analog-to-digital and digital-to-analog converters. Since the processors have more flexibility than a straightforward CPU, a common term is microcontroller.

Paul Nathan
+6  A: 

You might just start with wikipedia for a definition

http://en.wikipedia.org/wiki/Embedded_system

"An embedded system is a computer system designed to perform one or a few dedicated functions, often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts. "

Chris Lively
+3  A: 

Coming up with a concrete set of rules for what an embedded system is is to a large degree pointless. It's a term that means different things to different people -maybe even different things to the same people at different times.

There are some things that are pretty much never considered an embedded system, for example a Windows Desktop machine. However, there are companies that put their software on a Windows box - even a bog standard PC (maybe a laptop) - set things up so their application loads automatically and hides the desktop. They sell that as a single purposed machine that many people would call an embedded system (but many people wouldn't). Microsoft even sells a set of tools called Embedded Windows that helps enable these kinds of applications, though it's targeted more to OEMs who will customize the system at least somewhat instead of just putting it on a standard PC. Embedded Windows is used for things like ATM machines and many other devices. I think that most people would consider an ATM an embedded system.

But go into a 7-11 with an ATM that has a keyboard (I honestly don't know what the keyboard is for), press the right shift key 5 times and you'll get a nice Windows "StickyKeys" messagebox (I wonder if there's an exploit there - I sure hope not). So there's a Windows system there, just hidden and with some functionality removed - maybe not as much as the manufacturer would like. If you could convince it to open up notepad.exe somehow does the ATM suddenly stop being an embedded system?

Many, many people consider something like the iPhone or the iTouch an embedded system, but they have nearly as much functionality as a desktop system in many ways.

I think most people's definition of an embedded system might be similar to Justice Potter Stewart's definition of hard-core pornography:

I shall not today attempt further to define the kinds of material I understand to be embraced within that shorthand description; and perhaps I could never succeed in intelligibly doing so. But I know it when I see it...

Michael Burr
I think the keyboard on the 7-11 ATM is for itinerant programmers to use when they have to go there in the middle of the night and fix the damn thing. Not really confidence-inspiring.
MusiGenesis
+1  A: 

Software implemented in a device not intended as a general purpose computing device is an "embedded system".

Typically the system is intended for a single purpose, and the software is static.

Often the system interacts with non-human environmental inputs (sensors) and mechanical actuators, or communication with other non-human systems.

That's off the top of my head. Other views can be read at this embedded.com article

Clifford
+2  A: 

I consider an embedded system one where the software is rarely developed directly on the target system. This definition includes sophisticated embedded systems like the iPhone, and excludes primitive desktop systems like the Commodore 64. Not having the development tools on the target means you have to add 'reprogram device' to the edit-compile-run cycle. Debugging is also made more complicated. This encompasses most of the embedded "feel."

Theran
A: 

My education was as a computer engineer, so my definition of embedded is hardware oriented. I draw the line at the MMU (memory management unit). If a chip has an MMU, it usually has off-chip RAM and runs an OS. If a chip does NOT have an MMU, it usually has on-board RAM and runs an RTOS, microkernel or custom executive.

This means I usually dismiss anything running linux, which is shortsighted. I admit my answer is biased towards where I tend to work: microcontroller firmware. So I am glad I asked this question and got a full spectrum of responses.

dwhall