Embedded software, also known as firmware, resides in appliances and devices such as mobile phones, home entertainment systems, engine management systems, home automation and security devices, avionics, robotics, and household appliances. The software tends to perform one or a small numbers of jobs efficiently and has been specifically engineered for performance, reliability, usability and the application in mind.
Embedded devices and systems either make use of an embedded operating system such as Symbian, Linux, Win CE, ECOS, VxWorks or run without an OS, this would be the case for small battery powered devices with limited functionality. Devices can vary in nature and performance, typical devices are microprocessors, digital signal processors (DSP) and field programmable gate arrays (FPGAs). Microprocessors are good for applications and user interfaces, DSPs are used in repetitive algorithimic applications such as fast fourier transforms and signal processing. FPGAs are used in very fast logic processing where parallel processing is essential. Most embedded devices require that the software is real-time. Real-time means that not only must the software operate correctly but that it must operate correctly by a required time.The definition real-time can be split into Hard real-time and Soft real-time. Hard real-time is used in situations where failure will occur if a deadline or time is not met by the software, i.e. where delays are not acceptable. Examples of this would be engine management control in automotives, process control, and medical pace makers. Soft real-time systems can suffer some latency resulting in impaired performance, i.e. video or audio streaming. |