AXFS

Description
The Advanced XIP File System is a Linux kernel filesystem driver that enables files to be executed directly from flash or ROM memory rather than being copied into RAM.

This is a new project started by engineers working at Intel. It is intended to be a replacement for Linear XIP CRAMFS. The advantage over existing solutions is that it can provide reduced RAM with less Flash because it is possible to compress only those pages that contribute to RAM savings. It includes tools to identify pages that should be uncompressed. It is Beta quality as of July 2006.

Rationale
This feature is important because XIP is a very common method of conserving RAM on an embedded system.

Project site and contacts
The main project site is at: axfs

Those interested can send an email using the interface at axfs contact and they will be informed when the final version is released.

Documents

 * Poster (in powerpoint) describing AXFS


 * ELC 2006 Presentation on XIP by Jared Hulbert


 * Demystifying Embedded Code Storage: Optimizing for Lower Cost and Higher Performance through Balanced XIP - White paper by Intel comparing different XIP approaches

Specifications
See Kernel XIP Specification R2

Patch
See the sourceforge site.

Utility programs
[other programs, user-space, test, etc. related to this technology??]

How to validate
[put references to test plans, scripts, methods, etc. here]

Sample Results
[Examples of use with measurement of the effects.]

Status
Jared Hulbert of Intel writes (in July 2006):

The filesystem is working well. We optimized an Opie Linux build using cramfs and axfs. The resulting images where 49MB XIP cramfs, XIP axfs used only 39MB, and 34MB for a fully compressed cramfs. We're polishing it up for release hopefully in the next couple weeks. We are also debugging a 2.4 port which we will make available as well.


 * Status: [not started??]
 * (one of: not started, researched, implemented, measured, documented, accepted)
 * Architecture Support:
 * (for each arch, one of: unknown, patches apply, compiles, runs, works, accepted)
 * i386: unknown
 * ARM: unknown
 * PPC: unknown
 * MIPS: unknown
 * SH: unknown

Future Work/Action Items
Here is a list of things that could be worked on for this feature: