is not possible to run arbitrary programs on the system
tight integration of hardware and software to meet the functionality, microcontroller usually supports most of peripherals needed
software footprint memory needed is kept to the bare minimum needed to fit into available on chip memory or limited off chip ram flash to keep costs as low as possible
need to support constraints in terms of response time, throughput to ensure adequate user experience
battery powered systems need to be optimized for long life by employing multiple power saving strategies
Other design parameters
Cost - selection of HW components and software license costs are driven by the cost at which the system has to be built to be competitive in the market
Reliability - How long the system should work, what is the range of operating temperatures (this will decide the grade of HW components needed), amount of SW testing needed to ensure the right levels of reliability
Upgradability - Modern embedded systems often have a way to upgrade their software (often called firmware) over a network connection - needs the right HW and SW support for the same if the use case demands it.
Serviceability - What is the level of service and repair possible - component level replacement, board level, drives HW design, some high end systems may need redundant HW and SW design
Embedded vs General Purpose computation
A general purpose computer is designed to execure multiple types of programs at different times or concurrently as per the user needs
In general, there are no tight timing constraints for programs or functions that are being run in a general purpose computer
As long as the time taken to complete is within the operator’s expectations, it is considered to be fine
For example a piece of numerical calculation can be completed within 5 seconds or 10 seconds without too much discomfort for the user.
In contrast, most embedded systems have tighter expectations on when a particular task has to be complerer as many actions are linked to external inputs /outputs
For example in a rocket control system, any actuation of the flight control surfaces have to be done in extreme time precision, a delay could meman that the rocket’s flight path changes by a huge amount leading to mission failure.
In embedded systems the programs or tasks that are allowed to run are generall planned and frozen when the system is designed.
The designers consider all the tasks to be done, the timing constraints for each of them, the available CPU bandwidth, memory and other system resources like timers, and then come up with the software designt that ensures all the expectations are met.
Generally adding additional tasks to an existing system will need a careful analysis to ensure that none of the constraints will be violared sure to lack of CPU capacity, memory or other system resources.
In general purpose computer systems, we can run additional programs, and the only impact would be slower turnaround for the various programs and as long as the users are fine with it, there is no issue.
users will notice issues only when the system gets completely overloaded and runs out of memory leading to crashing of programs.
Applications of embedded systems
Manufacturing equipment
domestic appliances
AV equipment
gaming consoles
telecommunication equipment
medical equipment
cars and vehicles
motion sensors
Hard real time vs Soft real time systems
Hard real time systems are those where the timing requirements are very stringent and failure to meet them can often end in disastrous consequences.
Nuclear reactor control system
Rocket flight control system
Avionics software
Antilock braking software or similar automotive control systems
X Ray machines
Soft real time systems are those where there are time constraints but the violations don’t lead to disastrous consequences. The effects may be more in terms of reduced quality of the user experience.