CMX-FFS-THIN is a full-featured, PC compatible file system for embedded
device developers with limited resources available, and wish to add devices
to their products that require a FAT12/16/32 media support.
The code has been highly optimized for both speed and
footprint to allow the developers to extract the most out of their system
with a minimum of effort. Typical usage includes adding a Compact Flash
card or a Multimedia card to a device. The system includes pre-tested
sample drivers for ease of development. The API is standard and easy to
use - sample applications in source code are provided to ensure quick
integration. Hardware reference designs are also available.
Key Features
- FAT12/16/32
- Long FileNames
- ANSI C compliant
- Standard API (fopen(), fread() etc.)
- Highly Scalable
- Reduced Footprint
- Multiple Simultaneous Files Open
- Handles Media Errors
- RTOS Independent
- Fully Integrated with CMX RTOSes, TCP/IP and USB stacks
- Robust - Re-entrant
- Royalty Free Source
- Sample Applications
- Comprehensive Programmer's Guide
Footprint |
|
Typical |
8-bit |
16-bit |
Values |
Code Data Stack |
Code Data Stack |
|
Read Only |
<4K <2K <0.5K |
<6K <2K <0.5 |
Read/Write |
<6K <2K <0.5K |
<10K <2K <0.5 |
Complete |
16K <2K <0.5K |
20K <2K <0.5 |
CMX-FFS-THIN is a derivative of the widely used CMX-FFS-FAT system.
CMX-FFS-THIN has been compiled and verified with many development
environments to guarantee the highest possible level of portability.
The User implementation guide contains detailed information for porting
the system. CMX-FFS-THIN is virtually agnostic in regards to operating
systems and is provided with a RAM drive which enables a system to be run
independently of any hardware constraints, such as the availability of a
new hardware hardware interface. Typically, customers have a file system
up and running within hours of receiving the system!
An optional Flash Translation Layer is offered providing a reliable
interface for NAND flash DataFlash. This Translation Layer allows the file
system to manage flash and provides a logical sector interface to the
embedded host. The Flash Translation Layer can support up to 4 Terabytes
for each array, provides 528, 2112 and 4224 byte pages and supports all
standard NAND devices.
CMX-FFS-THIN includes a wealth of build options to enable developers to
build exactly the system they need and no more.
Hardware Design and Implementation
CMX Systems, Inc. has a variety of hardware reference designs available
for different hardware platforms and for different peripheral types. These
designs include 8-bit to 32-bit platforms. For a particular environment
please contact CMX directly.
Application Programmer's Interface
A full suite of API functions is provided. The routines are entirely
standard except that their names have been changed to avoid library
conflicts, i.e., fopen() has become f_open(). These routines allow easy
initialization and management of multiple volumes, directories and long
filenames with complete wild card support.
The complete list of API functions is provided below.
f_getversion() |
f_mkdir() |
f_settimedate() |
f_seek() |
f_initvolume() |
f_chdir() |
f_gettimedate() |
f_tell() |
f_format() |
f_rmdir() |
f_setattr() |
f_eof() |
f_hardformat() |
f_rename() |
f_getattr() |
f_rewind() |
f_getfreespace() |
f_delete() |
f_open() |
f_putc() |
f_setlabel() |
f_filelength() |
f_close() |
f_getc() |
f_getlabel() |
f_findfirst() |
f_write() |
|
f_getcwd() |
f_findnext() |
f_read() |
|
Driver Interface
The interface between the file system and the physical devices attached
is through the driver interface. This interface is simple and
straightforward to implement and is complemented by a set of sample
drivers and detailed documentation.
The functions that must be implemented in any driver are listed below:
GetPhy() |
Called by the file system to get information about the device attached (e.g., number of sectors, FAT type etc.) |
GetStatus() |
Called by the file system to get the current status of the physical device (e.g., card removed, card changed). For fixed devices this function maybe omitted. |
ReadSector() |
Called by the file system to read the specified sector of the attached device. |
WriteSector() |
Called by the file system to write data to the specified sector. |
Also provided is a set of tested sample drivers to make porting as straightforward as possible. These include:
Compact Flash Card |
Supporting True IDE mode/ATA/PC Memory IO mode - with/without interrupts |
MultiMediaCard/SD Card |
SPI mode (either hardware or software driven) and MMC mode |
RAM Drive |
Allows simple creation of a driver in RAM - very useful for initial testing of the system and where full h/w interface is not yet available |
For drivers not listed please contact sales@cmx.com. |
|