# Microprocessor Design/Embedded System
## Embedded System

An embedded system is a system that has software embedded into computer-hardware, which makes a system dedicated for an application(s) or specific part of an application or product or part of a larger system. It is a microprocessor-based control system which processes a fixed set of programmed instructions to control electro-mechanical equipment which may be part of an even larger system. They are the electronic systems that contain a microprocessor or a micro-controller, but we do not think of them as computers – the computer is hidden or embedded in the system.
Physically, embedded systems range from portable devices such as digital watches and MP3 players, to large stationary installations like traffic lights, factory controllers, and largely complex systems like hybrid vehicles, MRI, and avionics. Complexity varies from low, with a single microcontroller chip, to very high with multiple units, peripherals and networks mounted inside a large chassis or enclosure.
Three main embedded components are:
* Embeds hardware to give computer like functionality.
* Embeds main application software generally into flash or ROM and the application software performs concurrently the number of tasks.
* Embeds a real time operating system(RTOS), which supervises the application software tasks running on the hardware and organizes the accesses to system resources according to priorities and timing constraints of tasks in the system.

## Characteristics

The main characters of an Embedded System are:
* Dedicated functions
* Dedicated complex algorithms
* Dedicated GUI's and other user interfaces for the application
* Real time operations
* Multi-rate operations

## Real-Time Embedded System

Real-time embedded systems are defined as those systems in which the correctness of the system depends not only on the logical result of computation, but also on the time at which the results are produced.
Real-time embedded systems are used in many applications such as airborne computers, medical instruments and communication systems. Embedded systems are characterized by limited processor memory, limited processing power, and unusual interfaces to the outside world. Real-time requirements impose stringent time deadlines for delivering the results of embedded processing.
RTOS kernels hide from application software the low-level details of system hardware, and at the same time provide several categories of services to application software. These include: task management with priority-based preemptive scheduling, reliable intertask communication and synchronization, non-fragmenting dynamic memory allocation, and basic timer services.
The issue of timing determinism is important in differentiating general-computing operating systems from real-time operating systems. This issue crops up in many parts of operating system kernels, such as task schedulers, dynamic memory allocation and intertask message communication. While general-computing operating systems often offer non-deterministic services in these areas, fully deterministic solutions are needed for real-time and embedded systems. A number of real-time operating systems implement these solutions in their compact high-performance kernels.