Embedded software is computer
software
Software consists of computer programs that instruct the Execution (computing), execution of a computer. Software also includes design documents and specifications.
The history of software is closely tied to the development of digital comput ...
, written to control machines or devices that are not typically thought of as computers, commonly known as
embedded systems. It is typically specialized for the particular
hardware that it runs on and has time and memory constraints. This term is sometimes used interchangeably with
firmware
In computing
Computing is any goal-oriented activity requiring, benefiting from, or creating computer, computing machinery. It includes the study and experimentation of algorithmic processes, and the development of both computer hardware, h ...
.

A precise and stable characteristic feature is that no or not all functions of embedded software are initiated/controlled via a human
interface, but through machine-interfaces instead.
Manufacturers build embedded software into the electronics of
cars, telephones, modems,
robot
A robot is a machine—especially one Computer program, programmable by a computer—capable of carrying out a complex series of actions Automation, automatically. A robot can be guided by an external control device, or the robot control, co ...
s, appliances, toys, security systems,
pacemakers, televisions and set-top boxes, and
digital watches, for example. This software can be very simple, such as lighting controls running on an
8-bit microcontroller
A microcontroller (MC, uC, or μC) or microcontroller unit (MCU) is a small computer on a single integrated circuit. A microcontroller contains one or more CPUs (processor cores) along with memory and programmable input/output peripherals. Pro ...
with a few
kilobytes of memory with the suitable level of processing complexity determined with a Probably Approximately Correct Computation framework (a methodology based on
randomized algorithms). However, embedded software can become very sophisticated in applications such as
routers, optical network elements,
airplane
An airplane (American English), or aeroplane (Commonwealth English), informally plane, is a fixed-wing aircraft that is propelled forward by thrust from a jet engine, Propeller (aircraft), propeller, or rocket engine. Airplanes come in a vari ...
s,
missile
A missile is an airborne ranged weapon capable of self-propelled flight aided usually by a propellant, jet engine or rocket motor.
Historically, 'missile' referred to any projectile that is thrown, shot or propelled towards a target; this ...
s, and
process control
Industrial process control (IPC) or simply process control is a system used in modern manufacturing which uses the principles of control theory and physical industrial control systems to monitor, control and optimize continuous Industrial processe ...
systems.
Operating systems
Unlike standard computers that generally use an operating systems such as
macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
,
Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
or
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
, embedded software may use no operating system. When they do use one, a wide variety of operating systems can be chosen from, typically a
real-time operating system. Code for embedded software is typically written in
C or
C++, but various
high-level programming languages
A high-level programming language is a programming language with strong abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language ''elements'', be easier to use, or may automate ...
, such as
C#,
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
,
Python and
JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
, are now also in common use to target microcontrollers and embedded systems.
Assembly language
In computing, assembly language (alternatively assembler language or symbolic machine code), often referred to simply as assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence bet ...
s are often used too, especially in booting and
interrupt
In digital computers, an interrupt (sometimes referred to as a trap) is a request for the processor to ''interrupt'' currently executing code (when permitted), so that the event can be processed in a timely manner. If the request is accepted ...
handling.
Ada is used in some military and aviation projects.
Differences from application software

