igbanner.jpg




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 P
set communications parameters to 115200 8N1
^A T
set terminal emulation to ANSI
^A O
selected 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 unknown 
Then, following the instructions, I mounted my MMC Card:
mknod /dev/mmcblk0 b 254 1
mkdir /mmc
mount -t vfat /dev/mmcblk0 /mmc
Within /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% /mnt
I 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