Possible Duplicate:
How to become an embedded software developer?

I am really a new bie and have some idea about embedded C. I want to program embedded devices using my computer and even want to program some of the computer peripheral. I have got some basics of embedded systems but dont know where to start from? Which platform to use? How to understand the mechanism? Do i need to know all about electronics before putting my hand into embedded world. Please help I have too many questions and need a way. Links to relevant articles are appreciated.

  • \$\begingroup\$ Haven't we had questions like this before? \$\endgroup\$
    – stevenvh
    May 28 '12 at 9:13
  • \$\begingroup\$ @stevenvh yes we did but the answers given below are really great. Such answers were not there before :) \$\endgroup\$ May 29 '12 at 11:56

I still think programming on "bare metal" is the best way to get involved in the embedded world. IMHO, running on top of a platform like Android doesn't give you a real taste of embedded programming.

Although there are a lot of 8-bit microcontrollers out there, the future is 32-bit. I happen to like the PIC32 series from Microchip. You can get a complete development board from SparkFun for $40. You don't need to buy anything else to start with, since there is a bootloader built-in. You can also use one of Microchip's programmers like the PICKit 3.

enter image description here

This board uses the popular PIC32MX795, which has 512K flash and 128K of RAM, so you won't be outgrowing it any time soon. There are tons of free libraries to make programming the peripherals easier.

Microchip has a free IDE and compiler that runs on Windows, Linux, and Macs. (They also have a paid version, but all that gives you is optimzations to produce smaller code. You don't need that for hobbyist use.)


The word embedded means different things to different people. Basically it means any computer sitting inside a device, running one specific application. But as always, the boundaries are blurred, and I'm sure people will disagree with my description.

An embedded MCU or CPU can range in performance from a tiny 8-bit chip with 6 pins, up to very high performance 64-bit CPUs running at very high speeds with external RAM, internet connectivity and colour touch screens.

Getting started

Fortunately, if you want to get started in embedded programming on an 8-bit MCU, you really need to know almost nothing about electronics. If you can wire up LEDs, then you can wire up a microcontroller.

The real difficulty is choosing a microcontroller to start with. There are probably hundreds of families of devices, made by tens of companies.

Since you are very new to the subject, I would recommend starting with something like the Arduino.


Arduino is a popular open-source single-board microcontroller designed to make the process of using electronics in multidisciplinary projects more accessible. You can program them in a language very similar to C. They are very easy to get into, even for non-programmers. The Arduino will cover you for almost any project you want to start with.

Moving on

At some point, you'll decide that the Arduino doesn't meet your needs. Perhaps it's too big, or not powerful enough. Probably by that time, you'll know more about the embedded world to know what to do next, or you'll know more about what you want to learn to know what kind of question to ask.


This is good question. It worth revisiting every few years, as the landscape changes. I recently tried to learn ARM from scratch. Got to the point when Microsoft Studio 11 (as you saying using my own computer) was able to produce compileable ARM asm from plain C. Did not yet got to JTAG debugger. The goal was to have whole toolchain completely free without using too much non-Windows or open source software.

The problem this years is that everything is a platform. There is no easy platformless path, say when you can code in Pascal to bare metal. Most of the time you target the very thick layer of existing OS. Like Android or Linux. If you specifically try to choose the most compact platform, say Angstrom, you will find that typical disk image is 3GB. And this is size of smallest platform. It is a shame. Everything is a bloat.

Another bad news, the Microsoft Mobile platform is their largest download ever. Texas Instruments has Datasheet named Software Reference Manual for one recent ARM. The pdf is over 5K pages. Everything worthy learning is badly oversized and becoming obsolete extremely fast.

My suggestion and answer. If you know x86 and more or less can tolerate Windows. Stay there. It may become a good embedded platform. Look at Windows 8 RT for Intel (forget ARM). That what I decided for myself at the moment.

  • \$\begingroup\$ Sounds good but I would like to revisit the time when things were done in order to make gadgets work and understand how they work. Thanks for your valuable suggestion. I would keep in mind. :) \$\endgroup\$ May 29 '12 at 12:03

Not the answer you're looking for? Browse other questions tagged or ask your own question.