Compressed Static File System
Blunk Microsystems' compressed static file system, TargetZFS, is a general
purpose file system for embedded applications. It supports static and
compressed read-only volumes linked into program code as well as compression
of volumes located in read-write storage.
- Royalty free.
- Source code for target file system.
- Reliable, re-entrant embedded file system.
- Provides POSIX and Standard C API (read-only).
- Compression is invisible to applications.
- Supports multiple volumes.
- Supports user configurable, volume level encryption.
- User control over compression level and block size used for compression.
- User can supply own compression library, or use TargetZFS's default one that employs zlib compression.
- Includes sample applications.
Although TargetZFS is general purpose, it is specifically designed to meet four critical needs of embedded developers:
- Serve as a file system for an embedded component, such as TargetGraphics, Blunk's graphics library, or TargetWeb, Blunk's web server.
- Facilitate compression of application programs to be loaded into RAM for execution.
- Compress data in a device without losing read-only file system access to it.
- Reduce data transmission for files that are to be retrieved from a device.
The TargetZFS system includes a PC tool (screen shot below) that is used to create a compressed
image of any PC directory. The resulting read only file system can be made
available to an embedded application in one of two ways: (1) the compressed
image can be converted by the PC tool into the initialization data for a C array
that is compiled as source code and linked with the application, or (2) the
compressed image can be placed into an existing file system on the target and
mounted. In either case the result is that the files formerly on the PC become
available to the embedded application for access through TargetZFS' standard
file system API and are transparently decompressed as they are read.
The PC tool is also capable of decompressing images. Thus, if data is to be retrieved from a target, TargetZFS makes
it easy to compress the data files on the target so that the transfer time will be reduced.
Some embedded modules, such as graphics libraries and web servers, require access to an underlying file
system. Using TargetZFS either by itself, or in combination with one of Blunk's general purpose file
systems, such as TargetXFS, provides
a complete set of solutions for such applications. The TargetZFS part of the solution
provides both for compression and the ability to link a file system in with the application's
code. TargetXFS allows the contents of the file system to be changed
after the device is deployed. Using the two systems in combination allows compressed
data to be stored in a general purpose file system and changed after deployment.
In particular, for graphics libraries the fonts and images and for embedded web
servers the HTML source files are usually static and significant compression can be expected
from TargetZFS. If there is no need to dynamically change the component's
source files, TargetZFS alone can provide a file system for the graphics library and/or the web server. If
dynamic updates of files are needed, the files can be stored in a general purpose
file system either as individual files or after having been packaged into
compressed images using TargetZFS.
Also, many embedded devices have ROM resident boot code that loads the main
application program into RAM where it is then executed, typically so that it
benefits from higher speed memory. Compression of the memory footprint of an
application program is generally very dramatic and TargetZFS provides a
straight-forward approach to achieving compression with minimal programming