An embedded system is a combination of computer hardware and software, either fixed in capability or programmable, designed for a specific function or functions within a larger system. Industrial machines, 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.
Embedded systems are computing systems, but 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, touchscreen sensing and more. Some systems use remote user interfaces as well.
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.
Embedded system hardware (microprocessor-based, microcontroller-based)
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 computation for real-time operations. Microprocessors are visually indistinguishable from microcontrollers, but while the microprocessor only implements a central processing unit (CPU) and, thus, requires the addition of other components such as memory chips, 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 put to use on more complex tasks. For example, microcontrollers are used in the operations of vehicles, robots, medical devices and home appliances, among others. 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 and so on.
The embedded market was estimated to be in excess of $140 billion in 2013, with many analysts projecting a market larger than $20 billion by 2020. Manufacturers of chips for embedded systems include many mainstays of the computer world, such as Apple, IBM, Intel and Texas Instruments, as well as numerous other companies less familiar to those outside the field. Arm has been a highly influential vendor in this space. The company began as an outgrowth of Acorn, a U.K. maker of early PCs. Arm chips, produced under license by other companies, are based on the reduced instruction set computer (RISC) architecture and are often used in mobile phones; they remain the most widely deployed SoC in the embedded world, with billions of units fielded.
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.
The firmware on embedded systems, referred to as 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, telling 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 are blurring, but 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.
Embedded systems vs. VLSI
Very-large-scale integration, or VLSI, is a term that describes the complexity of an integrated circuit. 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. While programmers 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, 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.
The internet of things 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 internet of things (IoT). Expanding IoT applications such as wearables, drones, smart homes, smart buildings, video surveillance, 3D printers and smart transportation are expected to add to fuel embedded system growth.