tags:

views:

339

answers:

7

When I hear that, I always think about an mobile device. But why is the hardware "embedded" there? Isn't the whole device the hardware? Why is a personal computer no embedded hardware system?

+5  A: 

In today's world embedded simply refers to a system with one or more of the following traits:

  • Single purpose (ie, not a general purpose computer, like your desktop)
  • Firmware rather than software - still software, but not as easily updated (flash, etc)
  • Hardware and software are designed together as a unit
  • Different, perhaps more rigorous testing as software updates are not desired
  • Real time computing
  • Memory integrated on the CPU
  • Microcontroller rather than microprocessor
  • Expected high reliability (you shouldn't have to reboot your dishwasher or microwave)
Adam Davis
Another important difference is that embedded apps may run for years without intervention, they either have to be able to update, restart, and handle errors themselves, or to never need updating or restarting, and never throwing errors.
Dour High Arch
+3  A: 

I worked in the "embedded" area for a while and we considered anything that we had to write custom code for the hardware to be embedded.

If you have to work around the memory structure, write custom device drivers and anything that sits "directly on the metal" is generally "embedded".

If you're debugging it via a serial port - it's embedded.

Dead account
+2  A: 

If it runs a program, but doesn't look like a computer, it's an embedded system.

That's my standard answer for friends and family. There's too many different types of embedded systems to get more specific.

Robert
+1  A: 

As per Wikipedia:

An embedded system is a special-purpose computer system designed to perform one or a few dedicated functions, often with real-time computing constraints. It is usually embedded as part of a complete device including hardware and mechanical parts. In contrast, a general-purpose computer, such as a personal computer, can do many different tasks depending on programming.

  • Embedded systems are designed to do some specific task, rather than be a general-purpose computer for multiple tasks. Some also have real-time performance constraints that must be met, for reasons such as safety and usability; others may have low or no performance requirements, allowing the system hardware to be simplified to reduce costs.

  • Embedded systems are not always standalone devices. Many embedded systems consist of small, computerized parts within a larger device that serves a more general purpose. For example, the Gibson Robot Guitar features an embedded system for tuning the strings, but the overall purpose of the Robot Guitar is, of course, to play music.[2] Similarly, an embedded system in an automobile provides a specific function as a subsystem of the car itself.

  • The program instructions written for embedded systems are referred to as firmware, and are stored in read-only memory or Flash memory chips. They run with limited computer hardware resources: little memory, small or non-existent keyboard and/or screen.

From personal experience, if it's "headless" (i.e. doesn't have an output device like a VDU and relies on something like LED's), if there is a serial port used mainly for debugging and logging and if you often use a logic analyser for debugging, it's embedded.

nzpcmad
+2  A: 

It is called "embedded" because the computer is embedded as part of a larger device.

There is a very wide range of embedded systems.

At the low end are 8-pin PICs, for example there is a 12F629 in these diode lights. These costs cents and have very little memory.

The NXT by LEGO contains two controllers, a relatively big AT91SAM7S256 with a 32-bit ARM core, 256KB of flash ROM and 64KB of RAM, and a smaller 8-bit ATmega48 with 4KB of flash.

Currently I'm working on embedded systems for trains, these typically have a PowerPC with some hundreds of MHz clock, on the order of a hundred MB of RAM, run VxWorks or Linux and are connected by Ethernet.

I think there are still more powerful embedded systems for telecommunications, but I haven't worked on these.

starblue
+1  A: 

"Embedded" has become a very diverse term.

I've seen and worked on designs that:

  • Simply toggled discrete I/O (including LEDs) at fixed intervals
  • Drivers for hardware solutions (e.g. webcams, wireless com)
  • Acted as communications translators for board-level I/O (SPI<->I2C<->Rs232<->USB)
  • [ insert multitude of appliances here ]
  • Human-controlled electronics (calculator-esque, phone-esque)
  • System level devices to coordinate actions of other devices.

I also like Dour-High-Arch's comment above:

"Another important difference is that embedded apps may run for years without intervention..."

Nate
A: 

"Embedded system" is a very broad term and I don't think that it is easy to have a single definition. The word "embedded" actually refers to an industry and not to a "hardware system". The description of embedded systems has changed over the years and it is definitely going to change in the future too.

In early days one would say the embedded systems were only programmed in assembly, but now C is common place and perhaps in the future other languages are used as well. CPUs are getting bigger and bigger, external memories are used all the time and they are many devices considered to be embedded that are not dedicated to a single task, applications can be added to them and the software is easily updated. Watches, gadgets, house appliances, automotive devices, PLCs, motor controllers, weather stations, system monitoring devices are all considered embedded. It is difficult to singe define them all.

kgiannakakis