|
emFile is a file system for embedded applications
which can be used on any media, for which you can provide basic hardware
access functions. emFile is a high performance library that has been optimised
for minimum memory consumption in RAM and ROM, high speed and versatility.
It is written in ANSI C and can be used on any CPU.
Main Features
- MS-DOS/MS-Windows compatible FAT12, FAT16 and FAT32 support.
- Multiple device driver support. You can use different device drivers
with emFile, which allow you to access different types of hardware with
the file system at the same time.
- Multiple media support. A device driver allows you to access different
medias at the same time.
- OS support. emFile can easily be integrated into any OS. In that way
you can make file operations in a multithreaded environment.
- ANSI C stdio.h like API for user applications. An application using
standard C I/O library can easily be ported to use emFile.
- Very simple device driver structure. emFile device drivers need only
very basic functions for reading and writing blocks. Therefore it is
very simple to support your custom hardware.
- Generic device driver for SmartMedia cards, which can easily be used
with any kind of card reader hardware.
Basic Concepts
emFile is organized in different layers:

API Layer
The API layer is the interface between emFile and the user application.
It contains a library of ANSI "C" oriented file functions, such as FS_fopen,
FS_fwrite etc. The API layer transfers these calls to the File System
Layer. Currently there is only a FAT File System Layer available for emFile,
but the API layer can deal with different File System Layers at the same
time. So it is possible to use FAT and any other file system at the same
time with emFile.
File System Layer
This layer translates the file operations to logical block operations.
After such a translation, it then calls to the logical block layer with
the corresponding device driver for a device.
Logical Block Layer
Main purpose of the logical block layer is to synchronize accesses
to a device driver and to have an easy interface for the File System Layer.
The logical block layer calls a device driver to make a block operation.
Device Driver
These are the low level routines to access your hardware. The
structure of the device driver is simple to allow easy integration of
your own hardware. emFile has been designed to be compatible with any
kind of hardware. To use specific hardware with emFile, a simple device
driver for that hardware is required. The device driver consists of basic
I/O functions for accessing the hardware and a global table which holds
pointers to these functions.




|