Most consumers are familiar with
application software
Application software is any computer program that is intended for end-user use not operating, administering or programming the computer. An application (app, application program, software application) is any program that can be categorized as ...
that provide functionality on a computer. However embedded software is often less visible, but no less complicated. Unlike application software, embedded software has fixed hardware requirements and capabilities, and addition of third-party hardware or software is strictly controlled.
Embedded software needs to include all needed
device driver
In the context of an operating system, a device driver is a computer program that operates or controls a particular type of device that is attached to a computer or automaton. A driver provides a software interface to hardware devices, enabli ...
s at manufacturing time, and the device drivers are written for the various hardware devices. These device drivers, called BSP (
Board support package), form the layer of software containing hardware-specific drivers and other routines that allow a particular operating system (traditionally a real-time operating system, or RTOS) to function in a particular hardware environment (a computer or CPU card), integrated with the RTOS itself. The software is highly dependent on the CPU and specific chips chosen. Most embedded software engineers have at least a passing knowledge of reading
schematics, and reading data sheets for components to determine usage of registers and communication system. Conversion between
decimal
The decimal numeral system (also called the base-ten positional numeral system and denary or decanary) is the standard system for denoting integer and non-integer numbers. It is the extension to non-integer numbers (''decimal fractions'') of th ...
,
hexadecimal
Hexadecimal (also known as base-16 or simply hex) is a Numeral system#Positional systems in detail, positional numeral system that represents numbers using a radix (base) of sixteen. Unlike the decimal system representing numbers using ten symbo ...
and
binary is useful as well as using
bit manipulation.
Web applications are often used for managing hardware, although XML files and other output may be passed to a computer for display. File systems with folders are typically used, however SQL databases are often absent.
Software development requires use of a
cross compiler, which runs on a computer but produces executable code for the target device. Debugging requires use of an
in-circuit emulator, and debugging hardware such as
JTAG or
SWD debuggers. Software developers often have access to the complete kernel (OS) source code.
Size of the storage memory and RAM can vary significantly. Some systems run in 16 KB of Flash and 4 KB of RAM with a CPU operating at 8 MHz, other systems can rival contemporary computers. These space requirements lead to more work being done in C or
embedded C++, instead of C++. Interpreted languages like
BASIC
Basic or BASIC may refer to:
Science and technology
* BASIC, a computer programming language
* Basic (chemistry), having the properties of a base
* Basic access authentication, in HTTP
Entertainment
* Basic (film), ''Basic'' (film), a 2003 film
...
(while e.g.
Parallax Propeller can use compiled BASIC) and
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
(Java ME Embedded 8.3
is available for e.g.
ARM Cortex-M4,
Cortex-M7 microcontrollers and older
ARM11 used in
Raspberry Pi
Raspberry Pi ( ) is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in collaboration with Broadcom Inc., Broadcom. To commercialize the product and support its growing demand, the ...
and
Intel Galileo Gen. 2) are not commonly used; while an implementation of the interpreted
Python 3 language
MicroPython is however available expressly for microcontroller use, e.g.
32-bit
In computer architecture, 32-bit computing refers to computer systems with a processor, memory, and other major system components that operate on data in a maximum of 32- bit units. Compared to smaller bit widths, 32-bit computers can perform la ...
ARM-based (such as BBC
micro:bit) and
16-bit
16-bit microcomputers are microcomputers that use 16-bit microprocessors.
A 16-bit register can store 216 different values. The range of integer values that can be stored in 16 bits depends on the integer representation used. With the two ...
PIC microcontrollers.
Communication protocols
Communications between processors and between one processor and other components are essential. Besides
direct memory addressing, hardware level common protocols include
I²C,
SPI,
serial port
A serial port is a serial communication Interface (computing), interface through which information transfers in or out sequentially one bit at a time. This is in contrast to a parallel port, which communicates multiple bits simultaneously in Pa ...
s,
1-Wires,
Ethernet
Ethernet ( ) is a family of wired computer networking technologies commonly used in local area networks (LAN), metropolitan area networks (MAN) and wide area networks (WAN). It was commercially introduced in 1980 and first standardized in 198 ...
s, and
USB
Universal Serial Bus (USB) is an industry standard, developed by USB Implementers Forum (USB-IF), for digital data transmission and power delivery between many types of electronics. It specifies the architecture, in particular the physical ...
.
Communications protocols designed for use in
embedded systems are available as
closed source
Proprietary software is software that grants its creator, publisher, or other rightsholder or rightsholder partner a legal monopoly by modern copyright and intellectual property law to exclude the recipient from freely sharing the software or modi ...
from companies including InterNiche Technologies and
CMX Systems.
Open-source protocols stem from
uIP,
lwip, and others.
See also
*
Embedded system
An embedded system is a specialized computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is e ...
Notes
References
* Edward A. Lee, "Embedded Software", ''Advances in Computers'' (
Marvin Victor Zelkowitz, editor) 56, Academic Press, London, 2002.
{{Embedded systems
Computing terminology
Embedded systems