Home Price & Ordering Technical Support The Blunk Difference Contact Us

TargetFFS™

Embedded Flash File Systems

Features

Summary of Features:

  • A reliable, re-entrant file system with a full POSIX and ANSI C compliant application program interface. Use of flash media for the backing store is invisible to the application layer.

  • Supports dynamic creation and deletion of files, directories, and links with full read and write capability. Not a static ROM-image file system.

  • Implements wear-leveling to prolong life of the flash media. Erase cycles are spread evenly across all erasable blocks. The wear count is maintained starting with the first time a flash volume is formatted. The current wear count is available to applications via the vstat() call.

  • Detects bad NAND blocks and performs bad block recovery without user intervention. After detection, bad blocks are neither written to nor erased.

  • File system integrity is guaranteed across unexpected shutdowns. Only data written since the last synchronizing operation (fclose(), fflush(), etc.) can be lost. Closed files, directory structures, and files open for reading are never at risk.

  • "Thin" driver layer for maximum ease in porting to new platforms. The driver performs only the basic operations that flash devices support: read page, write page, erase block, etc. The driver is stateless. Sample drivers are provided for several chips and these are easily ported to new devices.

  • Optimized seeks: fseekmark() and lseekmark() routines bookmark a file offset for faster seek performance, useful for no-glitch user interface requirements in MP3 players.

  • Reduced footprint. Special purpose memory manager reduces the amount of memory required for file names, enabling applications that have a small memory budget and require many files.

  • MLC NOR flash support: New algorithms for Multi-Level Cell (MLC) parts.

  • Allows concurrent use of multiple volumes. Flash volumes can be permanently installed at startup, or added and deleted as removable devices come and go. Volume size is unlimited. A single volume can be implemented using multiple flash devices.

  • Supports the POSIX "self", "group", and "other" file access protections, allowing applications to restrict some operations to privileged tasks. The file system calls FsGetId(), implemented by the application, to get the running task’s user and group IDs.

  • UTF-8 support allows non-ASCII file names, a key requirement for the Asian handset market. UTF-8 file name support can be enabled as a compile-time option.

  • Includes fast and efficient error correction code (ECC) routines when supporting NAND flash devices. Detects up to 8 bit errors and corrects up to 4 bit errors. Hardware-based ECC can be used if available.

  • Optimized for fast mounts.

  • Per-task current working directories. The current working directory (CWD) is specified by two 32-bit variables. TargetFFS calls two application functions to read and write the CWD state variables. If a real time operating system is used and these variables are accessed in a task-specific way, each task has its own CWD.

  • Supports creation of special fixed length files using creatn() for reduced file system overhead and higher write performance.

  • Garbage collection is performed to ensure minimal use of RAM for file system control information. Uses internal memory manager for storing file names, reducing the RAM footprint when the average name length is much less than FILENAME_MAX. Recycle operations, which convert dirty sectors to free sectors, may be performed in the background by calling vclean() from a low priority task.

  • Allows a number of flash sectors to be reserved, producing an early volume full indication. Free reserved sectors are immediately exchanged for dirty application sectors. When combined with background recycling, this boosts file system responsiveness for user interface applications, even when the volume is full or nearly full.

  • Provides fflush() and sync() for application control of file system synchronization. Supports atomic file updates using vclean() to convert dirty sectors to free and vstat() to determine the number of available free sectors before the next recycle is required.

  • Shipped with five sample applications: a binary search application, a power-loss recovery test, a shell that supports "cd", "ls", "mkdir", "pwd", etc, and two applications that test assorted file system calls. The shell may be extended with user commands.

  • Source code is 100% ANSI C and has been tested using the gcc and ANSI C compilers from ARM, Diab Data, Metrowerks, and WindRiver.

  • Developed using TargetOSTM, Blunk Microsystems' full-featured royalty-free real time operating system. Easily ported to other operating systems and to polling environments that do not use a kernel.

  • Royalty-free. Includes source code, User's Manual, sample applications, and one year of technical support.

    Porting document (PDF)
    This document gives details on how you can port TargetFFS into your OS environment.