If you ask a dozen engineers to define embedded system, you'll get a dozen different answers. Most embedded systems perform specific tasks. Let's assume that the simplest embedded system contains input and output capability, as well as control logic. This system performs some type of functionality, based on its configuration. Using these criteria, a discrete logic circuit that contains a 74123 counter that implements control logic with a state machine could be considered an embedded system. You might add that this system needs to be programmable, via software, and stored in the system firmware. This new definition for an embedded system consists of input/output (I/O) and control logic stored in system firmware. A desktop computer with a mouse, a keyboard, a network connection, and a multitasking operating system running a graphical user interface (GUI) fulfills these requirements, but is it considered an embedded system?
If you don't consider a desktop machine an embedded system, then what about handheld devices? They have I/O capability and can run control logic that's stored in firmware. Some say that desktop computers and handhelds are general-purpose computing devices that are capable of running software to perform many different tasks. An embedded system, on the other hand, is primarily designed for a specific task for example, a dishwasher controller or flight navigation system. This specific functionality defines the sole purpose of the embedded design. If that's the case, why are some embedded systems designed with additional capability, such as program storage in nonvolatile memory and the capability of running multitasking operating systems that are capable of executing additional tasks beyond the original design?
In the past, it was much easier to distinguish an embedded system from a general-purpose computer than it is today. For example, you can easily tell that an 8051-based T1 framing card is an embedded system from a Sun Unix workstation. Today, in terms of functionality, a Sun workstation is hard to distinguish from a set-top box that contains a PowerPC with 32MB of memory and 16MB of Flash memory, that runs a multitasking operating system to control a set-top box with a GUI, that is field upgradable, that simultaneously runs multiple programs (such as a video controller, a digital VCR, and the Java Virtual Machine), and that makes secure Internet transactions. It's hard to say whether this set-top box is an embedded system. Clearly, the increase in hardware performance and the lower cost of that hardware has blurred the line between general-purpose computers and embedded systems. Technology advances have therefore made it hard to say what is embedded.