Introduction to Embedded Software: Embedded 101 Course, Part 1.3

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.

Introduction to Embedded Systems (Embedded 101 Course. Part 1.2)

Next, let us have a look at a few examples of embedded software

Example#1: MP3 Players

mp3 player

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.

DeviceFunctions 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.

How to become an Embedded Software Engineer

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
  • Automobiles
  • 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

Recommended Study Materials: Basics of Embedded Systems

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!

Photo of author
Editor
Balaji Gunasekaran
Balaji Gunasekaran is a Senior Software Engineer with a Master of Science degree in Mechatronics and a bachelor’s degree in Electrical and Electronics Engineering. He loves to write about tech and has written more than 300 articles. He has also published the book “Cracking the Embedded Software Engineering Interview”. You can follow him on LinkedIn