Introduction to the Gumstix tiny linux computer
nym | 11:54 PM
The Gumstix computer (also see Gumstix.org) is a tiny 200 or 400 Mhz single board computer based on the Intel XScale processors. with Linux Kernel 2.6.0 in flash ram. They have 64 mb of RAM. You can get your Gumstix as a tiny little board, or a 'full fledged' computer. I orded mine with a 128 mb MMC memory card. So what do you get in a tiny package? A 400 mhz Linux box that will run on 3 AAA batteries.My goal is to create a small geoannotating computer. I want a general platform to which I can connect arbitrary sensors and other annotation devices and link them with continuous GPS tracklogs. But first things first.
So how do I talk to it? The first challenge is to connect. The Gumstix comes with the console set to ttyS0,115200n8. I ordered a serial cable with my unit. So I was able to connect to power, connect the serial cable to the Waysmall Computer and to a serial port on my Linux box and login to the Waysmall from minicom with only slight troubles (all of them of my own creation!) From my Linux terminal I started minicom and set parameters:
^A Pset communications parameters to 115200 8N1
^A Tset terminal emulation to ANSI
^A Oselected serial port setup, set hardware flow control to none. This presented a friendly linux prompt!
# uname -a Linux gumstix 2.6.3-rc3 #1 Fri Feb 20 11:10:22 PST 2004 armv5tel unknownThen, following the instructions, I mounted my MMC Card:
mknod /dev/mmcblk0 b 254 1 mkdir /mmc mount -t vfat /dev/mmcblk0 /mmcWithin /mmc was the file root_fs_arm. So I mounted that with the loopback device: mount -t ext2 -o loop /mmc/root_fs_arm /mnt At this point I had a read only file system on / and /mnt. The MMC card contains a reasonably full development environment, while still leaving nearly 60 mb of file system.
# df Filesystem Size Used Available Use% Mounted on /dev/ram0 3.9M 1.8M 1.9M 49% / /dev/mmcblk0 124.7M 66.9M 57.8M 54% /mmc /dev/loop0 66.5M 49.5M 15.1M 77% /mntI decided to test the compiler by writing /mmc/hello.c Create test.c as:
main () { puts("string"); }Sadly that barfed. Now I am pretty sure that it is me, and not gcc, that is at fault! But if you have any ideas, please let me know!
# /mnt/usr/bin/arm-linux-gcc test.c pgd = c22ac000 [00240224] *pgd=a398a011, *pte=a3b2505f, *ppte=a3b2502b PC is at 0x228004 LR is at 0x4c13c pc : [<00228004>] lr : [<0004c13c>] Not tainted sp : 00240000 ip : 00000000 fp : 00000000 r10: 00274bf4 r9 : 00000000 r8 : 00000000 r7 : 00240224 r6 : 002420cc r5 : 00000000 r4 : 002423d0 r3 : 00000047 r2 : 00000000 r1 : 00240224 r0 : 00000000 Flags: nzCv IRQs on FIQs on Mode USER_32 Segment user Control: 397F Table: A22AC000 DAC: 00000015 pgd = c22ac000 [00240224] *pgd=a398a011, *pte=a3b2505f, *ppte=a3b2502b PC is at 0x228004 LR is at 0x4c13c pc : [<00228004>] lr : [<0004c13c>] Not tainted sp : 00240000 ip : 00000000 fp : 00000000 r10: 00274bf4 r9 : 00000000 r8 : 00000000 r7 : 00240224 r6 : 002420cc r5 : 00000000 r4 : 002423d0 r3 : 00000047 r2 : 00000000 r1 : 00240224 r0 : 00000000 Flags: nzCv IRQs on FIQs on Mode USER_32 Segment user Control: 397F Table: A22AC000 DAC: 00000015 arm-linux-gcc: Internal error: Segmentation fault (program cc1) Please submit a full bug report. See for instructions.Rich Gibson is a Perl/Database programmer whose current fascination is creating tools to aid in the acquistion, management, and presentation of information with a geographic component.
More pictures at Rich's Gallery