An embedded system can be broadly be defined as a computing platform that employs both hardware and software components to execute a specific function. Embedded systems usually function as a part of a larger system and are ‘Embedded’ within electronic products to minimize human dependence as much as possible.
An embedded computer is a self-contained electronic which contains both the software and hardware necessary for executing simple programs. Embedded computers allow their host device, such as a programmable calculator, to possess computational capabilities without needing an internet connection.
They are usually used as the ‘brains’ of the electronic device which includes prompting for user input, performing feedback loops, or cycling through different states of a programmable device.
Embedded Systems are found almost anywhere in all sorts of electronic gadgets, from those that require minimal processing power such as timer circuits to more complicated systems that require lots of computing power such as industrial systems or avionics.
General Purpose Computer vs An Embedded System
A general-purpose computer and an Embedded System might have similarities on different levels such as both need software and hardware components to perform; however, they are not the same thing. The difference between Embedded Systems and general-purpose computers becomes obvious when one considers the variability of system resources since both could possess high perfuming and quality components.
General-purpose computers are designed both in software and hardware to contend with unpredictable operating environments and usually feature complex booting systems that take a longer time to boot compared to embedded systems. They are easily customizable in terms of their components and can be programmed by the end-user.
An embedded system on the other hand is designed to deal with a specific task and usually features a simpler design in hardware and software with faster and shorter boot time.
General-purpose computers can easily perfume multiple tasks or run multiple programs at the same time, multitasking. They usually feature multi-core processors, an array of Input/Output devices such as Disk Drive, Monitor, Communication Ports, and Keyboard.
Embedded systems although still feature different Input/Output devices, they are usually simpler and low-level interfacing, for example, sensors, keypads, LCDs, etc. Embedded systems are not easily customizable as they come with static hardware components best for a particular task already predefined by the designer.
Historical Overview
The Apollo Guidance Computer (AGC) developed at MIT Instrumentation Laboratory in the early 1960s as part of the Apollo spaceship programs, was one of the earliest electronic computing devices credited with the term ’embedded system’.
Almost all the earliest forms of computing devices seem to adhere better to the term embedded system as opposed to the term general-purpose computer. A good example of early forms of embedded systems was during World War II, the British made Colossus Mark I and II computers used to break German encrypted teleprinter messages.
Besides being a behemoth of electro-mechanical machines, they were able to perform a specific computing function once fed with the appropriate inputs and form there would require minimal human intervention. Despite their conceptual match, these early marvels of computing can barely be considered as integrative parts of larger systems, being, therefore, a long shot to the forms known today as embedded systems.
Birth and Evolution of Modern Embedded Systems
The birth of modern embedded systems is tightly coupled to the evolution of the microprocessor. The first microprocessor designs were developed at the beginning decade of 1970 and by 1971 teams from the US Navy, Intel, and Texas Instruments had independently and simultaneously come up with different designs and implementation of the first microprocessors.
In 1973, Gray Boone from Texas Instruments received the awarded patent of the first single-chip microprocessor architecture for the 1971 TMS 1000 design. The chip featured a 4-bit CPU with incorporated 1k of ROM and 256 bits of RAM with a single –chip which formed the first microcomputer-on-a chip, which we referrer today as a microcontroller. The TMS 1000 was later used as a calculator chip with part number TMS 1802NC.
The first commercial stand-alone single chip was developed by a team led by Federico Faggin from Intel. The signal chip microprocessor was named the i4004 and was launched in November 1971. The i4004 operated at a maximum clock frequency of 740 kHz, however, it required at least three additional chips, a 4001 ROM, a 4002 RAM, and a 4003 I/O interface to form a minimum system.
The F-14 Tomcat fighter jet project saw the pioneering of the MP944 microprocessor. The project was classified until 1998 and from its disclosed documentation; it indicates that the microprocessor was completed by 1970. The MP944 was the system implemented for the US navy Central Air Data Computer (CADC) to be installed as the chipset CPU for the F-14 Tomcat fighter. The chipset featured a parallel multiprocessor architecture that supported 20-bit operands pipelining.
The microprocessor design arena by end of the 1970s had grown to hundreds of millions of dollars dominated by 8-bit CPUs, which saw the entry of companies such as Motorola, Zilog, and National Instruments into the market. Outstanding microprocessor designs of the age include the Intel 8080 that eventually evolved into the famous x80 × 86/Pentium series, the Zilog Z-80, Motorola 6800, and MOS6502.
The advancement in CPU sizes progressed through the 1980s and 1990s to 16-bit, 32-bit, and 64-bit designs, and nowadays even some specialized CPUs crunching data at 128-bit widths. In terms of manufacturers and readiness of processors, the diversity has grown to the availability of different choices for processor sizes 32-bit and above, and hundreds of 16-bit and 8-bit processors.
Examples of manufacturers today include Texas Instruments, Intel, Microchip, Freescale (formerly Motorola), Zilog, Advanced Micro Devices, MIPS Technologies, ARM Limited, and the list goes on.
Contemporary Embedded Systems
Today, microprocessor designs are implemented as several interfacing embedded systems, that is, integration of different modules that perform a specific task within a single system. For example, a single system can have a power management system, digital communication components, user interface modules, storage system, and different input/output capabilities.
Even though each of these modules may have its processors and peripherals, each one has a definite, exclusive function. None of them is user programmable, all of them are embedded within the application, and their operation requires minimal or no human interaction.
Despite being universal in nearly every aspect of our modern lives, embedded systems are permeating devices almost invisible to the user, working in a pervasive way to make possible the ‘intelligent’ operation of machines and appliances around us.
A list of applications that depend on embedded systems includes: electronic toys, cellular phones, digital cameras, household devices such as microwaves, dishwasher machines, safety-critical systems such as anti-lock brakes, airbag deployment systems, and electronic surveillance; and defense systems such as missile guidance computers, radars, and global positioning systems, etc.
Structure of an Embedded System
A general overview of an embedded system reveals two main, tightly coupled components, that is, the hardware and software components such as a microcontroller-based processing unit and a software program referred to as firmware. The two are interlocked and provided functionality to the entire system. The firmware is used to either manage hardware resources or give functionality to the hardware.
Inputs to an embedded system are usually process variables fed in via sensors through input/output ports of the embedded system. The outputs from an embedded system on the other hand can either be processed information to be used by the end-user or control of system actuators. Input/Output platforms of an embedded system form its interface either to other machines or to an end-user.
These interfacing platforms may include Liquid Crystal Displays (LCDs), Light Emitting Diodes (LEDs), or different kinds of sensors depending on the application.
Embedded System Hardware:
The embedded system hardware comprises all the electronics necessary for the system to perform its intended purpose. The end application of the system may drive the structural difference between different embedded systems. However, all embedded systems have three core hardware components that almost all embedded systems must possess. They include:
- The Central Processing Unit (CPU)
- The System Memory
- Input-Output ports
Most embedded systems have a different storage location for the program memory and the data memory. Program memory stores the software instructions to be executed by the CPU. The term ‘flashing’ firmware into the system is used to mean burning a program into the memory of the system, usually in a non-volatile memory location. The data memory stores the data to be processed. Other hardware components of an embedded system include:
- Data Converters ( Analog-to-digital (ADC) and/or Digital-to-Analog (DAC) ) for analog interfacing with the real world.
- Communication Ports including serial, parallel, or USB for transferring information to and from other machines.
- User Interfaces including; buzzers, lights, displays, keypads, and other I/O interfaces to the user
Embedded System Software:
Embedded System Software comprises all the software components needed to give functionality to the system hardware. The combination of all these software components forms the system ‘firmware’ stored in a non-volatile memory location.
The system firmware is usually not meant to be reprogrammed by the end-user, however, recently most embedded systems provide a means of firmware upgrades. Depending on the complexity of the application, the system software can either be simple and informal or as the complexity grows require more structure and formality.
Today, embedded system software can be designed around a Real-Time Operating System (RTOS), depending on its level of complexity.
There are three core software components of an embedded system. They include;
1. System Tasks
A simple system may have a main program that it continually executes to achieve specified functionality. For example, a systems job might be performing feedback loops to achieve a predefined control system output. Although an embedded system can only perform only one task at a time, it can take advantage of the fast CPU times to execute other smaller programs, through a process known as the Interrupt Service Routine.
A small set of programs that are to be serviced by the CPU are referred to as Tasks. Different tasks may require varying amounts of CPU execution time and specific system resources to perform that specific task. Therefore different tasks make different system call requirements to the System Kernel.
In an ATM, for example, the system operation can be split into a set of tasks that include reading the keypad to determine user input, a system authentication task to verify user input, presenting the information to the display, performing an arithmetic operation to a certain the amount the user can withdraw from their account, logging system to a database for data collection, just to mention a few.
Embedded systems usually contain an array of different registers that control software operation through states known as flags. Service requests, that can be thought of as tasks or interrupts can be placed via registers or interrupts due to flags or state of I/O registers.
2. System Kernel
The system Kernel is where the software and the hardware of the embedded system interact. Embedded systems are usually designed for optimal and efficient use of both hardware and software to achieve fast and accurate processing and response time. The kernel is the software used to maintain and control access to the hardware which includes the CPU, Memory, and Communication Ports.
Tasks send requests to the kernel for hardware accesses wait to be granted access or scheduled to run at a specific time depending on the priority level of the task. As the complexity of the embedded system increases the system may contain a task manager which schedules tasks and assigns priorities to different tasks for efficient use of hardware resources.
Some tasks might need to exchange information and therefore require memory access to each other. For example, a user input task might need to communicate to a system authentication task to check for validity of user input. The kernel provides safe inter-task communication and prevents one task from overwriting to another program’s memory location.
3. Services
For efficient use of the CPU, embedded systems mostly contain other peripheral components that help relieve the CPU of recurrent tasks that take up a lot of time such as waiting for user input or loading data from memory, and return to the CPU once they are done with processing. These components form the service routine.
Classification of Embedded Systems
The advancement of the microprocessor since the 1970s inadvertently divides embedded systems into three categories. They include;
Small Embedded Systems
This is the most common type of embedded system. They are predominantly microcontroller-based with the microcontroller forming the central part of the whole system. Most of the required components under this kind of embedded system are already integrated into the same system forming a single-chip design. They usually feature a very simple software design since most of their applications are single-tasked with very minimal maintenance required.
They are the most common form of embedded system which is largely because they are easy to mass-produce. An early example is the Texas Instruments TMS 1000 microcontroller.
Modern applications of this kind include monitoring systems such as pressure monitoring systems, electronic calculators, etc.
Distributed Embedded Systems
This kind of embedded system is common in more complex applications. The kind of system features what is known as the processor chipset, that is, the CPU, memory, I/O are distributed across a variety of separate chips. This kind of embedded system is usually used to perform computation or processing of complex data and typically requires more complex hardware and software components such as the Real-Time Operating System (RTOS).
These kinds of embedded systems usually perform multiple tasks and usually feature multicore processor design and more complex instruction pipelining. They usually require maintenance in terms of firmware updates and system diagnostics upgrades.
They are easy to mass-produce and their complexity and performance largely rely on their applications. An early example includes the Intel 4004. Modern applications of this kind of embedded systems included network processors used in all kinds of network routers, Digital signal processing boards for image and video processing such as in cellphones.
High-Performance Embedded Systems
When designing an embedded system the end application and operating environment is a crucial consideration. For example, when designing an embedded system for space exploration more consideration is needed as opposed to designing an embedded system to be used in a retail shop. The electronics in the case of the spacecraft need to be tolerant to radiation and feature a high-speed data logging and error correction system. In most cases, they feature highly complex software thereby requiring a Real-Time Operating System.
The hardware is usually optimized for fast processing and typically employs the use of FPGAs for flexibility. An early example of this type of embedded system was the US navy Central Air Data Computer (CADC) to be installed in the F-14 Tomcat fighter. Modern application of these kinds of embedded systems includes aerospace and military applications in navigation systems and missile guidance systems.
General Qualities of an embedded system
Responsiveness
The time it takes for an embedded system to respond to a task or an event such as an interrupt, is called its Response time or its latency. Modern embedded systems are very responsive although the more responsive and low latency of an embedded system the more expensive it gets. However, most embedded systems even the cheapest ones are very responsive and can be easily used in systems that are not very dependent on timing.
Cost
Embedded systems are meant to be used in other larger systems or mass-produced products, therefore, the best-embedded systems are also very cost-effective with decent performance.
Performance
The amount of data an embedded system can crack through in the shortest time greatly impacts the way it is perceived in the market in terms of performance. Factors such as its operating frequency, communication protocols, delay times, and operating modes also boost the level of performance of the entire system.
Energy Consumption and Power Dissipation
Most embedded systems are meant to be battery powered and so the design of the entire system must be able to use energy efficiently. Having low power consumption modes and sleep features is crucial in the embedded system market. Most Embedded systems also feature an internal temperature sensor designed to check the operating temperature of the entire system to keep the overall operating temperature low. Ensuring low power dissipation through using the appropriate circuitry not only helps to achieve a favorable operating temperature of the system to longevity but also plays an important role in keeping the energy consumption of the system low which means lower bills.
Reliability and Maintainability
Modern embedded systems feature ingenious designs such as ‘fail safe’ circuitry. This is meant to protect and preserve critical electronics of the entire system. For example, in instances such as power surges, short circuits, and reverse polarity. Embedded systems meant to be used in the field feature safe modes such as brown-out detection modes which is a feature that turns off the system until the safe operating voltage is reached. This is done as a security feature to prevent data leaks.