we provide information on the design, development and debugging of Embedded Systems under this section. This information could be useful to the beginners as well as to the advanced Embedded System Developers. These tutorials are under continuous update. So, if you have any suggestions, which might help me to improve the usefulnees of these tutorials, please feel free to provide me your feedback.
What constitutes an embedded system?
Is it a piece of Hardware? Or is it a software? Or is it a combination of both? The word Embedded System refers to “ A Computer (similar to Desktop or Laptop) which has been designed to do specialized tasks (unlike Desktop or Laptop) ”. A desktop is designed to serve as a general purporse computer - it can perform a variety of functions (can act as a music system, as a business machine, as a software development platform etc). Whereas, an embedded system is designed for only a specific functionality (e.g. a Vending machine, or Media Player or a Printer). The resources (memory and processor bandwidth) are tightly constrained in an embedded system. Also the software which runs in embeddeded system generally has a close control over the system hardware.
A very simple example of Embedded Systems is “Washing Machine Controller”. In a washing-machine controller (any controller for that matter), a Micro-controller forms the heart of the system (this is the basic underline Hardware), and thin software layers on the top of this hardware add different functionalities to the controller. Different Software functions will be called (executed) based on user input from the keypad (again a hardware), which sits on top of the software layers. The hardware and software layers in this system are closely intermingled, with software lying some where in between (being embed) hardware layers.
Some popular definitions of embedded System
An embedded system is any electronic system that uses a CPU chip, but that is not a general-purpose workstation, desktop or laptop computer.
An embedded system is a special-purpose computer system designed to perform a dedicated function. Unlike a general-purpose computer, such as a personal computer, an embedded system performs one or a few pre-defined tasks, usually with very specific requirements, and often includes task-specific hardware and mechanical parts not usually found in a general-purpose computer.
In modern world, embedded systems have become an indispensable part of our life. Use of embedded systems has become so common in our day to day life that every one of us uses them (no matter if we are aware or not).
Automobiles: Fuel Injection control (for fuel efficiency), Air bags and Automatic braking (for safety), and car entertainment systems are example of embedded systems.
Medical Electronics: Many shophisticated medical instruments (Body Scanners, Heart rate monitors, Pacemaker etc) are example of embedded systems.
Industrial Control: such as CNC machines are example embedded systems.
Business Applications: Vending machines, scanners, printers.
Consumer Electronics: Cameras, Toys, Cellular Phones, Washing Machines
Avionics Airplanes, Satellite Stations
Defense: RADARs, SONARs (for suvellience), Guided Missile Systems are example of embedded system technology.
Embedded Multi-media Systems
Embedded multi-media systems form a subclass of embedded systems. (High and Mid end) Cellular Phones, Portable Media Players, MP3 (or Audio) players, Gaming Consoles, Mid and High End Cellular phones are examples of Embedded Multi-media. These systems require a lot of mutli-media processing, which is computation extensive. Though the overall architecture of these systems are similar to other embedded systems, but they require special processors called “Digital Signal Processors (DSP)” for the computation extensive processing (Digital signal Processing).
Components of an Embedded System
(a) Processor : Processor (or CPU) is responsible for performing all the compuational and logical operations in an Embedded Systems. Some processors (called micro-processors) also have (limited) Memory and few peripherals integrated on the same chip.
(b) Memory : Memory is a device which can be used to store data (or instructions) in a system. An Embedded System can have on-chip (fabricated inside the microprocessor), or off-chip Memory (or Both). There are different kind of memory devices. We will discuss them in detail,in one of the next sections.
(c) User Interface : User Interface is a mechanism through which user can provide certain choices to the Embedded System. These choices are used by the CPU to perform a given task in certain manner. Keypad is one of the most common UI.
(d) Displays : Displays are used to provide certain information to the User. Alphaneumaric Displays and LCD Displays are widely used in embedded device. These displays generally provide the “ User Menu ” and “ System Status& #8221; to the User.
(e) Input/Output : I/O peripherlas provide a physical media (channel) for Data Transfer with the external (external to the system) world.
(f) Other Electical Components : There are plenty of other active and passive componets in an Embedded System. Examples include Power Supply, Data Converters, Electic Filters etc.
(g) Control Software : Control Software (also known as firmware) is responsible for managing (and synchronizing) different modules of the system.
(h) Computation Extensive Software : Computational Software is responsible for performing Mathematical and Logical Operations on the Input Data. The output of this processing can either be sent back (to another system), or stored (in systems memory) for later use, or can be used by the control software to take certain decisions (and do further processing based on these decisions).
(i) Device Drivers : Device Drivers are Software Modules which control System's Peripheral.
(j) User Interface : This software is responsible for collecting user inputs (from input devices like keypad or touchscreen) and providing “ User Menu ” or “System Status ” to the User (through Display Devices)
(k) Operating System (optional) : Operating System is a software which manages the different resources (CPU, Memory, Peripherals) of a system and provides a abstration of the underlying hardware to the Users. Application developers can develop their applications (to be run on the Operating System) without having to learn much about the underlying Hardware. Operating System is optional in Embedded Systems (unlike Desktop environment where it is the most essential software).
A micro-processor consists of a CPU, Memory and some peripherals on a Single Chip (Integrated Circuit).Central Processing Unit (CPU) forms the heart of a micro-processor. CPU consists of a “control Unit” and a “ALU”. Arithmetic and Logical Unit (ALU), can perform different arithmetic (addition, subtraction, multiplication, division etc) and logical (OR, AND, XOR, NOT, SHIFT) operations on the input data operands (which are passed by control unit), and produces output (which can be used by Control unit). The control unit is responsible for fetching, decoding and executing the instructions (instructions consitute the Program). The “Decode & Execute” stage involves - fetching the operands (operands could be fetched from memory or it could be a part of the instruction itself) and passing them to ALU, providing control signals to the ALUs (to control the operation to be performed on the operands), collecting the result back and routing them to destination (memory or some peripheral). These units (control and ALU) are made up of synchronous digital circuits which are clocked by a central clock.
Power of a Micro-Processor
The power of a processor can be measured in terms of the number of Instructions it can execute (or the number of Arithmetic and Logical operations it can perform) per unit time. The “ALU” and “Control Units” inside the Processor's CPU are made up of synchronous digital circuits which are clocked by a central reference clock. Increasing the frequency of the central clock results in faster switching of the digital cicuits, and hence the ALU and Control Units (inside the CPU) can perform more operations in a unit time. The (VLSI) fabrication technology which has been used to fabricate the device imposes a theoretical limit on the maximum clock frequency. A good circuit design, can tend to achieve this maximum clock limit (a poor quality circuit design will show problems at higher clock speeds). In order to further (beyond what can be achieved with maximum clock rate) increase the processing power, one can add multiple compuational units (ALUs) to the processor. However these multiple units need to be supported by good algorithm partitioning of the task being performed by the processor(so that all the units can be used in parallel at same time to achieve a given task). In the next sections we will discuss about the parallelism in a computational task (or computer application) and how the ALUs can be designed to exploit this parallelism.