was wondering – if knowing The Linux way of life or the Linux architecture, would give a better frame of mind for programming on embedded devices especially when they have some kind of OS in them.
Just want to be sure that I did not miss a major thing 🙂
Note:
I come from a windows background, can program in C and C++.
Passionate and finally want to get started into Embedded programming. I would like to start by doing typical hobbyists project at home.
It would be nice if anyone would also comment on BeagleBoard as a starting point for me.
Yes and no. Mostly yes.
Lundin correctly described the “two worlds of embedded” (although the border between them is very fuzzy).
If you’re writing for “higher embedded”, like Android, or other devices that run Linux, then definitely expert knowledge of Linux will be of much help. You still need to know some “bare bones” and don’t get scared when you see the likes of
&=~operator in C, but knowing Linux – the Linux of the old, where you configured stuff by editing files in/etc, where you compiled your own kernels for everyday use, where you would build software from tarballs, that’s what helps. Knowing modern Linux – Gnome, gconf-editor, Synaptic and the likes will not be of much help.Then next, if you’re programming devices without OS, in the middle area – fast and strong enough to run C programs, but not the OS, you still need Linux. Because crosscompile. You don’t need actual Linux. Cygwin is okay for that. MinGW may suffice. Still, you will probably need to be able to build your own crosscompiler (based on GCC), linker, debugger, make tools, and the rest of “backbone” of the IDE. Unless your chip supplier is awesome and provides a complete toolchain with IDE.
Only when you’re into tiny processors, you don’t need Linux. Stuff like car alarm remote, christmas lights blinker, car tire pressure sensor, battery level monitor – stuff that can have 16 bytes RAM, 1KB EEPROM, and the rest of CPU to match, you will need to use an IDE that works with this CPU, no OS, no C compiler, nothing remotely close to Linux – the IDE will most likely be Windows based.