From: eLinux.org
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 project was started by engineers working at Intel. Since that the key developers have moved over to Numonyx. AXFS is intended to be a replacement for Linear XIP CRAMFS, and combines features from CRAMFS and SquashFS. 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.
This feature is important because XIP is a very common method of conserving RAM on an embedded system.
Furthermore some boot time reduction can be achieved.
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.
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
Numonyx™ AXFS Technical Documents
Talk Advanced XIP filesystem by Jared Hulbert at the Ottawa Linux Symposium 2008. Paper and video
See Kernel XIP Specification R2
See http://axfs.sourceforge.net/.
There are two utility programs:
[put references to test plans, scripts, methods, etc. here]
No sample results are available yet.
However from studying the documentation and knowing how XIP works, a boot peformance gain can be expected when running from NOR flash. The amount of gain cannot really be qualified because it depends on how often the code is executed. E.g. consider an often executed loop in NOR. The advantage with NOR flash and XIP is that you do not need to load the page (so you save some time). However as NOR is slower there will be a small penalty during every instruction executed from NOR. So if you have a loop that is executed very often the cumulative penalty will exceed the gain from not having to load the page. Of course if you know that this is the case you can exclude this page from XIP.
mkfs.axfs does not support generating two separate images. Therefore in the open source scenario the only way to test this is by putting both the XIP and non-XIP data in NOR.
Alternatively it is possible to put the generated image in NAND. In that case the XIP data is loaded during mounting. Effectively this does not gain much. You only shift the reading from program execution to mounting. Of course there can be a small saving since no in-memory copying is needed. Benchmarks need to be performed to actually quantify the gain.
With the proprietary image builder it seems possible to create two images, one with XIP and one without XIP. This allows for situations where the XIP data is in NOR and the non-XIP data is in NAND. Alternately the XIP data could be in RAM and loaded by the boot loader. It might be possible that this gives some gain (as the boot loader might have less overhead reading a file than linux has). Again this need to be benchmarked.
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.
In august 2008, the project submitted to LKML for the second time. On mid nov 2008, the project svn archive contained patches for 2.4.21 and 2.6.10 to 2.6.27.
Here is a list of things that could be worked on for this feature: