This is the first article of the series dedicated to the world of Embedded Systems.
“Hey Pugs!”, was a slow whisper from Shweta from her cubicle.
“Shweta!!!”, was the only word which came out of Pugs, as he turned around in the aisle.
“What a surprise! After so long! How come you are here?”, came out a burst of statements from Shweta. It was not unexpected, as she has seen Pugs after a long gap of 6+ years, since they have graduated out from the college.
“How … how come you are here?”, stumbled out some words from Pugs.
What “how come”? I work in this office. What about you?
I just joined today, and HR was just taking me around.
Great! I don’t have words to express my feelings seeing you after so long. Do you mind if I take you around, rather?
I don’t have one to mind.
Pugs, you haven’t changed a bit.
You too look the same.
Thus went on, a seemingly unending chat between the duo, while strolling in and around the office.
And then, “What are you working on?”, asked Pugs.
Wow! Where do you embed the systems into?
Are you joking?
Not really. I have been majorly working in the desktop world. Heard about this and other related jargons. But not really very clear about what really it is all about so called “Embedded Systems”. So, could you please teach me?
That was surely a joke. I remember our college days, how I used to learn from you.
So what? Knowledge and Learning knows no gender, time, and place. Anyone can teach. Anyone can learn. Whenever they want. Wherever they want. So, you are my Embedded Systems mentor.
Okay, dude – as you wish – you haven’t stopped giving gyaan. So, as such, any hardware system which is intended to do a specific task, or a specific set of tasks(, with some software embedded in there) can be called as an Embedded System.
You mean to say my hand watch, cafeteria’s micro wave oven, this printer, etc are all embedded systems, as they are meant to do their pre-designated specific tasks.
In a way, yes. Also, typically when we refer to something as an embedded system, it implies that it has some kind of software embedded in there as well.
Hmmm! And that is where the name “Embedded Systems” comes from. So, if it is purely hardware like the watch, then we may not call it an embedded system, right?
Traditionally yes. But nowadays the line has become so thin, that even a system seemingly to be a pure hardware system, has some software (embedded) in it, in some form or the other. For example, your watch itself is not a pure hardware – it has enough software to say, sync it with your mobile.
I see. So, what about the mobile phones? Can we call them embedded systems? They have both hardware and software. But they are not meant for any specific tasks. They are like a desktop only.
In its initial evolution, a mobile definitely used to fit in the above mentioned definition of an embedded system – hardware plus software meant for specific task, as it was specifically meant for telecommunication only. But as the world of such embedded systems evolved, the definition also evolved to encompass a wider variety.
And with this new definition, can mobile phones be still called embedded systems?
I know. In this expanded definition, any hardware plus software system which needs to operate under constraints of limited resources is called an embedded system.
Correct. Now, how do you know this?
I keep reading many articles around. But now I have a doubt. Nowadays, we see that even such constraints are possibly going away with embedded systems having huge memories, powerful processors, etc, comparable to the desktop world. So, should they be still called embedded systems?
Even with those, don’t forget that, at the least, the constraint of miniaturization is day by day increasing only. Hence, this current definition should be good enough for at least some more time to come.
That seems reasonable. Now, when you say all embedded systems have some kind of software in it, I assume it need not be an operating system based one, right?
Yes. In fact, it can’t be. As many such systems have very limited memory and storage, not enough for an OS. And that is where, all embedded systems can be broadly classified into two categories:
- Baremetal Software based, i.e. the ones without the Operating System
- Operating System based, i.e. the ones with the Operating System whether RTOS, or a full-fledged one
RTOS meaning Real Time Operating System, right?
What is then this so called “Firmware”?
The baremetal software, i.e. the software in the OS-less systems is often referred to as “Firmware”.
Oh I see! So much for that jargon. You have just de-jargonified it for me. No thanks to friends.
Good to hear that.
Can you also give me an overview of the software development process in these two categories of embedded systems – with and without OS?
Sure. But not now. I need to finish some of my work. How about discussing that over a cup of coffee?