To gain a solid understanding of embedded systems, it is first helpful to understand the term ‘system’ in a general sense.
What is a System?
A system is an assemblage of several components or units that work together to achieve a specific function. For example, a car is an automotive system comprising a metal housing, a combustion unit that drives the motor, and wheels that rotate to give the vehicle traction. Each of these components contributes a distinct function to achieve the overall goal of vehicular transport.
An embedded system that includes an Arduino board and a liquid crystal display. Image credit: Pixabay.
What is an Embedded System?
An embedded system is an electronic circuit within a larger assembly that can have electrical and/or mechanical functions. In essence, an embedded system is a system within a system.
Embedded systems are designed to perform specific functions within a host of applications. They are found in almost every type of electronic device, including of course smartphones and laptops. An embedded system receives input from a hardware component, such as a sensor or button, to produce digital and/or mechanical output—for example, it may display a set of characters on a screen (like in the image above) and/or power up an electric motor.
Are Embedded Systems Any Different From Computers?
Like computers, embedded systems can carry out computing functions, e.g., microprocessors utilised in data acquisition systems. However, unlike computers, which perform general-purpose operations, embedded system operations are limited to only a few tasks. Embedded systems also have limited processing power and smaller memory sizes than computer systems.
Characteristics of Embedded Systems
The main characteristics of an embedded system are that they are:
Specialised (i.e. they have a limited function)
Made to contain data storage (memory)
Both hardware and software-based
A close-up of a held Raspberry Pi single-board computer. Image credit: Pixabay.
What Defines an Embedded System Designer?
A person that designs embedded systems products may be referred to as an embedded system designer or engineer. They are likely to have a background in electronic engineering and/or computer science.
The field of embedded system design, moreover, consists of software and hardware engineering.
Hardware components of embedded systems include (but are not limited to) the following:
A power supply: power supply systems for embedded technology can be standard 5VDC for 1.8VDC for ultra-low power applications, which is provided by wall adapters or batteries. The amount of power required will depend on the intended application (although embedded systems are prominently low-power).
Microprocessor/microcontroller: the processor inside an embedded system is the central powerhouse that performs all of the computing operations. Microprocessors come in 8-bit, 16-bit, and 32-bit architectures depending on the processing needs of the intended applications.
System memory: data storage units for embedded systems include read-only memory (ROM), random access memory (RAM), and an electrically erasable programmable read-only memory (EEPROM). ROM is used for storing the source code for the program in question, while RAM is for storing temporary data. EEPROM is a unique, non-volatile memory system used to store erasable or reprogrammable data.
An input/output (I/O) setup: input and output for an embedded system can be via ports on a microcontroller or a sensor. Their primary function is to provide a means for interaction with the system.
An application-specific integrated circuit (ASIC): ASICs provide functionalities that are suited to specific applications. For instance, we can have an ASIC for gas or temperature detection or voice recognition. These components typically have dedicated power supplies, processors, and/or displays that are separate from the rest of the embedded system.
A close-up of an Arduino. Image credit: Pixabay.
Software components of embedded systems include (but are not limited to) the following:
A text editor: a text editor is used to write source code that instructs the embedded system to carry out specific functions within an application. The source code of embedded systems is often written in low-level programming languages, such as C or C++.
A compiler/an assembler: the compiler or assembler receives source code from the text editor and converts it into instructions that are machine-readable.
Linkers: linkers are programs that unify strings of code that are saved in several files within a single program for execution.
A software library: a software library is a collection of non-volatile resources, such as configuration data, scripts, documentation, pre-written codes, etc. that are utilised by software programs.
A debugger: a debugger is a tool used to check source codes for bugs or other errors. It scans through lines of code and identifies portions that contain syntax errors, runtime errors, and more, and highlights each accordingly. Debugging is a crucial part of the quality assurance stage of embedded systems design.
All things considered, engineers who wish to specialise in embedded systems design—and who also have a basic understanding of embedded systems and their components—can always do further research on the intricacies of the field and gain practical experience from their own personal projects. After all, a vast assortment of electronic components can be purchased to help realise such ambitions.