Hello Inventors! Welcome back to the course!
In this lesson our focus will be on the brains of our embedded systems which is the “Embedded software”.
This lesson will be all about exploring the answers to the following questions
- What is embedded software and how is it different from other software
- what is its role in an embedded system
- What are the different technologies used to build embedded software
Here is the link to the “video version” of this lesson for those of you who are “visual learners”!
So lets start with the first question.
What is Embedded Software?
A Short definition would be
Embedded software is code that runs on “custom-built special-purpose” hardware which is designed to perform a single well-defined duty.
I hope you have read the previous lesson in this course, and understand what do I mean by “custom-built special purpose hardware” in this definition!
If you haven’t here is the link to the previous lesson.
Next, let us have a look at a few examples of embedded software
Example#1: MP3 Players
Not so long ago, before the domination of smartphones, we had a special class of devices just to play music known as mp3 players. On mp3 players we could upload songs and listen to them all day long through our headphones.
They had a very simple interface with 5 buttons.
- One button to play/pause music(which also acted as a power button while long-pressed),
- 2 buttons to go-to next/previous mp3 song, and
- 2 more buttons to increase/decrease volume.
Compared to general purpose devices like smartphones, the job of mp3 players were very simple, specific and straight forward, which is to play music.
The entire hardware is custom built to serve this specific purpose of playing music!
An MP3 player consists of the following parts
- a flash memory to store the mp3 files containing the audio in digital format,
- a good Digital to Analog convertor (DAC) to convert this digital data from the memory into an analog audio signal,
- which is then then fed into the 3.5mm ear phone jack.
- Then this analog signal is fed to the headphones which plays the music in the memory for us to enjoy.
On an mp3 player, the job of the embedded software is to
- Turn on and off the device,
- play and pause a song, and
- Go to the next and previous songs
Here are a few more examples of embedded devices and the functions performed by the embedded software running on them.
|Device||Functions Performed by Embedded Software|
|in a Sports watch embedded software job includes||* telling Time,|
* getting location via GPS,
* getting the elevation via Altimeter, and
* getting the direction via Magnetometer
|on a Digital Camera the embedded software||* controls various modes like Auto, Manual, etc., |
* controls the shutter action,
* stores the pictures into SD cards, and
* helps you to transfer or share the pics
|on a Washing Machine the embedded software||* performs the steps according to the preset you selected, and |
* turn off the washing machine when the steps are completed.
I hope with these examples you have understood the role of embedded software in embedded systems.
Next let us explore the following question.
How does embedded software differ from regular software?
Software comes in the form of layers. What do I mean by that?
Consider a typical computer
- The actual hardware, made up of the motherboard, CPU and RAM forms the Layer#0.
- On top of that layer we have a layer of code that interacts and controls the hardware directly. This layer consists of the Firmware of your computer’s motherboard and the drivers of the Operating System.
- Then on top of that you have the apps
Some call the firmware and drivers of the operating system as embedded software as they deal with the hardware directly.
We strongly believe that the term “embedded software” must only be used to call the software that runs on “embedded systems”!
We have a set of articles in our website explaining why is that the case. These are shown in the links below.
consider that as reading material to keep you entertained till we release the next lesson!
Next let us explore the technologies used in embedded software development.
Technologies used in embedded software development
There are several types of embedded software and that can be broadly classified into the following types.
- Embedded Bare-metal software
- Embedded Linux Software
- Embedded RTOS software and
- Embedded Networking software
Don’t worry if all the jargon stated sounds scary! We have made another lesson which explains each of the types in detail which is shown below.
So go ahead and finish that video and come back to this lesson!
Coming back to the topic of technologies used in embedded software development, these different types of embedded software need a specific skill set to be an expert in.
Big companies often hire engineers who are experts in one given skill set, while small companies need engineers who can do a little bit of everything!
No matter what type of embedded software you wish to develop, some skills are common for all.
The following are the 7 important technologies you need to learn in order to develop embedded software
- C Programing language
- Microcontrollers and Peripherals
- Operating Systems
- Computer Networking
- Software Engineering
- Debugging Skills
- And , Basics of Electronics
Here at Embeddedinventor.com we like to call these “The 7 Pillars of Embedded Software”!
If you are interested in becoming an Embedded Software Engineer and you are looking for some directions, checkout the article in the link below.
Next lets review the Industries that hire Embedded Software Engineers
Industries that hire Embedded Software Engine
Embedded Software engineers are being employed in several industries like
- Consumer Electronics
- Industry Automation
- Medical Industry
- Aviation and Space Exploration
Again, we have made an entire video explaining the above industries which you can see below.
If you are looking for some books to buy to start learning embedded software, you can find our recommended book in the below link
Alright, so have a look at the recommended videos and articles, hopefully by the time you are done we will be ready with the next part of this series for you!
In the next part, we will learn about the body of embedded systems, i.e. the Embedded Hardware!
Keep inventing and Keep exploring! I will see you in the next lesson!