Tuesday, August 25, 2009

Embedded Systems - What is it?

Some of the most frequently asked questions these days are:

. How do I learn Embedded Systems?

. If I learn Embedded Systems, will I be assured of a job?

. I know 8051 and C programming. Can I learn Embedded Systems?

. What is an Embedded System?

The last question is in fact one of the most frequently asked questions by students in Engineering colleges and even those who are finishing or have completed graduation. So, let me attempt to answer that first.

I feel that although Embedded Systems 'appears' to be a real hot thing to learn and work on, its either not taught well or not understood well by most educational institutes. I do agree that my definition of Embedded Systems would be different than someone else's. Its like describing an elephant. Elephant has certain features that are present in other animals too. But the set of all the features of an elephant would be an unique set because barring mammoths, we've not known anything else to resemble elephants. So, a set of descriptions can also fully describe something that doesn't have a one line definition.

So, here are my definition(s) of Embedded Systems:

. A combination of hardware components and logic that has been designed to perform some specific task(s). Yes, there can be Embedded Systems that may not have any software component at all. Think of implementing an embedded product using only TTL logic gates or an IC and some more passive components. Desktop calculators for instance.

. A combination of hardware and software components and logic that has been designed to perform some specific task(s). These are the more popular class of Embedded Systems that have some programmable components like Microcontrollers, Microprocessors, DSPs and FPGAs. Think of mobile phones, PDAs, MP3 players.

When I say 'specific tasks' it means that the work to be done by the system is not general purpose. By general purpose (GP) systems we mostly refer to desktop computers, laptops, servers and super computers which can do a lot of general purpose work. For instance run Internet browsers, edit files, show movies, play and record songs, compile and run applications, run IDEs and debuggers. In doing all these we have a GP system that runs an GP Operating System (OS) that allows us to load/install these above applications and then run them. We also have the option of unloading the programs from the system (delete/uninstall applications).

Compare this to a mobile phone that has specific tasks. So, most mobile phones of today can:
- Make and receive GSM calls
- Send and receive text SMS
- Play/record songs in different formats
- Save phone numbers and names and more information in an addressbook
- Show calendar and take/display reminders
- Alarm clock, reminders
- Browse web (using GPRS/WiFi)
- Take/replay pictures/video
- Play FM/AM radio channels
- Run JAVA applications

So, as we can see the list is definitely long but quite small compared to what a GP system can do. In fact the mobile phone of these days look like an assimilation of several other Embedded products like still and video camera, music player, voice recorder, FM/AM receiver and of course a simple GSM/CDMA phone.

So, what we observe that what makes a system qualified as Embedded are the limitations of the functions that we can implement on the system. But then the next question pops up is 'why' should we have limitations at all? What are the limitations imposed on Embedded Systems?

Just compare the size of the largest mobile handset that you have seen with an ordinary desktop PC or for that matter even an laptop. What do you see? For one thing that the laptop or desktop PC is about 20-40 times the size of the mobile in your hand. How about the weight? Mobile handsets would be generally 60-200 gm whereas a laptop is atleast 1.5 kg (the lightest ones). How about power consumption? Your handset will have typically a 3.7V Lithium-ion battery compared to a heavy battery in your laptop. Desktop PCs have external power and they consume about 200-400W of power. A 600VA UPS will be able to power up a desktop for about 20-25 minutes, a laptop battery can at most give 8-10 hours power (the best ones in the market). Now think about your handset. How often you charge it? Once in 2 days, or 3 days or sometimes even 4 days with some good handsets.

So, if you read the previous paragraph three things come to one's mind regarding what typically makes Embedded Systems as they are. They are size, weight and power consumption (
Reminder: This is my way of looking at Embedded Systems. May not match your view always). So just go through the list we saw before: still and video camera, music player, voice recorder, FM/AM receiver and of course a simple GSM/CDMA phone. All are typically compact, light-weight and not that power hungry.

So, what makes them small? For one, the embedded controllers and processors, that are at the heart of such devices, are much smaller compared to desktop/laptop processors. Take the RAM that is used as the main memory in all these products. A single SODIMM RAM card in a desktop is about 5-6 inches long (approx.) and these days easily has 512 MB/1 GB/ 2 GB of memory. Compare this to a mobile phone which will have some thing like 16-256 MB RAM (say) that will fit into few small ICs. Non-volatile storage? Desktops have Hard-disks and typically embedded products have Flash memory which are way smaller compared to Hard-disks. SMPS (Switched Mode Power Supply) that supplies power to the motherboard and peripherals in desktop PCs don't really exist in Embedded systems. The entire power supply circuit of a embedded product would take a few tiny components and fit into few square cm. No fans on processors, at best the embedded processor may have a heat-sink. No CD/DVD player or floppy drives (mostly). Instead of a 15-19" monitors, you have a 2-4 inches LCD panel on a mobile phone. These and more such factors also contribute to low weight and power consumption of the embedded systems as much lesser things are packed into Embedded Systems.
One thing I would like to mention here is that when I compare features or size or weight of various products, I am using generic or general stuff. Please do not take them for granted. It may differ to large extent in some systems that I have not mentioned here.

So, we have kind of covered the Embedded systems that are 'obvious' to us. Things that are complete products and they are small, portable and power efficient. So, how about some more things like intelligent washing machines and microwave ovens that can 'feel' the fabric or 'talk' to the user or handle some other nice function. Those are neither small, nor light or power efficient. But still we mention that they 'have' Embedded Systems. That is because the Embedded part of such systems is only the one that contains the 'intelligence' and 'control' of the appliance. You could add DVD players, car audio systems, TVs, bar code scanners to this list. What you should observe that these systems have much more than the embedded 'intelligence' and 'control' components that make it large and heavy.

A TV would have a CRT/LCD/Plasma/LED screen that one always desires to be large, and hence it is large and heavy and also draws more power. But in that if you consider the size of the embedded component that handles the RF signals from the cable or video input from DVD player, the video and sound output and remote control handler, would not be too big, heavy or power hungry. Same thing for washing machines that have the stepper motor, water heating coils, the cabinet and the washing drum that add to the weight.

So much for this post. Its become much longer that what I initially had in mind. But its still not complete. I will continue in my next post to cover the same topic.

Next post: How to Learn Embedded Systems?