Embedded System by definition, is also known as an integrated system due to its combination of hardware and software (also known as Firmware). It comprises of intelligent computing devices that are surrounding us. The devices may be a smartphone, smart watches, smart home devices, medical equipment, security alarms, IoT products, etc.
They will talk with each other through the internet and runs remotely without human intervention. One of the facts is our world will connect to more than 50 billion devices in the nearby future (2020 to 2021) with emerging technology such as the Internet of things (IoT). Moreover, Machine learning and artificial intelligence will play a crucial role in designing embedded system products. To develop such systems, its worth to know the working of its Software and hardware development life cycle.
This beginner’s guide gives you a complete tutorial on Embedded systems. Before going to know the working, it is important to know the difference between General purpose PC (computer) and embedded device.
Embedded System VS General Purpose System
Many of you confuse between the two words, but there is a primary difference between the Microprocessor and Microcontroller in embedded CPU. A general-purpose CPU in a computer like a Microprocessor has external peripherals (Real-time Clock, USB, Ethernet, HDMI etc.) physically connected to it and are visible outside. But an embedded Microcontroller or Microprocessor unit interfaces few or all the peripherals to the CPU on a single SOC (System On Chip) IC.
Here are some of the key differences between General purpose operating system and Embedded operating system.
General Purpose Operating system
- Runs in Multi-Tasking Environment with one or more tasks (sometimes known as threads).
- Generic algorithms had been implemented for performing parallel tasks. They are meant for faster processing and high throughput.
- Complex operations like 32 bit and 64-bit addition and subtraction can be done.
- Cannot respond and interact with the outside analog world.
- The cost is high due to high memory (RAM, ROM) availability.
- Power consumption and Size are not a major design constraint.
- Not real-time and reactive in a harsh environment.
- User-friendly interface.
Examples: Windows, Linux, Mac OS.
What is Embedded System?
As the name implies, it may be hardware or software integrated to perform a particular function. It uses a Microcontroller/Microprocessor to perform a single job. It is a stand-alone device with or without operating system. Examples may be a washing machine, Music player, ATM, Vending machine, Data Logger, etc. Nowadays, Most of the devices run on the OS (Operating System). So, what is the need for an OS?
- The user needs smarter devices capable of doing multiple jobs in less time.
- Supports enough memory to run multiple applications.
- Reusable and Stable with more software updates.
- Suitable for integrated voice control and wireless applications such as WiFi, ZigBee, Ethernet, Bluetooth, NFC, and GSM protocols.
Some of the examples of an embedded system are smartphones, washing machines, Air conditioners, kiosks, etc.
Embedded System Applications
They are present everywhere. Doesn’t believe it? Most of people use without knowing them. The beauty is that it is invisible to the user, delivering a wealth of experience. Here are some of the applications of the embedded system which use a powerful operating system (OS) like Embedded Linux, Android, and Windows CE.
Most of the products in your home are embedded which gives excellent experience and comfort to the user. Examples are Home Security system, Setup Box, Digital Camera, Television, Microwave Oven, Air cooler, Refrigerator, and much more.
They are also into commercial enterprise solutions for inter-networking business clients. Examples are Router, Modem, Printer, and Gateways.
The automotive industry is well competing worldwide. Some of the Embedded subsystems in automobiles are Anti-lock Braking System (ABS), Air conditioning control, Ignition control, Airbag control, Rain sensing wipers.
The medical field is a critical one, and the use of embedded systems is a nightmare. The odd design may lead to a disastrous effect on society or an individual. Examples are Blood pressure monitors, Heartbeat monitors, pacemakers, telesupervision and surgery, Scanners, Portable Ventilators.
The recent challenges of embedded systems extended its scope towards automation. Automation is the process of doing a task repetitively. Automation increases machine productivity, reducing development cost and design time. Examples are Industrial machinery and control, Temperature monitoring, 3D printing machines, Robotics, and Industrial Internet of Things.
Aerospace and Defense
Aerospace and Defense is a rugged area where security and performance are most important. To achieve this reliable firmware and embedded software have to be built. Examples are Flight control systems, Actuation, Air and Thermal Management, Engine power, Vehicle turbochargers, Navigation system, Embedded Imaging.
Every complex system in the world can be made based on two ideas, Software and Hardware. To achieve that you have to start building smaller modules and integrate them to create an efficient subsystem. The embedded system can be partitioned into software and hardware components.
The core of any embedded target is the electronic hardware – which resides on a Printed Circuit Board. The embedded development board is divided into five modules. They are Processor, Memory, Input devices, Output devices, and Bus controllers.
Hardware abstraction layer (HAL) is the fundamental resource of any embedded device and choosing a particular component depends on the requirement and specification of the designer. In the global market, there are many variants of hardware produced for different applications. Some of them are:
A Microcontroller is preferred to build small applications with precise calculation. Indeed, they have a limited amount of ram and less reliable. Some of the famous manufacturing companies are Altera, Atmel, Renesas, Infineon, NXP, and much more. Technically, a microcontroller is an intelligent device that computes the task execution time and allocates the memory resources assigned by the user in an efficient manner.
System on Chip (SoC)
SoC comprises a CPU, Peripheral devices (Timers, counters), Communication interfaces (I²C, SPI, UART), and Power Management Circuits on a single IC.
If your application should be more reliable with higher performance, low-cost SoC is the best choice. It supports one or more processor cores.
ASIC means Application Specific Integrated Circuit.
Firstly the chip was designed to use for a particular application and owned by a single company. So no copyrighting of the product is allowed. Secondly, it consumes little power.
You may wonder, these are the most used processors for Audio and video applications. DSP Processors removes the noise and improves signal quality for your DVD player, Music player, and Gaming consoles.
Note: There may be hundreds of Microcontroller/Microprocessor present in the embedded computing system.
Input devices take input from the outside world. Some of the examples of input devices are sensors, switches, photo-diode, optocoupler etc. They accept input from the user and respond accordingly.
The output devices are the indications or results that occur due to input events from outside the microcontroller. Examples of output devices are LCD, Touch screen, LED, Motors, Seven segment displays, Buzzer, Relays, etc.
The bus controller is a communication device that transfers data between the components inside an embedded system. Some of the bus controllers are Serial Buses (I2C, SPI, SMBus etc.), RS232, RS485 and Universal Serial Bus.
To store the data and deal with memory management, memory devices like flash and SD card, EEPROM is required. Some of the memories used in the embedded system are Non-Volatile RAM, Volatile RAM, DRAM (Dynamic Random Access Memory) etc.
Software components are essential building blocks of embedded systems. Embedded software (sometimes called as firmware) written for Device drivers, Operating system, Application Software, Error handling, and debugging software.
Device drivers or Board Support Package (BSP) are the core software components that control a peripheral device and supports connectivity. It is a piece of embedded code written for particular hardware. The peripheral may be I2C, SPI, UART, USB, CAN, GPIO etc. The user has to derive the low-level drivers for the microcontroller or microprocessor using specific control and data registers given in the datasheet. Next to the top of the low-level driver a high-level driver has to be written for the application software. Moreover, Middleware extensions such as FREERTOS, FATFS, LWIP (TCP/IP stack) has to be integrated.
Operating System (OS)
An operating system is a system software that manages resources like memory, I/O (Input-Output) management, etc. In an embedded system, different types of operating systems exist. Some of them are RTOS (Real-time operating systems), VxWorks, RTLinux, Nucleus, µCos, mobile embedded, stand-alone, and network embedded systems.
Top Embedded Programming languages
Most people do not know about programming languages used for embedded systems and the electronics world is changing every day. So, you need to update yourself in this competitive world. Most of the hardware platforms support multiple languages. For ease of development of firmware, it is required to learn Embedded C, C++ and Micro python.
C language is founded by Dennis Ritchie in the year 1972 with an operating system Unix. Embedded C is the most widely used languages for embedded systems due to the following reasons.
- Performance-wise better.
- Easy to use.
- More reliable.
- Directly interacts with the operating system.
- Portable and compatible with any hardware.
- Less over the head and better code optimization.
- Supports Windows and Linux environment.
Embedded C++ is the enhanced programming language with few advantages over C.
- Security wise better than C language.
- Much closer to real-world applications.
- Software development is easy.
- C++ uses the object-oriented paradigm for data abstraction and encapsulation. It also includes features like polymorphism, classes and inheritance.
- Suitable for 3D imaging and graphical applications.
Micro Python is an open-source object-oriented software used for real-time applications. It is human readable and easy to code. The programming APIs use built-in exception and error handling. This language is suitable for developers who are not interested in going through the low-level hardware details. It is useful for data analysis of sensors and devices. The user can write test cases in python to debug the hardware. However, it is entirely in the hands of the developer to choose C, C++, or Python for a given application.
How does an Embedded device work?
Every Embedded computing device may be your computer or mobile has some inputs and corresponding outputs.
Here is an example of how an embedded system works.
- It takes the analog/digital input from the user. Examples are Push-button switch, Keypad, Sensor, Touch Screen.
- Then, it processes the given input. Processing may be calculation or conversion. For example, an ADC (Analog to digital converter) converts a sensor analog input to digital output.
- After converting the analog value to digital output, you need to control using output devices. Examples are Motor, LCD, and Touchscreen.
# Interesting Facts
- Real-time and reactive.
- The system is always ready to accept input, process the input and give the correct
- Low Power consumption, Compact in Size, Low cost.
- Expected to work without human involvement.
- Ability to observe, react, and control the external environment within a deterministic period.
Embedded Software Development Life Cycle
A proper embedded software has to be written to meet the requirement of the customer and to bring high-quality products to the market. To do that in an efficient manner, here are the seven steps to make your Embedded Product.
Step1: Understand the requirements
First of all, you need to know and understand the end-user specifications.
Step 2: Examine
Analyze the components (software and hardware) required to make the product.
Step 3: Design
It is the most critical phase of the development cycle. The developer needs to develop embedded hardware and software individually and integrate both.
Step 4: Develop
The Programmer develops the Prototype using available hardware and software tools to match the customer specifications.
Note: Prototype is the sample version drawn up to test a concept.
Step 5: Test
The developer examines the application by running software test cases to prove the possible potential of the prototype.
Step 6: Deploy
After testing the product, the developer checks the result in a real environment to realize the Proof Of Concept.
Note: Proof Of Concept is a technique used to validate an idea, but it may not be deliverable.
Step 7: Support and Upgrade
Depending on the user requirement, support and upgrade have to be provided to add new features at regular intervals.
Embedded system design should meet the performance and security with added safety. To ace this, the focus must be kept to implement a prototype and integrate futuristic technologies like MQTT, Big data, and cloud computing. Moreover, the user interface has to be taken into account for developing HMI (Human-machine interface) and GUI applications. Importantly, the embedded software has to be optimized for memory and power constrained Microprocessor and Microcontrollers.
Do you want to kick start your career in the embedded world? Doesn’t know where to start? Then, Explore the article on Career in Embedded Systems: Worldwide Opportunities.