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.
The same is true for rebuilding the kernel. You will need to do this if you add peripheral support or you want the applications to be part of the system flash-memory image. Likewise, you need to rebuild if you want to add or delete features to the Linux runtime. The base system features support for a number of network applications, including SSH, but if you want to drop on something like the Apache web server then be prepared to do some work. In general, you only need to configure your PC to rebuild properly once. From then on it is a matter of running a batch file or make file.
I also had my hands on a RoboStix (see Fig. 3). This is an interesting combination. It provides connections for power and it has its own 8-bit AVR microcontroller. You will need a JTAG emulator and AVR tools if you plan on reprogramming the AVR, but it is very easy to do once you know what you are dealing with and have some AVR expertise. The complete hardware documentation for this and the other Gumstix boards is available online, so the only mystery is how long it will take for you to find what you want.
The more likely route is to use the system as is with the XScale processor telling the AVR how to manage the PWM (pulse width modulation) and other interfaces on the board. Sample code is available online. Again, once you get the AVR management basics down you can concentrate on your application. You do not need to know anything about the AVR to control its interfaces.
Gumming Up The Works
Gumstix modules can be used in production products, although their connectors and hole positions will require custom mounting, host boards, or cases. Still, the results can be extremely compact and the low power requirements lend themselves to mobile applications.
Roboticists will be especially pleased with the selection of products. The Bluetooth support makes the systems ideal for mobile robots. There are a number of robot projects using the modules. Links for these can be found on Gumstix Wiki and forums.
Gumstix is improving the software support, but at this point the initial setup is best handled by someone with some minimal Linux expertise. Otherwise, be prepared for a learning curve of about a week if you’re primarily a hardware jock. Getting familiar with the Gumstix hardware and software is worth the effort if you don’t need a product or project done in a couple weeks.
Bottom line: highly recommended for the technical at heart.
Read next review: Xscale Module Kit Delivers PCI And VGA Support