Introduction to the Gumstix tiny linux computer
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 Posted by nym at March 9, 2004 11:54 PM | TrackBack