The world is experiencing a rise of interest to embedded systems, there is no doubt in it. This market is expected to grow at 6,1% rate from 2021 to 2025, and this growth can be explained by the demand for communication equipment and reliable consumer electronics. Advanced driver-assistance systems (ADAS) and electromobility solutions are additional factors that fuel this market growth. Embedded systems development companies offering hardware and software solutions are getting lots of attention from Asian and European companies.
As a VP of Engineering of one of the best IT service providers according to IAOP, I feel motivated to share my knowledge about embedded systems. My acquaintance with the field of embedded development began from attempts to find out which embedded devices exist, what the difference is, and how to name them correctly. At the time, I did not manage to find the information that was structured logically, and I had to gather it from different sources myself.
In this article, I would like to ease the way for those, who are starting to dive into the topic and for which it is important to understand the basic terminology in the field.
The aim of the article is to give a general idea of embedded devices without going deep into details.
Many considerations are deliberately simplified to help you understand the terms. Also, some topics were excluded from the consideration like the classification of microcontrollers, protocols for interacting with them, special microcontrollers, and microcontrollers with programmable logic. I plan to devote the next articles to these questions.
The article assumes a basic understanding of a computer structure and the principles of its operation.
CPU, Microprocessor, Chipset
In general, a computer is a device that performs operations defined by a creator or a user and provides the result of their execution in some form. Full-fledged computers are very different from embedded, but some basic concepts are the same: they all perform certain tasks. Whereas a dishwasher that has an embedded system is dedicated to one specific task (wash dishes), a general-purpose computer can perform multiple tasks. To reach this goal an embedded system is equipped with the following hardware and software elements:
- CPU (central processing unit) is an electronic circuit that directly executes instructions (this concept is almost abstract and implementations can differ significantly).
- IC (Integrated circuit) is an electronic circuit, placed into a housing of a chip.
- PCB (printed circuit board) is a circuit board with mounted electronic components.
A microprocessor is an implementation of a CPU in a single IC (microcircuit) package. In general, the CPU does not have to be implemented as a single chip. The microprocessor is used in full-fledged computers.
A microprocessor does not have or has a very limited amount of internal memory (cache), which is used to solve problems caused by the difference in the speed of the microprocessor and external memory. Thus, the internal memory (cache) is not accessible for user tasks.
In this context, we can say that the microprocessor has no memory at all and it relies on external memory. This was done for several reasons. Firstly, in order to be able to develop these two components (microprocessor and memory) relatively independently, and secondly, the dimensions of modern memory make it inappropriate to place them in the same chip with the microprocessor.
For the same reasons, the microprocessor does not know how to communicate with external devices (including external memory), and therefore requires additional logic around it to interact with them, which is implemented in the form of a chipset – a set of additional chips without which the microprocessor is expensive, but a useless device.
To unite and connect all this variety of microcircuits, memory and other peripherals, there is a motherboard. In my case, its dimensions are such that it fits only in a FullTowerATX case, and in terms of power consumption (together with peripherals in peak loads), it can be compared with an iron. Naturally, we are not talking about any savings in energy or space on such a computer.
Imagine now that our task is to manage everyday devices that cannot accommodate a full-fledged computer. It can be a mobile phone, smartwatch, refrigerator or dishwasher. In order to implement a “computer” inside these devices, it is necessary to minimize it in size and power consumption (and as a result of cost), sacrificing everything else without which the computer will still remain a computer (that is, it will be able to perform operations and provide a result). And put everything that remains into one IC (integrated circuit), powered by an external power source (preferably a battery).
There are different ways to solve this problem:
- ASIC (application-specific integrated circuit) or Fixed Circuit – a specialized chip for solving a specific problem in a particular device. Its behavior is determined during production and cannot be changed, and the set of its functions is very limited, due to which they are much faster.
- FPGA (Field-programmable gate array) – a microcircuit whose operation logic is configured (programmed) at the level of logical blocks. This also includes CPLD (Complex Programmable Logic Device), PLD (Programmable Logic Device).
- MCU (microcontroller unit) – an IC that, like a microprocessor, executes instructions stored in memory. This is the most flexible option that is suitable for a wide range of tasks. We will consider this specific type below.
MCU (Microcontroller unit)
What will be inside such a chip? It is a CPU (in a simplified form), a minimum of memory (for a program and data), and a logic of the interaction of the CPU with the memory.
If we write a program to the memory of such a microcircuit and apply power to it, we get a “computer”. The main difference from the microprocessor discussed above is the presence of memory for the user program and data, as well as the ability of the CPU to interact with them without the help of external ICs (chipset).
The result of power optimization is a relatively low speed (which, however, is more than enough for most embedded tasks). Of course, this is not a full-fledged computer, but nevertheless it follows our instructions, and we can get the result in a form of voltages on the legs of the IC (pins), and if our task is quite simple, then often this is enough. At the same time, we significantly benefit in such parameters as Size, Weight, Cost and Energy Consumption.
Such a “computer” on a chip we will call the MCU or microcontroller.
Most often, microcontroller programming assumes writing programs that either work without the operating system (bare-bone), or based on some real-time operational system (RTOS), which provides only basic functionality for job management, memory allocation, timer management and synchronization.
Typical MCU examples: Intel 8051, ESP8266/32, MSP430, ARM, AVR, PIC, STM8/32.
SoC (System on chip)
If you try to apply such a “minimal” MCU in any real project, the question regarding the lack of its means for communication with peripherals arises immediately. Therefore, real MCUs are issued with a variety of additional functionality (inside the same chip), which is designed to solve this problem. These are drivers for interacting with external devices, sometimes even a graphics adapter, and the ability to work with external memory.
If the microcontroller contains some of these additional features, then manufacturers proudly call it SoC. In fact, if the MCU is a CPU with memory on one chip, then SoC is an MCU with a “chipset” for working with peripherals on the same chip, and as a result with a larger number of pins (to connect these peripherals).
Since the number of peripherals with which the microcontroller which we call SoC is not defined by anyone, these terms (SoC and the microcontroller) are usually used interchangeably and are used here as synonyms.
It should also be noted that the word SoC is a marketing term and often some MCUs called SoC to require additional logic/chips to be of any use. For example, some SoCs do not work without external memory or require special power management logic. Therefore, SoC is not always the criterion of a “self-sufficient” system on-chip.
SBM (Single-board microcontroller)
In order for peripherals to be easily connected to the SoC during the development process, the microcontroller is usually produced mounted on a printed circuit board (PCB) with a strapping that provides the microcontroller with stabilized power, a clock signal, as well as with additional peripherals (LEDs, buttons, etc.).
Such a board is called SBM (Single-board microcontroller), or, if the board is designed for prototyping, a development board. Although such boards usually have the minimum necessary peripherals, sometimes they add the logic (circuitry) necessary to simplify writing firmware to the microcontroller by developers, and also for connecting external devices, for example, sd-cards or (for more powerful ones) even a display.
In some cases, the added periphery does not fit on one PCB board (or a periphery is optional), then it is placed on another board that can be connected to the main one without adapters or wires. Such a PCB board is called an extension board or, if it is much larger than the development board, it is called a motherboard by analogy with the motherboard of a full computer.
A typical example of SBM is Arduino boards. (Please, pay attention to the fact that Arduino is the board with an SoC / microcontroller together and not the specific SoC/microcontroller installed on it).
SBC (Single-board computer)
If the modules necessary to operate a sufficiently powerful microcontroller as a full-fledged computer are installed on the same PCB with the microcontroller (for example, external memory, ethernet, USB, Wifi, HDMI, audio, etc), then such a board is called Single Board Computer (SBC).
This configuration allows you to run a full operating system on the microcontroller (from external storage, in the form of an sd card). On the other hand, this does not interfere with using the same board as a regular SBM, i.e. without an operating system or with RTOS.
A typical example of SBC are boards like the Raspberry Pi.
It should be noted that despite the rich capabilities of Arduino and Raspberry Pi, their main task is to teach programming, rapid prototyping, and lowering the threshold of entry into the embedded development area.
Like development boards, they are not intended to be used as components of the final product. This is primarily because they are overpriced (partially due to unnecessary peripherals, partly due to marketing). High costs are not an obstacle to the listed tasks. However, it can become a significant problem in the mass production of the final product.
There is also a reasoned opinion that in an attempt to lower the entry threshold Arduino has gone so far that their educational use leads to the development of addictions among newcomers, which leads to an unwillingness to understand the details of the devices and tools that they use. The consequence of this is inefficient solutions in terms of programming and circuitry.
We examined the basic concepts associated with microcontrollers and the main differences between them. In the following articles, it is planned to pay attention to the classification of microcontrollers and protocols for interacting with them. Among all embedded software development companies choosing those that have strong knowledge of hardware and software parts are a must.