I have been doing some web development, and now I want to know further more about programming so, these Hardware Programming stuffs excite me. I could not find a proper place to start to learn this process. So can you provide any better place ? I want to know better about C or C++ to do hardware programming. Is there any place so that I could get knowledge from start ?
Thank you.
There are boards you can get for $10 or less that have things like leds that you can start with getting comfortable programming at that level, then expand that knowledge. I have example programs for a number of sub $100 (usually under $50) boards at github.
The msp430 launchpad is $4.30 for example and the stm32 value line discovery is around $10.
I have not posted arduino examples at github although I have many avr based examples out in the world. The arduino is probably where you will want to spend some time, there is a long list of things you can plug into an arduino board, called “shields” in the arduino jargon. you can do wireless stuff, robotics, gps stuff. They appear to have done a good job creating a user friendly C(/C++?) with api calls environment, etc. sparkfun.com is a good place for all kinds of embedded development/eval boards plus a number of arduino items (not all that is out there of course). ti.com is the home of the msp430 and the stellaris line of ARM cortex-m devices. The eval boards for the stellaris family are jam packed with peripherals that you can learn to program.
If you are not comfortable being this deeply embedded and want to run with an operating system. You are getting into the $100 to $300 range for the system but they are out there, embeddedarm.com and gumstix for example (note the robovero for example is not a full blown linux platform it is closer to the platforms I have described above, microcontroller based).
Things you will want to learn after the basics of just booting the processor would be spi and i2c and other similar, common, interfaces. some controllers have dedicated hardware to do the dirty work for you and some you simply bit bang. Learning to bit bang these is critical as even in your desktop or laptop computer there are i2c interfaces that linux bitbangs on in drivers.
Expect to kill some hardware, either by bricking the board so it cannot boot and is not recoverable, or quite literally “letting the smoke out” of some parts. In short I definitely would not invest $300 or anything like that into a single board/platform for this education. You can buy many $25 boards and trash/destroy most of them while learning. I almost always buy two of whatever the first time just in case. These days I dont usually let the smoke out but have instead bricked a number of boards. When you get into making your own bootloader that is a risk. This would be similar to writing desktop applications and occasionally, accidentally, overwriting an output file, or opening a file that you wanted to read as a open to write and losing the file, that sort of thing, bugs happen.
the msp430 launchpad is so cheap might as well just get one or a few, a very good instruction set, etc. you will probably settle in with the arduino, an arduino uno is not a bad first board, the mbed on the arm side is not bad, you dont have to use their web based thing at all, you can use any compiler you want. Arm dominates the processor market, every second or third thing with an on/off switch (including an increasing number of Intel based laptops) have one or more ARMs in them running something. avr is nowhere near that and wont be, it dominates the hobby market but not the rest of the world, so arm knowledge at some point will greatly benefit you.