An embedded system is some combination of computer hardware and software, either fixed in capability or programmable, that is designed for a specific function or for specific 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 all possible locations for an embedded system.
Embedded systems are computing systems, but can range from having no user interface (UI) -- for example, on devices in which the embedded system is designed to perform a single task -- to complex graphical user interfaces (GUI), such as in mobile devices. User interfaces can include buttons, LEDs, touchscreen sensing and more. Some systems use remote user interfaces as well.
Embedded system hardware (microprocessor-based, microcontroller-based)
Embedded systems can be microprocessor or microcontroller based. In either case, there is an integrated circuit (IC) 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 whereas 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.
Because microcontrollers tend to implement full (if relatively low computer power) systems, they are frequently put to use on more complex tasks. Microcontrollers are used, for example, 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, though 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, but also numerous other companies that are less familiar to those outside the field. One highly influential vendor in this space has been ARM, which began as an outgrowth of Acorn, a U.K. maker of early PCs. The RISC-based architecture of the ARM chip, produced under license by other companies, has been widely used in mobile phones and PDAs and remains the most widely deployed SoC in the embedded world, with billions of units fielded.
Embedded system software
A typical industrial microcontroller is quite unsophisticated compared to a 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, however, 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 that the systems are generally fast enough and 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, though there are also other operating systems that have been pared down to run on embedded systems, including EmbeddedJava and Windows IoT (formerly Windows Embedded).
Generally, storage of programs and operating systems on embedded devices make use either of flash or rewritable flash memory.
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. Whereas programmers working 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 are afforded no such luxuries.
Some programming languages run on microcontrollers with sufficient 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 that which 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.
According to a recent report from analyst firm IDC, intelligent systems (primarily embedded systems) will likely see a compound annual growth rate of 7.2% from 2015 to 2020 with revenues exceeding $2.2 trillion in 2020, driven in large part by the internet of things. The study predicts that other fast-growing market segments will include wearables, advanced driver assistance systems, drones, smart homes, smart buildings, video surveillance, 3D printers and transportation.