What is Embedded System
What is Embedded System anyway? A quick answer is from wikipedia:
"An embedded system is a computer system with a dedicated function within a larger mechanical or electrical system, often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts. By contrast, a general-purpose computer, such as a personal computer (PC), is designed to be flexible and to meet a wide range of end-user needs.
I think this definition doesn't enough to describe what embedded system is. Embedded system doesn't always within a larger mechanical or electrical system. For example a digital watch is an embedded system but not part of any mechanical or electrical system. A handphone (or cellphone) is also an embedded system but has multiple functions which can be added or removed (in terms of software) and also not part of either mechanical nor electrical system.
Other definition of embedded system comes from Bjärnemyr & Dahlberg:
"An embedded system is any device used to control, monitor or assist the operation of some equipment or machinery and is an integrated part of that. It combines hardware and software and includes one or more microprocessors for a specific application."
This definition describes an example of embedded system application. Embedded system could be used in control system and becomes part of that. But as described above, it doesn't always be part of another larger system.
This definition also describes embedded system as a combination of hardware and software. The terms embedded hardware and embedded software are used to refer hardware and software respectively. In the past, all computing systems were made by hardware. But with the advance of science and technology, some parts of hardware then were replaced by software as seen today.
Other definition comes from Wolf. He agrees that embedded system is a combination of hardware and software where software is the programmable part. He describes embedded system as:
"... programmable processors in application-specific systems”.
Other interesting definition comes from Geoffrey Bessin, a staff at IBM Rational:
"An embedded system is any software system that must be designed on a platform different from the platform on which the system is intended to be deployed."
This definition comes from technical perspective of software development. But as described in the last two definitions, embedded system is not only a software but a combination of hardware and software system. The interesting part of this definition is the introduction of two platforms in embedded software development. They are platforms for design and platforms for deploy embedded software.
The platform for deploy embedded software is what called as embedded hardware. There are many variations of embedded hardware which depend on the purpose of embedded system. The embedded software design usually follows the hardware platform. That is why there is a close relation between embedded hardware and software.
The commonly used platform today to design embedded software is PC. The embedded designers use some applications in PC to design, develop and test either embedded hardware or software before deploy the results into embedded hardware.
For me, the definition of embedded system is:
"A combination of hardware and software computing system which works in constraint condition."
The keyword to describe embedded system should be constraint. Embedded system always has one or more constraint, such as time, power, space, price, function or others. A digital watch for example has time, power, space and price constraints. A handphone has power, space and (probably) price constraints. A controller in factory has space and precision constraints. Because of the constraint, embedded system is used in specific application and hence is specifically designed.