About Publications Downloads Related Projects Team L4hq.org  
 
Projects
Pistachio
Kickstart
Download
Virtualization
Pre-virtualization
Device Drivers
Multiprocessor
Marzipan
BurnNT
IDL4
Release Notes
Documentation
Persistence
Hazelnut
Download
Getting started
 
Miscellaneous
Mailing lists
Tools
VMwareGateway
Workshops
Google L4Ka.org:
 
 

L4Ka::Pistachio/ARM

page maintained by Harvey Tuch (htuch@cse.unsw.edu.au)

Welcome to the home of the L4Ka::Pistachio kernel for the ARM.

Supported Hardware

The kernel has been developed and tested on the following platforms:
  • PLEB (Intel StrongARM SA-1100)
  • Intel XScale IXP425
  • TI OMAP1510 (ARM925T)

Porting to other ARM-based platforms should be fairly straight forward. The kernel should also run under the SkyEye simulator for the StrongARM using this configuration file.

This is the first public release of the kernel and so testing has been less extensive than on some of the other architectures. It is advised that users of this port check public CVS for the latest update.

Performance

The kernel features fast address-space switching (FASS) as a compile option. We have not subjected the kernel to large scale benchmarks, however we have experimental IPC times using a modified version of the supplied pingpong benchmark, optimised to take advantage of FASS, of approximately 330 cycles each way on inter-address space IPC, and 308 cycles on intra-address space IPC (measured on the PLEB with a 206.4 MHz clock frequency). The corresponding IPC times when FASS is disabled are 11218 and 239 cycles respectively. We anticipate that with the addition of fast-path IPC the inter-address space IPC time on FASS will be around 120-140 cycles. Even without this optimization, context-switching and IPC performance across address spaces, when FASS is used appropriately, improves on any existing ARM implementation of L4 by approximately two orders-of-magnitude.

Further information on FASS can be obtained from the following paper:

Implementation of Fast Address-Space Switching and TLB Sharing on the StrongARM Processor
Adam Wiggins, Harvey Tuch, Volkmar Uhlig, and Gernot Heiser
Proceedings of the Eighth Asia-Pacific Computer Systems Architecture Conference (ACSAC'03), Aizu-Wakamatsu City, Japan, September 23-26, 2003
  [pdf] [ps] [bib]

Building and Booting

We recommend using GCC 3.2 or above and the corresponding binutils to build the kernel and user applications.

To build a bootable kernel, follow the directions to configure and build the kernel, then configure and build the user applications. When this process has finished, the directory contrib/elf-loader/ will contain a binary image called arm-loader.bin.

Load this image into memory with the platform's bootloader and begin execution at the load address.

Missing Features and Known Bugs

The following are known issues with the ARM L4Ka::Pistachio kernel:

  • The kernel is missing the following optimizations (considered future work):
    • LIPC - Currently an LIPC system call takes the IPC path.
    • Fast-path IPC.
    • The performance when transferring StringItems through IPC is non-optimal.
  • SMP is not supported.
  • FPU support is missing.
  • Exceptions other than SWI (documented in the reference manual under syscall emulation exception support) are not delivered to the user. Any exception which cannot be handled by the kernel causes the debugger to be invoked.

   
 
 
 
  Mail to webmaster   © 2000-2008 University of Karlsruhe