Introduction to Embedded Systems
An embedded system can be defined as a control system or a computer system designed to perform a specific or the dedicated task. Therefore, they can be termed as special-purpose devices.
Why study embedded systems?
The digital revolution, started decades ago, has reached a stage that we cannot conduct our normal modern daily lives without this technology. Indeed, it is safe to say that we already own at least one piece of equipment, which contains a processor, whether it is a phone, a television, an automatic washing machine or an MP3 player. The colossal growth of processing power in small packages has fuelled the digital revolution. All sectors of the economy have been influenced by the digital revolution and the industry has experienced tremendous developments in all aspects of engineering disciplines. Embedded system technology is a rapidly growing industry where growth opportunities are numerous.
Applications of Embedded Systems
Consumer applications: – Washing machine, Remote controlled toys, Entertainment (Audio/Video), Clocks, Wristwatches, Games, Toys
Communication applications: – Wireless (Pager, Cell phone), Telephone, Answering machines, Networking (ATM, Credit card, Ethernet), Global Positioning Systems (GPS).
Automotive applications: – Motor control (Ignition, Exhaust), Power windows, Safety (Airbag, ABS), Elevators.
Military applications: – Target recognition, Guidance, Navigation, Aircrafts
Industrial applications: – Traffic Control, Robotics, Production, Inventory, Stock management, Chemical and Nuclear power plants.
Medical applications: – Cardiac Monitors, Treatment, Prosthetics, Dialysis machines, Pacemaker and many more.
- Single functioned: Embedded systems usually execute a specific program repeatedly.
E.g.: A pager is always a pager while a PC executes a variety of programs, like word processors, games, calculator, etc and new programs can be added frequently.
- Tightly constrained: All computing systems have constraints on design metrics, but those on embedded systems can be especially tight. A design metric is a measure of an implementation’s features such as cost, size, performance, and power.
- Reactive and real time: Reactive Systems are systems that have continuous interaction with their environment. Hardware and OS are typical examples. Many Embedded Systems must continually react to changes in the system’s environment and must compute certain results in real time without delay. Therefore, they are often based on Real-Time constraints or the deadlines and are termed as concurrent systems since system and environment run concurrently.
Embedded systems once started should run for ever and the termination is a bad behavior.
- Embedded nature: Embedded systems are not always standalone devices. It is ‘embedded’ as part of a complete device. Many embedded systems consist of small, computerized parts within a larger device that serves a more general purpose.
- Independent of human intervention: Embedded systems are completely or partially independent of human intervention or user interfaced.
E.g.: In Pacemaker, health and patient data transmitted wirelessly without requiring user intervention. A cell phone is a human intervened embedded device.
- Firmware: The program instructions written for embedded systems are referred to as firmware, and are stored in read-only memory or Flash memory chips. They run with limited computer hardware resources: little memory, small or non-existent keyboard and/or screen.
Concept of Real-Time Systems A Real-Time System is defined as a system whose total correctness of a system depends not only on the logical correctness but also on the timeliness of its response. Put in simple words, a Real Time System should not only give a right output but also should give it at a right time. Real-Time Systems can be classified into:
- Hard Real-Time Systems – Systems with severe constraints on the timeliness of the response. Failure in meeting the constraints lead to catastrophic errors.
E.g.: Flight control systems of an aircraft, sensor systems in nuclear reactors and power plants, etc. In such systems, delay in response is a fatal error.
- Soft Real-Time Systems – Systems which tolerate small variations in response times. Such systems are fault tolerant systems.
E.g.: Scheduling Display System on the railway platforms In such system, small delays in the response time are acceptable.
- Hybrid Real-Time Systems – Also called as Firm real time systems, exhibit both hard and soft constraints on its performance. In other words, Firm real time systems are those systems with hard deadlines where some arbitrarily small number of missed deadlines (constraints) can be tolerated. In such cases, a few missed deadlines will not lead to total failure of the systems as in hard real time systems, but missing more than a few lead to complete and catastrophic system failure.
E.g.: Embedded navigation controller for autonomous robot weed killer. In this, missing critical navigation deadlines causes the robot to veer hopelessly out of control and damage crops.
Comparison of Embedded systems and Conventional Systems:
|Dedicated single task or a few tasks, therefore single purpose systems||Variety of tasks, hence general purpose systems|
|Small part of large r systems||A larger system|
|Timing is crucial||Timing is not crucial|
|Pre-programmed to do a specific function and executed repeatedly||It could be used to run any program of your choice.|
|Tightly constrained than general purpose computing systems||Not tightly constrained|
|Real time and reactive systems||Transformational systems*|
*Transformational systems: These systems take input from the environment, transform these inputs and terminate giving the outputs. Their interaction with the environment is limited: once at the time of taking inputs and once at the end when the outputs are generated.
Embedded System Design Design Metrics for Embedded Systems:
An embedded system designer must construct an implementation that fulfils the desired functionality and simultaneously optimize numerous design metrics. A design metric is a measurable feature of a system’s implementation such as cost, size, performance, power, etc.
Commonly used design metrics:
Performance: Describes the execution time or throughput of the system.
Power: An indicator for the amount of power consumed by the device which may determine lifetime of a battery, the cooling requirements of the IC since more power means more heat.
Size: Physical space required by the system.
Flexibility: A metric for ease of reconfiguration and reusability.
Unit Cost: It describes the monetary cost of manufacturing each copy of the system, excluding NRE cost.
NRE Cost: Non-Recurring Engineering (NRE) are the one-time monetary cost of designing the system. Once the system is designed, any number of units can be manufactured without incurring any additional design cost, hence the term nonrecurring.
Flexibility: In an economical sense, it describes the ability to change the functionality of the system without incurring heavy NRE cost.
Time to Market: It indicates the amount of time to develop a system to the point that it can be released and sold to customers. It includes design time, manufacturing time and testing time.
Embedded System Design Requirements :
Embedded system design involves both hardware and software design. Therefore an embedded engineer should have knowledge on both hardware and software engineering. The term called the Hardware/Software codesign is used by the designers of the embedded systems since embedded system designing often involves simultaneous design of both hardware and software to implement in a desired function. Successful codesign goes hand in hand with co-verification, which is the simultaneously verification of both software and hardware and in what extent it fits into the desired function. The traditional design techniques were based on independent hardware and software design which are now being replaced by Codesign techniques.
Fig: Comparison of traditional design flow and codesign flow
Fig: A simple HW/SW Codesign methodology
Codesign methodology is used in the present day embedded system design to reduce time to market, achieve better design by balancing the hardware and software and exploring alternative designs, and to meet the strict design constraints such as performance, power, size, reliability, etc.