All about Embedded Systems and Embedded Computer: A Useful Cheatsheet you’ll need
If you’re just getting into embedded systems, chances are you’re probably confused with many of the terms, components and functions. Thus, to make things short and simple enough to understand, we created this cheat sheet that would hopefully help you digest all this information better!
But of course, as with anything else, let’s start easy with the basic concepts before working our way to the more complex portions.
What are Embedded Systems?
Embedded system doesn’t just refer to a system, it is a combination of both hardware and software that would allow you to program it. Thus it can be used for a specific function or functions within a larger system. Some popular examples are the Raspberry Pi and Arduino.
As mentioned, the embedded system is a combination of hardware and software. Thus, we will cover all about them in the latter section. But first, let’s look at the structure of an embedded system and basic components:
Basic components in Embedded System
- Power Supply: It goes without saying that without power, no system will be able to work.
- Processor: The deciding factor of an embedded system’s performance, ranges from 8-bit to 32-bit.
- Memory: Consists of Read-only memory (ROM) and Random-access Memory (RAM).
- Timer: Provides all timing and counting functions, programming can be done to alter this.
- Communication Ports: Interface that allows the system to communicate with other embedded systems, such as UART, USB, Ethernet etc.
- Input and Output (I/O): Allows you to drive/interface various devices such as keyboard, mouse and switches etc.
If you would like to learn more about ports, check out this guide! Overview of Computer Ports: Types, Functions and Comparison
The architecture of Embedded System
Above is a basic structure of the embedded system, the key components are as follows:
- Sensor: Measures and converts the physical quantity to an electrical signal, then store it in the memory.
- Analog-to-Digital Converter (ADC): Converts analog signal sent by the sensor into a digital signal.
- Processor & ASIC: Assesses the data, measures the output and then stores it in the memory.
- Digital-to-Analog Converter (DAC): Converts the digital data given by the processor into analog data
- Actuator: Compares the output given by DAC to the actual output stored then input the exact output.
Types of Embedded Systems
There are 3 main types of Embedded System:
- Small scale: Designed with 8 or 16-bit microcontroller, able to operate with a battery.
- Medium scale: Designed with 16 or 32-bit microcontrollers, offers software and hardware complexities. C or Java etc. are used to develop.
- Sophisticated: Typically has lots of software and hardware complexities, would require processors to do so. Other components or software and hardware may be combined in the latter stage of development.
Embedded System Hardware
We briefly touched on the structure of an embedded system, but as we all know by now, the embedded system needs a hardware platform to run on. Thus let’s look at these categories:
- Microprocessor
- Microcontroller
- Field-Programmable Gate Array
Microprocessor
A microprocessor or microprocessing unit (MPU) is a single-chip semiconductor that incorporates the function of a CPU. A 64-bit microprocessor is also called Accelerated Processing Unit (APU), which combines CPU and GPU.
Main Components:
- ALU (Arithmetic and Logical Unit): Performs arithmetic and logical operations on the data received from an input device or memory.
- Registers: Includes registers identified by letters and accumulator.
- Control: Controls the instructions and flow of data within the device.
Microcontroller
A microcontroller (MCU) is a single integrated circuit (IC) that is made to perform a specific task. Sometimes in higher-end MCUs, a System-on-Chip (SoC) is used instead.
Main components:
- CPU (Central Processing Unit): Consists of an Arithmetic Logic Unit (ALU) and a Control Unit (CU)
- Memory: Consists of Read-only memory (ROM) and Random-access Memory (RAM).
- I/O Ports: Allows you to drive/interface various devices such as keyboard, mouse and switches etc.
Field-Programmable Gate Array
Field-Programmable Gate Array or better known as FPGA are semiconductor devices that are application-specific where you have to re-program for different uses, containing programmable logic components and interconnects. They’re basically the prototype version of Application Specific Integrated Circuits (ASIC) but they’re cheaper and more flexible.
Main components:
- Configurable Logic Blocks (CLB): Implement logic functions, consisting many other components such as transistor pairs
- Programmable Interconnects: Implement routing for the CLBs, since there’s a lot of wiring as you can see.
- Programmable I/O Blocks: Allows connection with external components, basically an input-output.
Embedded System Software
Speaking of hardware, we definitely cannot miss out the software portion in an embedded system! Let’s look at what’re the basic components that are required to create your software:
- Embedded Operating System (OS)
- Programming Languages
- Software Development Tools
Embedded Operating System
Every embedded system will definitely have an Operating system. It’s an important system software that acts as an interface between hardware and end-user. But the embedded operating system is designed for a specific purpose. A few examples include ThreadX and IOS.
What is a Kernel?
The Kernel’s one and only job is to be the bridge between hardware and software, which makes communication possible. It is also the core component in an operating system.
Programming Languages
Programming languages allow programmers to give instructions to the embedded system. And the language that embedded system understand is also known as ‘binary’ while translating programming language to binary is known as ‘compiling’. A few common ones are C, C++ and Python etc.
The skeleton of C programming code that says ‘Hello, world!’ would look like this:
#include
int main()
{
printf("Hello, World!");
return 0;
}
Since C and C++ are some of the most popular ones, here’re some basic codes you can utilise:
Software Development Tools
After you’ve selected an OS as well as a programming language, you’ll need to write your code using some tools! Let’s look at the individual tools you’ll need or will encounter:
- Assembler (asm): A program that converts written-code into binary.
- Compiler: A program that translates high-level programming code into low-level programming code that allows the machine to understand.
- Debugger: A program that is used to test and eliminate bugs, allows programmers to pinpoint the issue and resolve it.
- Editor: Used to write source code in C and C++ and saves it into a text file.
- Emulator: Allows programmers to simulate a system and see how the code will work in a real-time environment.
- Linker: As its name suggests, it links and combines the codes and modules together to form a program.
Integrated Development Environment (IDE)
You might have heard of IDE since it is a software commonly used by programmers to develop a software, thus it combines all the tools we’ve mentioned above. But IDE usually consists of an editor, a compiler, a linker and a debugger.
Summary
And that’s all on embedded systems! We talked about embedded system hardware and software respectively and broke down what’s in each of them. Hope that you’re able to understand the embedded system better. Should you require more in-depth information about this topic, check out the links below!
Suggest Readings
Raspberry Pi Alternatives: 17 Best Single Board Computers in 2020 – Interested in getting an embedded system for yourself? We have compiled a list of best single board computers!
Best Arduino Boards and Microcontrollers (MCUs) for IoT and Wearables – Another compilation of embedded system, but this time on microcontrollers!
ArduPy vs CircuitPython – Which is Better for MicroPython Microcontroller Programming? – Not sure which is better? We’ll compare the better software application for you!
Which Raspberry Pi Programming Language should you use in 2020? Comparison Guide – A fan of Raspi? Check out this guide for the best programming language for it!