Demon wrote: : I am student of computer science. i have good skill of programming in : C/C++. I want to start learning Microcontroller Programming. What is : the pre-requisite to get started and what kind tools (Software and : Hardware) i need to get a start.
I'm glad you didn't say "embedded", there would be no answer to the question since no two people can agree upon the difinition...
Regardless, the answer is : it depends.
Working with micros is WAY different from working with the "big iron" of the high level language world. A run time error results in your code going off into the weeds or doing something that you don't want. You don't have a console, you won't get any warnings and you'll have to use logic to figure out what went wrong. This means you need to know the hardware architecture of the device you are working with. The above means that you're going to have to learn some electronics and your're going to have to learn how a microcontroller works. THAT in turn means you're going to need to learn some assembly on something, it doesn't matter what since the point is to learn low LOW level programming, the syntax differs between the various types of devices but the concepts remain the same.
So in summary you will need to learn about: microcontroller/microprocessor internals (harvard vs. Von Neuman) electronics assembly and micro concepts like pipelining and instruction cycles
The good part is that no matter what you start with, the basic concepts will move from device to device with just minor changes in specifics.
have fun! DLC