The SheevaPlug is a tiny Linux server from Marvell based on an ARM processor. It comes with 512MB RAM and 512MB of SSD. A development kit currently costs $99. It’s about the size of a slightly-oversized wall adaptor.
It comes with an Ethernet port, and two USB ports. One of the USB ports is intended to be used during development and for debugging, the other is for regular applications.
I was surprised to find a rather full-fledged Debian-based Linux distribution (Gentoo) on the device. It has a package manager (“apt”) already installed, so it is simple to install other standard applications. I ventured off into some uncharted territory when I decided to explore using the SheevaPlug to monitor some devices that communicate via a serial interface through USB, however.
Device Drivers …
I learned something about device drivers in this experiment. While USB is a standard interface, to expose your USB device to the OS, you need a piece of software (a driver) that understands the particular chip in the USB device. In my case, it had a Silicon Labs UART. On Mac OSX, Silicon Labs provides a driver that exposes a serial interface as /dev/cu.SLAB_USBtoUART when the USB device is plugged in. On my Intel-based machine, the default OS understands this device and it appears as /dev/ttyUSB0. I was concerned that on the ARM-based SheevaPlug, there may not be the necessary piece of software.
After a number of false starts, I found out that the original OS distribution did not understand this particular UART. However, the Silicon Labs UART is standard enough that there is support in later revs of the kernel. Updating the kernel and re-flashing the device was required, and then my ARM-based SheevaPlug was talking to my USB devices over /dev/ttyUSB0.
For more information about this device look here: http://plugcomputer.org.