An embedded system is a combination of computer hardware and software designed for a specific function or functions within a larger system. The systems can be programmable or with fixed functionality. Industrial machines, consumer electronics, agricultural and process industry devices, automobiles, medical equipment, cameras, household appliances, airplanes, vending machines and toys, as well as mobile devices, are possible locations for an embedded system.
While embedded systems are computing systems, they can range from having no user interface (UI) -- for example, on devices in which the system is designed to perform a single task -- to complex graphical user interfaces (GUIs), such as in mobile devices. User interfaces can include buttons, LEDs and touchscreen sensing. Some systems use remote user interfaces as well.
Characteristics of embedded systems
The main characteristic of embedded systems is that they are task specific. They perform a single task within a larger system. For example, a mobile phone is not an embedded system, it is a combination of embedded systems that together allow it to perform a variety of general-purpose tasks. The embedded systems within it perform specialized functions. For example, the GUI performs the singular function of allowing the user to interface with the device. In short, they are programmable computers, but designed for specific purposes, not general ones.
Additionally, embedded systems can include the following characteristics:
- comprised of hardware, software and firmware;
- embedded in a larger system to perform a specific function as they are built for specialized tasks within the system, not various tasks;
- either microprocessor-based or microcontroller-based -- both are integrated circuits that give the system compute power;
- often used for sensing and real-time computing in internet of things (IoT) devices -- devices that are internet-connected and do not require a user to operate;
- vary in complexity and in function, which affects the type of software, firmware and hardware they use; and
- often required to perform their function under a time constraint to keep the larger system functioning properly.
Embedded systems vary in complexity, but generally consist of three main elements:
- Hardware. The hardware of embedded systems is based around microprocessors and microcontrollers. Microprocessors are very similar to microcontrollers, and generally refer to a CPU that is integrated with other basic computing components such as memory chips and digital signal processors (DSP). Microcontrollers have those components built into one chip.
- Software. Software for embedded systems can vary in complexity. However, industrial-grade microcontrollers and embedded IoT systems generally run very simple software that requires little memory.
- Firmware. Embedded firmware is usually used in more complex embedded systems to connect the software to the hardware. Firmware is the software that interfaces directly with the hardware. A simpler system may just have software directly in the chip, but more complicated systems need firmware under more complex software applications and operating systems.
Embedded system hardware
Embedded system hardware can be microprocessor- or microcontroller-based. In either case, an integrated circuit is at the heart of the product that is generally designed to carry out real-time computing. Microprocessors are visually indistinguishable from microcontrollers. However, the microprocessor only implements a central processing unit (CPU) and, thus, requires the addition of other components such as memory chips. Conversely, microcontrollers are designed as self-contained systems.
Microcontrollers include not only a CPU, but also memory and peripherals such as flash memory, RAM or serial communication ports. Because microcontrollers tend to implement full (if relatively low computer power) systems, they are frequently used on more complex tasks. For example, microcontrollers are used in the operations of vehicles, robots, medical devices and home appliances. At the higher end of microcontroller capability, the term system on a chip (SoC) is often used, although there's no exact delineation in terms of RAM, clock speed, power consumption and so on.
MarketsandMarkets, a business to business (B2B) research firm, predicts that the embedded market will be worth $116.2 billion by 2025. Chip manufacturers for embedded systems include many well-known technology companies, such as Apple, IBM, Intel and Texas Instruments, as well as numerous other companies less familiar to those outside the field. The expected growth is partially due to the continued investment in artificial intelligence (AI), mobile computing and the need for chips designed for that high-level processing.
Embedded system software
A typical industrial microcontroller is unsophisticated compared to the typical enterprise desktop computer and generally depends on a simpler, less-memory-intensive program environment. The simplest devices run on bare metal and are programmed directly using the chip CPU's machine code language.
Often, embedded systems use operating systems or language platforms tailored to embedded use, particularly where real-time operating environments must be served. At higher levels of chip capability, such as those found in SoCs, designers have increasingly decided the systems are generally fast enough and the tasks tolerant of slight variations in reaction time that near-real-time approaches are suitable. In these instances, stripped-down versions of the Linux operating system are commonly deployed, although other operating systems have been pared down to run on embedded systems, including Embedded Java and Windows IoT (formerly Windows Embedded).
Generally, storage of programs and operating systems on embedded devices make use of either flash or rewritable flash memory.
Embedded firmware, is specific software written into the memory of a device that serves the purpose of ROM but can be updated more easily. Firmware can be stored in non-volatile memory devices, including ROM, programmable ROM, erasable PROM or flash memory. Embedded firmware is used to control various device and system functions. For example, it can tell the device how to communicate with other devices, perform specific functions and provide input and output functionality.
The delineation between the terms embedded firmware and embedded software is blurred. Embedded software often refers to the only code running on a piece of hardware, while firmware can also refer to the chip that houses a device's basic input/output system (BIOS) or Unified Extensible Firmware Interface (UEFI), which connect software and a system's operating system.
Applications of embedded systems
Embedded systems are used in a variety of technologies across industries. Some examples include:
- Automobiles. Modern cars commonly consist of many computers (sometimes as many as 100), or embedded systems, designed to perform different tasks within the vehicle. Some of these systems perform basic utility function and others provide entertainment or user-facing functions. Some embedded systems in consumer vehicles include cruise control, backup sensors, suspension control, navigation systems and airbag systems.
- Mobile phones. These consist of many embedded systems, including GUI software and hardware, operating systems, cameras, microphones and USB I/O modules.
- Industrial machines. They can contain embedded systems, like sensors, and can be embedded systems themselves. Industrial machines often have embedded automation systems that perform specific monitoring and control functions.
- Medical equipment. These may contain embedded systems like sensors and control mechanisms. Medical equipment, such as industrial machines, also must be very user-friendly, so that human health isn't jeopardized by preventable machine mistakes. This means they'll often include a more complex OS and GUI designed for an appropriate UI.
Embedded systems vs. VLSI
Very large-scale integration, or VLSI, is a term that describes the complexity of an integrated circuit (IC). VLSI is the process of embedding hundreds of thousands of transistors into a chip, whereas LSI (large-scale integration) microchips contain thousands of transistors, MSI (medium-scale integration) contain hundreds of transistors, and SSI (small-scale integration) contain tens of transistors. ULSI, or ultra-large-scale integration, refers to placing millions of transistors on a chip.
VLSI circuits are common features of embedded systems. Many ICs in embedded systems are VLSI, and the use of the VLSI acronym has largely fallen out of favor.
Debugging embedded systems
One area where embedded systems part ways with the operating systems and development environments of other larger-scale computers is in the area of debugging. Usually, developers working with desktop computer environments have systems that can run both the code being developed and separate debugger applications that monitor the actions of the development code as it is executed. However, embedded system programmers generally cannot.
Some programming languages run on microcontrollers with enough efficiency that rudimentary interactive debugging is available directly on the chip. Additionally, processors often have CPU debuggers that can be controlled -- and, thus, control program execution -- via a JTAG or similar debugging port.
In many instances, however, programmers of embedded systems need tools that attach a separate debugging system to the target system via a serial or other port. In this scenario, the programmer can see the source code on the screen of a conventional personal computer just as would be the case in the debugging of software on a desktop computer. A separate, frequently used approach is to run software on a PC that emulates the physical chip in software, thus making it possible to debug the performance of the software as if it were running on an actual physical chip.
Broadly speaking, embedded systems have received more attention to testing and debugging because a great number of devices using embedded controls are designed for use in situations where safety and reliability are top priorities.
How IoT builds on an embedded systems base
While some embedded systems can be relatively simple, a growing number either supplant human decision-making or offer capabilities beyond what a human could provide. For instance, some aviation systems, including those used in drones, are able to integrate sensor data and act upon that information faster than a human could, permitting new kinds of operating features.
The embedded system is expected to continue rapidly growing, driven in large part by the IoT. Expanding IoT applications, such as wearables, drones, smart homes, smart buildings, video surveillance, 3D printers and smart transportation, are expected to fuel embedded system growth.
History of embedded systems
Embedded systems date back to the 1960s. Charles Stark Draper developed an integrated circuit (IC) in 1961 to reduce the size and weight of the Apollo Guidance Computer, the digital system installed on the Apollo Command Module and Lunar Module. The first computer to use ICs, it helped astronauts collect real-time flight data.
In 1965, Autonetics, now a part of Boeing, developed the D-17B, the computer used in the Minuteman I missile guidance system. It is widely recognized as the first mass-produced embedded system. When the Minuteman II went into production in 1966, the D-17B was replaced with the NS-17 missile guidance system, known for its high-volume use of integrated circuits. In 1968, the first embedded system for a vehicle was released; the Volkswagen 1600 used a microprocessor to control its electronic fuel injection system.
By the late 1960s and early 1970s, the price of integrated circuits dropped, and usage surged. The first microcontroller was developed by Texas Instruments in 1971. The TMS 1000 series, which became commercially available in 1974, contained a 4-bit processor, read-only memory (ROM) and random-access memory (RAM), and cost around $2 apiece in bulk orders.
Also, in 1971, Intel released what is widely recognized as the first commercially available processor, the 4004. The 4-bit microprocessor was designed for use in calculators and small electronics, though it required eternal memory and support chips. The 8-bit Intel 8008, released in 1972, had 16 KB of memory; the Intel 8080 followed in 1974 with 64 KB of memory. The 8080's successor, x86 series, was released in 1978 and is still largely in use today.
In 1987, the first embedded operating system, the real-time VxWorks, was released by Wind River, followed by Microsoft's Windows Embedded CE in 1996. By the late 1990s, the first embedded Linux products began to appear. Today, Linux is used in almost all embedded devices.