Fuelled by insatiable curiosity
How to » Embedded Linux
Most of my electronic gadgets are 'bare-metal systems'. These systems are best suited to using microcontrollers. However, for more demanding projects that require networking, interfacing to PC-based peripherals, or require processing power - but does not warrant a laptop/PC - you are better off with an embedded Linux system.
So far, I have played around with a few embedded Linux devices. This work can be tricky and frustrating, so I've written some entries on past projects I've been through to spare you of some pain! A university project that I have done involved setting up a cross-compilation toolchain, compiling an Angstrom image built from source using OpenEmbedded, then developing a device driver to run on a Beagleboard. I also have dabbled in OpenWrt for modifying a router to stream video back to a PC for my inverted pendulum robot.
As it turns out, off the shelf routers are a particularly cheap way to get into embedded Linux, and would be an attractive option if you wanted to get into embedded Linux with something affordable and your application uses high-level interfaces (USB, ethernet, wifi) only. However, you would be better off working with something like a Beagleboard, Gumstix, Pandaboard, or a Mini2440 if you also wanted to do low-level IO manipulation, as these boards typically use microprocessors that you can readily get the datasheet from (while you can't really do so with the ones on the routers).