Embedded Systems – Introduction and Course structure

We are going to begin our journey into understanding embedded systems with an introduction to the field. It is an exciting field, especially if you heard about it through a deep love for robotics. But as we will see in this introductory article, there is so much more to it.

What are embedded systems?

Embedded systems are electronic systems designed with special software and hardware to achieve a special purpose. In short, anything that is capable of computing data for a special purpose is an embedded system. By conventional means, your PC and your smartphone are not embedded systems. But the individual components like the Bluetooth module in your phone or the graphic card in your PC are embedded systems. A very common question that arises out of this classification is:

Why are computers and smartphones not considered as embedded systems?

There are many differentiating opinions on this and even I was confused with the conventional textbook classification. The computer that I am using to write this article on is generally defined as a general-purpose computer. By the same token, smartphones are, by and large, considered to be general purpose computers as well. On the other hand, we can use computers for specific purposes too (like a cashier machine), and they can be a part of a larger system.

I found the best answer to my quandary in a blog by Michael Barr, an author of three books on embedded systems who was also the editor-in-chief of the Embedded Systems Design magazine. He is of the opinion that the consumer market is witnessing a blurring in question to the difference between embedded systems and general purpose computers. Moreover, he believes that smartphones have grown to capture the gray area between embedded systems and general purpose computers. He cites the example of the iPhone to demonstrate how resource intensive programming is required to get the best out of the hardware to perform general functions. In conclusion, he is of the opinion that it is okay to classify the smartphone as either, a complex embedded system or a resource-constrained computer. I believe that we can extend the same choice to modern computers as well, depending on how their configuration.

What are the applications of an embedded system?

Embedded systems see applications ranging from your bedroom alarm clock to satellites. Health related devices, wearables, everything that has the word ‘smart’ in their names, drones, automobiles, industrial automation, warehouse automation (machines amazon uses to pack your virtually shopped goodies), and heck even the self lacing shoes from Nike utilize specific embedded systems to work.

What are the industries requirements to be an embedded systems engineer?

The complexity of designing an embedded system depends on a lot of factors, as you’ll experience through the duration of this course. An embedded systems engineer designs the hardware system with the design complexities in mind and writes the code necessary for the working of that system.

Take a look at a couple of job listings from LinkedIn.

Typical job requirement of an Embedded System Developer (Fresher)
Embedded systems typical job requiement
Typical job requirement of an Embedded System Developer (2-3 years of experience)

We will learn all of the above things and some more in this course with practical hands-on experience.

Before starting, it is essential to know the difference between microprocessors, microcontrollers, Arduino and Raspberry Pi.

  • Microprocessor : A microprocessor (or uP) just processes and needs a set of external peripherals like RAM, ROM, serial ports. It uses its pins to connect to these external peripherals. It can offer a higher level of flexibility while designing an embedded system as you can choose your own configurations.
  • Microcontroller : A microcontroller (or uC) has most of the peripherals like RAM, ROM, analog and digital pins in it. You can also extend its functionality if required. They are cheaper and easier to use.
  • Arduino : It is an open source platform made for hobbyists and early learners. Many development boards are designed using this platform. These development boards are basically circuits comprising a microcontroller that can be programmed. And input and output peripherals that allow the user to interact with the outside world.
  • Raspberry Pi : It is a development board with an STM32 processor. You can use it with a monitor, keyboard and mouse and perform basic functions like sending an email etc. Or you can use to to make a robot.

What is the structure of this course?

To understand all the core principles of embedded systems we have a three-part course designed. We are going to start off with the popular Arduino Uno which houses an 8-bit ATmega328. (Check out the course on Arduino Uno here).

The Arduino is a great place to start because you can start making projects right away with really simple coding and see your code interact with the hardware. Additionally, you can gradually step up your projects game while learning basic concepts like ADC, PWM outputs etc.

We will then move onto the 8051 where you will learn all the basics of designing a standalone embedded system from scratch. You will learn interfacing peripherals, power management and get your hands dirty with a lot of coding.

Eventually, in the third and final part of this course we will progress to the Raspberry Pi, which will allow us to work on really powerful 32-bit ARMv7 processors.

What are you going to learn?

In this sub-course we are going to work with Intel’s microcontroller 8051, 80C51 to be precise. Here are all the things you will learn during this course.

  • Interfacing of common peripherals
  • Communication protocols
  • Controlling peripherals
  • C – The dominant language among embedded systems
  • Simulation of an embedded system using Keil
  • Source control using online repositories
  • Creating your own Real Time Operating System (RTOS)

Leave a Reply