Do you know 70% of intelligent computing devices are surrounding us? One of the facts is our world will connect to more than 50 billion devices by 2020. Embedded System is also known as an integrated system due to its combination of hardware and software (also known as Firmware). Many of the newbies want to know the working of the embedded system and its development life cycle.
If you are one of them, this beginner’s guide gives you a complete idea of Embedded systems. Before going to know the working, it is important to know the difference between General purpose 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 embedded system and general purpose system. Computing device like a microprocessor has external peripherals (Real-time Clock, USB, Ethernet, WiFi, Bluetooth etc.) connected to it and are visible outside. But an embedded device contains few or all the peripherals inside the module, i.e. SOC (System On Chip). Here are some of the differences I have listed out.
General Purpose Operating system
- Multi-Tasking Environment
- Generic algorithms had been implemented for performing parallel tasks. They are meant for faster processing.
- 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 memory (RAM, ROM) availability.
- Power consumption and Size are not a major design constraint.
- Not real time and reactive in a harsh environment.
Examples: Windows, Linux, Apple.
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 no 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.
Some of the examples of an embedded system are smartphone, washing machine, Air conditioner, refrigerator, kiosk etc.
Embedded Systems are present everywhere. Doesn’t believe? Most of the people use without knowing. The beauty is that it is unseeable to the user, delivering a wealth of experience. Here are some of the applications of the embedded system.
Most of the products in your home are embedded which give excellent experience and comfort to the user. Examples are Home Security system, Setup Box, Digital Camera, Television, Microwave Oven, Air Conditioner, Refrigerator and much more.
They are also into the commercial enterprise solutions for internetworking 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 use of embedded systems is a nightmare. The odd design may lead to a disastrous effect on the society or an individual. Examples are Blood pressure monitors, Heartbeat monitors, pacemakers, telesupervision and surgery, Scanners.
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.
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 has to be built. Examples are Flight control systems, Actuation, Air and Thermal Management, Engine power, Vehicle turbochargers, Navigation system.
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 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 tasks 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 and 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, 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 are the core software components that control a peripheral device. A device driver is a piece of embedded code written for a particular hardware. The peripheral may be LCD, Touchscreen, UART, USB etc.
Operating System (OS)
An operating system is a system software that manages the 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), mobile embedded, stand-alone and network embedded systems.
Favorable Embedded Programming languages
Most people do not know about programming languages used for embedded systems and technology 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, it is required to learn other technologies.
Dennis Ritchie in the year 1972 developed an operating system using C. Embedded C is the most widely used languages for embedded systems.
Why C for Embedded Systems?
- Performance wise better.
- Easy to use.
- More reliable.
- Directly interacts with the hardware.
There is not much difference between C and C++. However, here are some of the extra features included in C++.
Why Embedded C++?
- Security wise better than C.
- Much closer to real-world applications.
- Easy to use.
However, it is entirely in the hands of the developer to choose C or C++ for a given application.
How does an Embedded System work?
Every Embedded computing device may it 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
Need for Product Development Life Cycle
- To meet the requirement of the customer.
- To bring high-quality products to the market.
Here are the seven steps to building an embedded product.
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 the 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 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.
I hope, this beginners guide makes you understand the components of the embedded system and its software development lifecycle.
Do you want to kick start your career in embedded world? Doesn’t know where to start? Then, Explore the article on Career in Embedded Systems: Worldwide Opportunities.