Gumstix has created an extensive line of Xscale-based processor and peripheral modules that can be used to create systems as compact as the processor module (under 1 by 1 by 4 inches). Depending upon the combination, its stacking architecture can utilize up to three boards in addition to the processor board.
The Gumstix line includes a range of processor modules, starting with the Connex 200 (see Fig. 1) which includes a 200-MHz Xscale PXA255 processor, 16 Mytes of flash memory, and 64 Mbyytes of RAM. I recommend more flash unless you plan on using a network connection for storage or a flash memory plug-in card that is found on a number of expansion cards. The base unit is enough to get Linux running with some space left over in flash, but not much. Buy accordingly.
The Connex boards have two connectors, one on each side of the board. This allows two expansion modules to be plugged in. Likewise, the board could be plugged into a custom host board. As with most processor modules, Gumstix does not include peripheral connectors on the module. In fact, you need to supply power through the connectors, so at least one expansion module is required. I used one of the low-cost WaySmall STUART boards that includes a power connection and a pair of serial connections. The pair of boards fit inside a WaySmall plastic case that is about half an inch thick.
Getting started was relatively simple. Linux is installed on the processor module along with UBoot, a flash boot loader. The serial terminal interface is typical Linux with the usual collection of command line applications limited only by memory space. The link can be used for interaction, downloads, and application development. It allows you to reach the first plateau in less than an hour where you can run built-in applications and explore the basic parts of the system. Still, a serial interface is somewhat slow unless scripting is what is needed for your application.
The boards arrive without software for your PC, so you need to download development tools from the Internet. In general, there are two tracks for system-level development. The first is to rebuild Linux for your needs. If you have not done this before, then plan on at least a month to get comfortable with building and debugging. The other option that most people will take is to use the pre-built systems and upgrade using this path. Applications and data can be placed in flash memory that gets mounted after the system starts up.
This is one reason I recommend that development work utilize something like the netMMC peripheral module (see Fig. 2). It also has an MMC flash memory connector on it. I connected the Gumstix system to my network server using built-in NFS support. This approach significantly reduces application development time since cross compiled applications created with the open-source gcc compiler can be instantly available via the network. The gdb debugger’s network support also provides remote debugging.
I was able to set up the Eclipse development environment using CDT (C/C++ Development Tool) and gcc/gdb. Still, you need to download and configure Eclipse and gcc yourself. There is no packaged system from Gumstix. The combination works under Windows, Linux, and any other systems that use the GNU toolchain.
I was able to get this configuration up and running in an afternoon, but I have experience with Eclipse, gcc, Linux, and NFS. The job is not difficult and you can find all the details spread through the Gumstix Wiki support website. Just be patient if you have questions. The answers are there.