This post is an introduction to the world of mobile and embedded software, which is a sub-discipline of software with a bunch of interesting quirks of its own. This introductory post is a first in a series of posts by Mayur Tendulkar on his Gizmos and Geeks blog, and we are reprinting selected posts here with permission.
Unknowingly in our day-to-day life, we use many devices. Right from Microwave Oven/Electric Stove, Mixer/Grinder, Heater/Geyser, Refrigerator, TVs, Calculators, Cameras, Mobile Phones and what not. And surprisingly – all of these are embedded devices 🙂
Welcome to the world of Mobile and Embedded Devices. In this world, we’re going to get introduced to embedded systems and how we can write software applications which will run on these systems. Imagine, having a device at home, which will obey your orders – say, switch off Mains Supply, Switch off Gas Supply OR as soon as I enter – open the garage door!
Yes, we can do it very well, using embedded systems.
An embedded system is a system (hardware + software combo) which is designed to perform a particular task. Unlike our desktops, which can be used for gaming, business analysis, documentation, software development, entertainment or any other task, embedded systems are built to execute a particular function. Just like cameras are used for photography and not for listening to music, while MP3 players are good for listening music & not for taking pictures.
Sometimes, these embedded systems are categorized as:
- Hard Real-Time Systems : In these type of embedded systems, every second is important. If some action needs to be taken at a particular time – then it has to. Example of this system can be controller in atomic station – where, if it doesn’t operate at specified time, there can be a major havoc. Another example can be a pacemaker, which monitors patient data. If it shows data with delay of few seconds, the life of the patient will be at toss.
- Soft Real-Time System : With these types of embedded systems, its totally okay if there is short delay in response – but there should be response. For example, toaster, if there is short delay, perhaps, toast will burn-out, but its okay. We can put another bread into it. But we can’t use Soft-Real Time systems in atomic station or to monitor patient data.
Just like computers, where we need Operating System or software to communicate with the hardware, we need some software which will run on-top of this embedded system and will provide its control to us. Otherwise how it will understand that – I’m at the door and that system needs to open the door. How?
For this reason, we need to program a software which will run and sit on top of this embedded system and will provide communication mechanism between end-user and system.
Hence, building or designing an embedded system mainly involves two parts:
- Designing of a Hardware
- Designing of a Software for that Hardware (which will include Operating System, Drivers, etc…) & sometimes, if required, it also includes building specialized applications which run on these embedded operating systems.
Microsoft provides various technologies, which deals with embedded systems. This includes operating systems like Windows XP Embedded, Windows CE and application development tools/SDKs like .NET Compact Framework and .NET Micro Framework.
In ensuing blog-posts we’ll get to know about these technologies and will cover Windows Mobile development in depth.
Happy Coding 🙂
About the Author – Mayur Tendulkar
Mayur Tendulkar is a student doing his 2nd Year in Electrical Engineering and a Microsoft Student Partner Lead. He likes coding applications (hmm some what), biking, trying out gizmos, doing night-outs… Basically so many things that STUDENTS enjoy. You can follow him on twitter.