Home
Arroyo

Arroyo is basically Diminuto Phase II. It runs on the same hardware and firmware as Diminuto, an Atmel AT91RM9200-EK Evaluation Kit (EK) Single Board Computer (SBC).

Arroyo/Diminuto with Three "Disk" Drives

Arroyo differs from Diminuto in a few important respects.

  • Where Diminuto has a RAM-resident root file system, Arroyo has a EXT3 journaled root file system that lives on a Secure Digital (SD) card or a USB thumb drive.
  • Where Diminuto is built around the uClibc library which has a reduced memory footprint, Arroyo is built around the full Standard C Library.
  • Where Diminuto depends on the busybox shell, Arroyo incorporates a full bash interpreter.
  • Where Diminuto uses the Buildroot GNU-based tool chain, Arroyo uses a free, pre-built GNU-based tool chain, Sourcery G++ Lite, from CodeSourcery.
  • Where Diminuto is based on the ARM Old Application Binary Interface (OABI), Arroyo is based on the newer ARM Embedded Application Binary Interface (EABI).
  • Where Diminuto lacks tools to manage its storage devices, Arroyo includes the e2fstools file system utilities and the fdisk partitioning tool.

Arroyo is identical to Diminuto in other useful respects.

  • Arroyo runs on the identical hardware and firmware as Diminuto.
  • Arroyo is built using the same Linux server and booted using the same TFTP server as Diminuto.
  • Arroyo uses all open source software just like Diminuto.
  • Arroyo runs the Desperado embedded C++ library and John Sadler's embedded Forth interpreter Ficl just like Diminuto.
  • Arroyo is provisioned identically to Diminuto using the same U-Boot environmental variables which can be saved persistently to flash.

Arroyo comes in two basic pieces: the kernel that is booted via TFTP, and the root file system image that is installed on a Secure Digital (SD) card using a separate Linux server.

  • Here is the bootable Linux 2.6.26.3 image: arroyo-linux-2.6.26.3. This kernel has a single patch applied to the very early boot code (the same patch as required by Diminuto).
  • Here is a compressed EXT2 file system image: arroyo-root.ext2.bz2. It can be easily installed on a SD card and used as a disk on Arroyo.
  • Here is a log of Arroyo booting: arroyo-boot.txt. It displays all of the U-Boot  environment too.
  • Here is a tarball of the patches and utility source code for Arroyo: arroyo-x.y.z.tgz. This includes the patch I made to the kernel, and a makefile that has the commands I used to install the root file system image on the SD card.
  • Desperado is an open source collection of C++ classes implementing design patterns I've found useful in embedded systems. It has been ported to Arroyo.
  • Here is a collection of photographs and screen snapshots of the board and the running system.

If you care to re-build Arroyo (and I encourage students to try this), you will need the following pre-requisites.

  • genext2fs  (which you will run on your host server to build the EXT2 root file system image)
  • bash 3.2
  • busybox1.11.2
  • e2fsprogs 1.41.2
  • fdisk 1.0
  • ficl 4.0.31
  • linux 2.6.26.3
  • parted 1.8.8 (solely for libparted.so which is used by fdisk)
  • strace 4.5.15 (later versions at least up to 4.5.18 are broken for the ARM EABI target)
  • Sourcery G++ Lite   arm-2008q1 (for both the toolchain and the pre-built libraries for the ARM EABI target)
  • Diminuto (Arroyo shares common utilities like getubenv and a shared library with Diminuto, although built with the Arroyo toolchain)
  • Desperado (Arroyo makes use of the coreable utility from Desperado)

and examine closely the Makefile in the Arroyo tarball.

This distribution has the following open issues (that I know and care about, anyway):

  • I tried getting the Java Virtual Machine (JVM) in the Embedded ARM J2RE.from Sun Microsystems working, and it sorta does, partly. But a thread of it throws a SIGILL (Illegal Instruction). Haven't debugged this yet. (I've routinely run the Embedded PowerPC J2RE on a PowerPC-based embedded Linux system; cool stuff!)

Here are blog articles that my alter-ego, Chip Overclock, has written about Arroyo:

Presentation: Implications of Memory Consistency (or Lack of It) Models for Java, C++, and C Developers (more)

Seminar Review: Jack Ganssle, Better Firmware Faster, 2006 (more)

Article: Depending Upon the Kindness of Strangers: Notes on Open Source and Free Software (more)

Article: Vaster than Empires and More Slow: The Dimensions of Scalability (more)

Article: In Praise of do-while (false) (more)

Book Review: Joel Spolsky, Best Software Writing I, Apress, 2005 (more)

Presentation: Robert Austin, Measuring and Managing Performance in Organizations, Dorset House, 1996 (more)

Book Review: Joel Spolsky, Joel on Software, Apress, 2004 (more)

Presentation: James Surowiecki, The Wisdom of Crowds, Doubleday, 2004 (more)

Travelogue: China Journal: Dancing with a Sleeping Giant (more)

Unless otherwise specified, all contents copyright © 1995-2010 by the Digital Aggregates Corp., Arvada Colorado, USA.
Such copyrighted content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 License.